Seite 1 von 1
Versionsnummer nicht hart codiert
Verfasst: 21 Nov 2014, 16:46
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
Re: Versionsnummer nicht hart codiert
Verfasst: 21 Nov 2014, 21:51
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.
Re: Versionsnummer nicht hart codiert
Verfasst: 01 Dez 2014, 15:54
von admin@gzbg.de
Hallo Detlef,
herzlichen Dank für deine tolle Lösung. Konnte sie prompt einsetzen.
Gottes Segen dir!
Re: Versionsnummer nicht hart codiert
Verfasst: 14 Dez 2014, 20:28
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

Re: Versionsnummer nicht hart codiert
Verfasst: 08 Jul 2015, 13:41
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%

Re: Versionsnummer nicht hart codiert
Verfasst: 11 Jul 2015, 19:25
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.