Versionsnummer nicht hart codiert

Antworten
admin@gzbg.de
Beiträge: 11
Registriert: 09 Dez 2013, 17:01

Versionsnummer nicht hart codiert

Beitrag von admin@gzbg.de »

Hallo Zusammen,

gibt es eine Möglichkeit die Versionsnummer des zu installierenden Programms (z.B.: VLC, hier ist Versionsnummer im Programmnamen notwendig) nicht hart codiert im Installationsskript abzulegen? Wenn ja, wie geht das?

Liebe Grüße
Ruben
Benutzeravatar
GEI
Beiträge: 233
Registriert: 12 Feb 2010, 13:00
Wohnort: Braunschweig
Kontaktdaten:

Re: Versionsnummer nicht hart codiert

Beitrag von GEI »

admin@gzbg.de hat geschrieben: gibt es eine Möglichkeit die Versionsnummer des zu installierenden Programms (z.B.: VLC, hier ist Versionsnummer im Programmnamen notwendig) nicht hart codiert im Installationsskript abzulegen? Wenn ja, wie geht das?
ja, habe ich schonmal gemacht.
Prinzipiell ist dann die $SetupFile$ ein fixer Pattern mit einen eingefügten Product-Versionstring vom OPSI-Server.

Code: Alles auswählen

; get ProductMap from actual opsi packet ................................
include_insert "%ScriptDrive%\lib\getproductmap.opsiinc"
...
Set $Setupfile$ = "ownCloud-" + $ProductMap_ProductVersion$ + "-setup.exe"
...
Die Versionsnummer des SW-Produktes habe ich über die Stringlist von GetProductMap geholt. Das hat den Charme, das man nur in der OPSI/control die Anpassungen für die üblichen Aktualisierungen machen muss (Paketversion, SW-Produktversion, ggf. Advice als Comment). Nach dem Download des neuen Setup-Datei ins CLIENTDATA nur noch opsi-makeproduct && opsi-paketmanager ...

Ich habe mir einmal die Mühe gemacht und die Stringlist komplett als "getproductmap.opsiinc" in meiner Library abgelegt, welche dann bei Bedarf mittels include_insert (siehe oben) eingebunden wird.

Code: Alles auswählen

; This sourcecode is partly owned by uib.de  and published under the Terms of the General Public License.
; credits: http://www.opsi.org/en/credits/
;
; written by GEI (Detlef Krummel  opsi@gei.de)
; FILE "%ScriptDrive%\lib\getproductmap.opsiinc"

requiredWinstVersion >="4.11.2"
; for debugging  setLogLevel = 7
DefStringList   $ProductMap_List$
Set                $ProductMap_List$ = getProductMap
setLogLevel = 6

; --------- sample values ---------------------------------------------------------------------------
; 0)id=owncloud                         1)name=ownCloud                 2)description=Win-Cloudclient
; 3)advice=(aktualisiert am 4.9.2014)   4)productversion=1.6.3.3721     5)packageversion=17
; 6)priority=0                          7)installationstate=unknown     8)lastactionrequest=setup
; 9)lastactionresult=successful         10)installedversion=1.6.2.      11)installedpackage=16
;12)installedmodificationtime=          13)actionrequest=setup

DefVar          $ProductMap_Id$
Set             $ProductMap_Id$                         = getValue("id",                        $ProductMap_List$)
DefVar          $ProductMap_Name$
Set             $ProductMap_Name$                       = getValue("name",                      $ProductMap_List$)
DefVar          $ProductMap_Description$
Set             $ProductMap_Description$                = getValue("description",               $ProductMap_List$)
DefVar          $ProductMap_Advice$
Set             $ProductMap_Advice$                     = getValue("advice",                    $ProductMap_List$)
DefVar          $ProductMap_ProductVersion$
Set             $ProductMap_ProductVersion$             = getValue("productversion",            $ProductMap_List$)
DefVar          $ProductMap_PackageVersion$
Set             $ProductMap_PackageVersion$             = getValue("packageversion",            $ProductMap_List$)
DefVar          $ProductMap_Priority$
Set             $ProductMap_Priority$                   = getValue("priority",                  $ProductMap_List$)
DefVar          $ProductMap_InstallationState$
Set             $ProductMap_InstallationState$          = getValue("installationstate",         $ProductMap_List$)
DefVar          $ProductMap_LastActionRequest$
Set             $ProductMap_LastActionRequest$          = getValue("lastactionrequest",         $ProductMap_List$)
DefVar          $ProductMap_LastActionResult$
Set             $ProductMap_LastActionResult$           = getValue("lastactionresult",          $ProductMap_List$)
DefVar          $ProductMap_InstalledVersion$
Set             $ProductMap_InstalledVersion$           = getValue("installedversion",          $ProductMap_List$)
DefVar          $ProductMap_InstalledPackage$
Set             $ProductMap_InstalledPackage$           = getValue("installedpackage",          $ProductMap_List$)
DefVar          $ProductMap_InstalledModificationTime$
Set             $ProductMap_InstalledModificationTime$  = getValue("installedmodificationtime", $ProductMap_List$)
DefVar          $ProductMap_ActionRequest$
Set             $ProductMap_ActionRequest$              = getValue("actionrequest",             $ProductMap_List$)

