Moinsens,
das kann man pauschal nicht sagen. Meine Erfahrung geht dahin, dass fast jedes Installationsprogramm andere Aufrufparameter hat. Die wiederholen sich zwar, je nach Hersteller des Setup-Programms, aber das zu installierende Programm an sich hat seine Eigenheiten. Dein Script berücksichtigt auch keine Addons, die vielleicht zu installieren sind, keine Registry-Einträge, die gesetzt werden müssen.
Grundsätzlich ist es gut, sich eine Vorlage zu schreiben. Ich persönlich würde aber immer eine Section haben, in welcher ich nur die Parameter ändere. Ich zieh hier mal ein Beispiel (hier: IrfanView) aus einem meiner Scripte:
Code: Alles auswählen
DefVar $MsiId32$
DefVar $UninstallProgram32$
DefVar $MsiId64$
DefVar $UninstallProgram64$
DefVar $LogDir$
DefVar $ProductId$
DefVar $MinimumSpace$
DefVar $InstallDir32$
DefVar $InstallDir64$
DefVar $ExitCode$
DefVar $LicenseRequired$
DefVar $LicenseKey$
DefVar $LicensePool$
DefVar $INST_SystemType$
DefVar $INST_architecture$
DefVar $Version$
DefVar $Inst_Cmd32$
DefVar $Inst_Cmd64$
DefVar $Inst_Prg$
DefVar $Inst_Cmd_Plg$
DefVar $Inst_Prg_Plg$
Set $INST_SystemType$ = GetSystemType
set $INST_architecture$ = GetProductProperty("install_architecture","system specific")
Set $LogDir$ = "%SystemDrive%\tmp"
; ----------------------------------------------------------------
; - Please edit the following values -
; ----------------------------------------------------------------
;$ProductId$ should be the name of the product in opsi
; therefore please: only lower letters, no umlauts,
; no white space use '-' as a seperator
Set $ProductId$ = "irfanview"
;Kein Punkt in der Versionsnummer! 4.30 ist 430, 4.40 ist 440 oder 4.51 ist 451!
Set $Version$ = "430"
Set $MinimumSpace$ = "3 MB"
; the path were we find the product after the installation
Set $InstallDir32$ = "%ProgramFiles32Dir%\IrfanView"
Set $InstallDir64$ = "%ProgramFiles64Dir%\IrfanView"
Set $LicenseRequired$ = "false"
Set $LicensePool$ = "p_" + $ProductId$
Set $Inst_Prg$ = ""+"iview"+$Version$+"_setup.exe"+""
Set $Inst_Cmd32$ = ' /silent /folder="'+$InstallDir32$+'" /desktop=1 /allusers=1 /group=1 /assoc=1'
Set $Inst_Cmd64$ = ' /silent /folder="'+$InstallDir64$+'" /desktop=1 /allusers=1 /group=1 /assoc=1'
Set $Inst_Prg_Plg$ = "irfanview_plugins_"+$Version$+"_setup.exe"
Set $Inst_Cmd_Plg$ = ' /silent'
; ----------------------------------------------------------------
Hier kann man sich immer wieder auf die oben definierten Variablen beziehen und dann den Rest des Scriptes beinahe pauschal für alles schreiben. Besonderheiten von zu kopierenden Modulen, AddOns usw. sind natürlich auch hier nicht berücksichtigt. Wäre aber mit einer If-Schleife abfragbar, wenn ich eine Variable "Set $CopyModul$ = 0" habe. Ist sie 0, wird die Sektion mit dem copy-Befehl ignoriert, ist sie 1, wird sie abgearbeitet - natürlich muss ich sie dann auch definieren.
Und wichtig auch ist IMHO das Errorhandling, was bei einem solchen kurzen Script nicht berücksichtigt ist.
Gruß
Thomas_H