Ich habe es mal unter wiki/userspace:opsiscript_library#g abgelegt.
Leibniz-Institut für Bildungsmedien | Georg-Eckert-Institut (GEI)
---
'opsi4instituts' = Communityprojekt für wissenschaftliche Einrichtungen
offenes Repository, Update-Notifier
wiki.o4i.org - www.gei.de/institut/direktion/it-service/opsi4instituts
admin@gzbg.de
Beiträge: 11
Registriert: 09 Dez 2013, 17:01

Re: Versionsnummer nicht hart codiert

Beitrag von admin@gzbg.de »

Hallo Detlef,

herzlichen Dank für deine tolle Lösung. Konnte sie prompt einsetzen.

Gottes Segen dir!
Benutzeravatar
GEI
Beiträge: 233
Registriert: 12 Feb 2010, 13:00
Wohnort: Braunschweig
Kontaktdaten:

Re: Versionsnummer nicht hart codiert

Beitrag von GEI »

[quote="admin@gzbg.de"
herzlichen Dank für deine tolle Lösung. Konnte sie prompt einsetzen.
[/quote]

gern geschehen ....
Bitte deinen ersten Beitrag (Anfrage) editieren und
die Betreffzeile mit einem führenden "[Gelöst]" versehen ;)
Leibniz-Institut für Bildungsmedien | Georg-Eckert-Institut (GEI)
---
'opsi4instituts' = Communityprojekt für wissenschaftliche Einrichtungen
offenes Repository, Update-Notifier
wiki.o4i.org - www.gei.de/institut/direktion/it-service/opsi4instituts
Benutzeravatar
GEI
Beiträge: 233
Registriert: 12 Feb 2010, 13:00
Wohnort: Braunschweig
Kontaktdaten:

Re: Versionsnummer nicht hart codiert

Beitrag von GEI »

es geht mittlerweise einfacher ...

Wird das Paket mittels "opsi-package-manager -i" in das Depot installiert, dann ist zu Laufzeit der Installation auf dem Client die Variable %installingProdVersion% belegt ... 5.8.6.7519-002 (Beispiel Evernote)
(Quelle hierfür ist das Feld "[Product] Version" in OPSI/control)
Damit kann innerhalb des Setupsciptes die Variable $Setupfile$ gebildet werden und man braucht bei künftigen Paketupdates das Setup.opsiscript nicht mehr zu ändern ;-)
;sample Evernote_5.8.6.7519.exe
;sample %installingProdVersion% 5.8.6.7519-002 (5.8.6.7519 = ProductVersion, 002 = PackageVersion)
;
DefVar $ProductVersion$
Set $ProductVersion$ = strPart("%installingProdVersion%", "1", calculate(strPos("%installingProdVersion%","-") + "-" + "1" ))
Set $Setupfile$ = "Evernote_" + $ProductVersion$ + ".exe"
@UIB:
schön wär es, wenn irgendwann die Werte einzeln verfügbar wären ... %installingProductVersion%, %installingPackageVersion% :mrgreen:
Leibniz-Institut für Bildungsmedien | Georg-Eckert-Institut (GEI)
---
'opsi4instituts' = Communityprojekt für wissenschaftliche Einrichtungen
offenes Repository, Update-Notifier
wiki.o4i.org - www.gei.de/institut/direktion/it-service/opsi4instituts
Benutzeravatar
SisterOfMercy
Beiträge: 1556
Registriert: 22 Jun 2012, 19:18

Re: Versionsnummer nicht hart codiert

Beitrag von SisterOfMercy »

admin@gzbg.de hat geschrieben:gibt es eine Möglichkeit die Versionsnummer des zu installierenden Programms (z.B.: VLC, hier ist Versionsnummer im Programmnamen notwendig) nicht hart codiert im Installationsskript abzulegen? Wenn ja, wie geht das?
Why don't you rename the setup program?
In my case I would rename it like this:
vlc-2.2.1-win32.exe -> vlc-x86.exe
vlc-2.2.1-win64.exe -> vlc-x64.exe

And just call vlc-x64.exe in the script. When a newer version comes available you would have to copy it into the right directory anyway, so why not rename it while you're at it.
Bitte schreiben Sie Deutsch, when I'm responding in the German-speaking part of the forum!
Antworten