This shows you the differences between two versions of the page.
Next revision | Previous revision | ||
userspace:msi_to_opsi [2013/07/30 06:53] qx23 created |
userspace:msi_to_opsi [2021/08/23 08:37] (current) |
||
---|---|---|---|
Line 9: | Line 9: | ||
Dieses Powershellscript extrahiert informationen aus MSI Paketen und erstellt automatisiert anhand eines Templates fertige Opsiskripte inkl. control-Datei und der passenden Verzeichnisstruktur um die fertigen Daten auf den Opsiserver kopieren zu können. | Dieses Powershellscript extrahiert informationen aus MSI Paketen und erstellt automatisiert anhand eines Templates fertige Opsiskripte inkl. control-Datei und der passenden Verzeichnisstruktur um die fertigen Daten auf den Opsiserver kopieren zu können. | ||
- | '' | + | Verzeichnisstruktur |
+ | < | ||
+ | Basefolder | ||
+ | └── | ||
+ | ├── Pool | ||
+ | └── Templates | ||
+ | ├── CLIENT_DATA | ||
+ | │ | ||
+ | │ | ||
+ | │ | ||
+ | │ | ||
+ | │ | ||
+ | └── OPSI | ||
+ | └── control | ||
+ | </ | ||
+ | |||
+ | |||
+ | ===== msi_to_opsi.ps1 ===== | ||
< | < | ||
# Version: 0.1 | # Version: 0.1 | ||
Line 199: | Line 217: | ||
} | } | ||
+ | </ | ||
+ | |||
+ | ===== setup.ins ===== | ||
+ | |||
+ | <code winst> | ||
+ | [Actions] | ||
+ | requiredWinstVersion >= " | ||
+ | |||
+ | DefVar $MsiId$ | ||
+ | DefVar $UninstallProgram$ | ||
+ | DefVar $LogDir$ | ||
+ | DefVar $ProductId$ | ||
+ | DefVar $MinimumSpace$ | ||
+ | DefVar $InstallDir$ | ||
+ | DefVar $InstallProg$ | ||
+ | DefVar $ExitCode$ | ||
+ | DefVar $UninstCMD$ | ||
+ | DefVar $InstCMD$ | ||
+ | DefVar $DisplayName$ | ||
+ | DefVar $ProductName$ | ||
+ | |||
+ | Set $LogDir$ = " | ||
+ | |||
+ | ; ---------------------------------------------------------------- | ||
+ | ; - Please edit the following values | ||
+ | ; ---------------------------------------------------------------- | ||
+ | ; | ||
+ | ; therefore please: only lower letters, no umlauts, | ||
+ | ; no white space use ' | ||
+ | Set $ProductId$ | ||
+ | Set $ProductName$ | ||
+ | Set $MinimumSpace$ | ||
+ | |||
+ | Set $InstallDir$ | ||
+ | Set $InstallProg$ | ||
+ | Set $UninstallProgram$ = " | ||
+ | Set $UninstCMD$ = " PSVAR_UNINSTALLPARAMETER" | ||
+ | Set $InstCMD$ = " PSVAR_INSTALLPARAMETER" | ||
+ | Set $MsiId$ = " | ||
+ | |||
+ | ; ---------------------------------------------------------------- | ||
+ | |||
+ | if not(HasMinimumSpace (" | ||
+ | LogError "Not enough space on %SystemDrive%, | ||
+ | isFatalError | ||
+ | ; Stop process and set installation status to failed | ||
+ | else | ||
+ | |||
+ | if FileExists(" | ||
+ | comment "Start uninstall sub section" | ||
+ | Sub " | ||
+ | endif | ||
+ | |||
+ | Message " | ||
+ | Winbatch_install | ||
+ | sub %scriptpath%\check_exitcode\check_msi-exitcode.ins | ||
+ | endif | ||
+ | |||
+ | [Winbatch_install] | ||
+ | msiexec /i $InstallProg$ $InstCMD$ | ||
+ | </ | ||
+ | |||
+ | === uninstall.ins === | ||
+ | |||
+ | <code winst> | ||
+ | [Actions] | ||
+ | requiredWinstVersion >= " | ||
+ | |||
+ | DefVar $MsiId$ | ||
+ | DefVar $UninstallProgram$ | ||
+ | DefVar $LogDir$ | ||
+ | DefVar $ProductId$ | ||
+ | DefVar $MinimumSpace$ | ||
+ | DefVar $InstallDir$ | ||
+ | DefVar $InstallProg$ | ||
+ | DefVar $ExitCode$ | ||
+ | DefVar $UninstCMD$ | ||
+ | DefVar $InstCMD$ | ||
+ | DefVar $DisplayName$ | ||
+ | DefVar $ProductName$ | ||
+ | |||
+ | Set $LogDir$ = " | ||
+ | |||
+ | ; ---------------------------------------------------------------- | ||
+ | ; - Please edit the following values | ||
+ | ; ---------------------------------------------------------------- | ||
+ | ; | ||
+ | ; therefore please: only lower letters, no umlauts, | ||
+ | ; no white space use ' | ||
+ | Set $ProductId$ | ||
+ | Set $ProductName$ | ||
+ | Set $MinimumSpace$ | ||
+ | |||
+ | Set $InstallDir$ | ||
+ | Set $InstallProg$ | ||
+ | Set $UninstallProgram$ = " | ||
+ | Set $UninstCMD$ = " PSVAR_UNINSTALLPARAMETER" | ||
+ | Set $InstCMD$ = " PSVAR_INSTALLPARAMETER" | ||
+ | Set $MsiId$ = " | ||
+ | |||
+ | |||
+ | ; ---------------------------------------------------------------- | ||
+ | |||
+ | Message " | ||
+ | |||
+ | if FileExists(" | ||
+ | comment "Start uninstall sub section" | ||
+ | Sub " | ||
+ | else | ||
+ | Log " | ||
+ | Message " | ||
+ | endif | ||
+ | </ | ||
+ | |||
+ | ===== delsub.ins ===== | ||
+ | |||
+ | <code winst> | ||
+ | Set $DisplayName$ = GetRegistrystringvalue32(" | ||
+ | if not ($DisplayName$ = "" | ||
+ | comment "MSI ID found in Registry, starting uninstall" | ||
+ | Message " | ||
+ | set $UninstallProgram$ = " | ||
+ | Winbatch_Uninstall | ||
+ | sub %scriptpath%\check_exitcode\check_msi-exitcode.ins | ||
+ | else | ||
+ | comment " | ||
+ | endif | ||
+ | |||
+ | Set $DisplayName$ = GetRegistrystringvalue64(" | ||
+ | if not ($DisplayName$ = "" | ||
+ | comment "MSI ID found in Registry, starting uninstall" | ||
+ | Message " | ||
+ | set $UninstallProgram$ = " | ||
+ | Winbatch_Uninstall | ||
+ | sub %scriptpath%\check_exitcode\check_msi-exitcode.ins | ||
+ | else | ||
+ | comment " | ||
+ | endif | ||
+ | |||
+ | [Winbatch_uninstall] | ||
+ | " | ||
+ | </ | ||
+ | |||
+ | ===== control ===== | ||
+ | |||
+ | <code winst> | ||
+ | [Package] | ||
+ | version: PSVAR_PACKAGEVERSION | ||
+ | depends: | ||
+ | incremental: | ||
+ | |||
+ | [Product] | ||
+ | type: localboot | ||
+ | id: PSVAR_PACKAGENAME | ||
+ | name: PSVAR_NAME | ||
+ | description: | ||
+ | advice: | ||
+ | version: PSVAR_PROGRAMMVERSION | ||
+ | priority: PSVAR_PRIORITY | ||
+ | licenseRequired: | ||
+ | productClasses: | ||
+ | setupScript: | ||
+ | uninstallScript: | ||
+ | updateScript: | ||
+ | alwaysScript: | ||
+ | onceScript: | ||
+ | customScript: | ||
+ | userLoginScript: | ||
+ | </ | ||
+ | |||
+ | ===== check_msi-exitcode.ins ===== | ||
+ | <code winst> | ||
+ | ;Den ExitCode des Installers abfragen | ||
+ | set $ExitCode$ = getLastExitCode | ||
+ | |||
+ | ;Loglevel anpassen | ||
+ | setLogLevel = 4 | ||
+ | | ||
+ | ;Den ExitCode auswerten | ||
+ | |||
+ | if ($ExitCode$ = " | ||
+ | | ||
+ | if ($ExitCode$ = " | ||
+ | setLogLevel = 5 | ||
+ | comment " | ||
+ | setLogLevel = 4 | ||
+ | endif | ||
+ | |||
+ | |||
+ | |||
+ | if ($ExitCode$ = " | ||
+ | setLogLevel = 5 | ||
+ | comment " | ||
+ | setLogLevel = 4 | ||
+ | endif | ||
+ | |||
+ | |||
+ | |||
+ | if ($ExitCode$ = " | ||
+ | setLogLevel = 5 | ||
+ | comment " | ||
+ | setLogLevel = 4 | ||
+ | endif | ||
+ | |||
+ | |||
+ | |||
+ | else | ||
+ | |||
+ | |||
+ | |||
+ | if ($ExitCode$ = " | ||
+ | setLogLevel = 5 | ||
+ | logError " | ||
+ | isFatalError | ||
+ | endif | ||
+ | |||
+ | |||
+ | |||
+ | if ($ExitCode$ = " | ||
+ | setLogLevel = 5 | ||
+ | logError " | ||
+ | isFatalError | ||
+ | endif | ||
+ | |||
+ | |||
+ | |||
+ | if ($ExitCode$ = " | ||
+ | setLogLevel = 5 | ||
+ | logError " | ||
+ | isFatalError | ||
+ | endif | ||
+ | |||
+ | |||
+ | |||
+ | if ($ExitCode$ = " | ||
+ | setLogLevel = 5 | ||
+ | logError " | ||
+ | isFatalError | ||
+ | endif | ||
+ | |||
+ | |||
+ | |||
+ | if ($ExitCode$ = " | ||
+ | setLogLevel = 5 | ||
+ | logError " | ||
+ | isFatalError | ||
+ | endif | ||
+ | |||
+ | |||
+ | |||
+ | if ($ExitCode$ = " | ||
+ | setLogLevel = 5 | ||
+ | logError " | ||
+ | isFatalError | ||
+ | endif | ||
+ | |||
+ | |||
+ | |||
+ | if ($ExitCode$ = " | ||
+ | setLogLevel = 5 | ||
+ | logError " | ||
+ | isFatalError | ||
+ | endif | ||
+ | |||
+ | |||
+ | |||
+ | if ($ExitCode$ = " | ||
+ | setLogLevel = 5 | ||
+ | logError " | ||
+ | isFatalError | ||
+ | endif | ||
+ | |||
+ | |||
+ | |||
+ | if ($ExitCode$ = " | ||
+ | setLogLevel = 5 | ||
+ | logError " | ||
+ | isFatalError | ||
+ | endif | ||
+ | |||
+ | |||
+ | |||
+ | if ($ExitCode$ = " | ||
+ | setLogLevel = 5 | ||
+ | logError " | ||
+ | isFatalError | ||
+ | endif | ||
+ | |||
+ | |||
+ | |||
+ | if ($ExitCode$ = " | ||
+ | setLogLevel = 5 | ||
+ | logError " | ||
+ | isFatalError | ||
+ | endif | ||
+ | |||
+ | |||
+ | |||
+ | if ($ExitCode$ = " | ||
+ | setLogLevel = 5 | ||
+ | logError " | ||
+ | isFatalError | ||
+ | endif | ||
+ | |||
+ | |||
+ | |||
+ | if ($ExitCode$ = " | ||
+ | setLogLevel = 5 | ||
+ | logError " | ||
+ | isFatalError | ||
+ | endif | ||
+ | |||
+ | |||
+ | |||
+ | if ($ExitCode$ = " | ||
+ | setLogLevel = 5 | ||
+ | logError " | ||
+ | isFatalError | ||
+ | endif | ||
+ | |||
+ | |||
+ | |||
+ | if ($ExitCode$ = " | ||
+ | setLogLevel = 5 | ||
+ | logError " | ||
+ | isFatalError | ||
+ | endif | ||
+ | |||
+ | |||
+ | |||
+ | if ($ExitCode$ = " | ||
+ | setLogLevel = 5 | ||
+ | logError " | ||
+ | isFatalError | ||
+ | endif | ||
+ | |||
+ | |||
+ | |||
+ | if ($ExitCode$ = " | ||
+ | setLogLevel = 5 | ||
+ | logError " | ||
+ | isFatalError | ||
+ | endif | ||
+ | |||
+ | |||
+ | |||
+ | if ($ExitCode$ = " | ||
+ | setLogLevel = 5 | ||
+ | logError " | ||
+ | isFatalError | ||
+ | endif | ||
+ | |||
+ | |||
+ | |||
+ | if ($ExitCode$ = " | ||
+ | setLogLevel = 5 | ||
+ | logError " | ||
+ | isFatalError | ||
+ | endif | ||
+ | |||
+ | |||
+ | |||
+ | if ($ExitCode$ = " | ||
+ | setLogLevel = 5 | ||
+ | logError " | ||
+ | isFatalError | ||
+ | endif | ||
+ | |||
+ | |||
+ | |||
+ | if ($ExitCode$ = " | ||
+ | setLogLevel = 5 | ||
+ | logError " | ||
+ | isFatalError | ||
+ | endif | ||
+ | |||
+ | |||
+ | |||
+ | if ($ExitCode$ = " | ||
+ | setLogLevel = 5 | ||
+ | logError " | ||
+ | isFatalError | ||
+ | endif | ||
+ | |||
+ | |||
+ | |||
+ | if ($ExitCode$ = " | ||
+ | setLogLevel = 5 | ||
+ | logError " | ||
+ | isFatalError | ||
+ | endif | ||
+ | |||
+ | |||
+ | |||
+ | if ($ExitCode$ = " | ||
+ | setLogLevel = 5 | ||
+ | logError " | ||
+ | isFatalError | ||
+ | endif | ||
+ | |||
+ | |||
+ | |||
+ | if ($ExitCode$ = " | ||
+ | setLogLevel = 5 | ||
+ | logError " | ||
+ | isFatalError | ||
+ | endif | ||
+ | |||
+ | |||
+ | |||
+ | if ($ExitCode$ = " | ||
+ | setLogLevel = 5 | ||
+ | logError " | ||
+ | isFatalError | ||
+ | endif | ||
+ | |||
+ | |||
+ | |||
+ | if ($ExitCode$ = " | ||
+ | setLogLevel = 5 | ||
+ | logError " | ||
+ | isFatalError | ||
+ | endif | ||
+ | |||
+ | |||
+ | |||
+ | if ($ExitCode$ = " | ||
+ | setLogLevel = 5 | ||
+ | logError " | ||
+ | isFatalError | ||
+ | endif | ||
+ | |||
+ | |||
+ | |||
+ | if ($ExitCode$ = " | ||
+ | setLogLevel = 5 | ||
+ | logError " | ||
+ | isFatalError | ||
+ | endif | ||
+ | |||
+ | |||
+ | |||
+ | if ($ExitCode$ = " | ||
+ | setLogLevel = 5 | ||
+ | logError " | ||
+ | isFatalError | ||
+ | endif | ||
+ | |||
+ | |||
+ | |||
+ | if ($ExitCode$ = " | ||
+ | setLogLevel = 5 | ||
+ | logError " | ||
+ | isFatalError | ||
+ | endif | ||
+ | |||
+ | |||
+ | |||
+ | if ($ExitCode$ = " | ||
+ | setLogLevel = 5 | ||
+ | logError " | ||
+ | isFatalError | ||
+ | endif | ||
+ | |||
+ | |||
+ | |||
+ | if ($ExitCode$ = " | ||
+ | setLogLevel = 5 | ||
+ | logError " | ||
+ | isFatalError | ||
+ | endif | ||
+ | |||
+ | |||
+ | |||
+ | if ($ExitCode$ = " | ||
+ | setLogLevel = 5 | ||
+ | logError " | ||
+ | isFatalError | ||
+ | endif | ||
+ | |||
+ | |||
+ | |||
+ | if ($ExitCode$ = " | ||
+ | setLogLevel = 5 | ||
+ | logError " | ||
+ | isFatalError | ||
+ | endif | ||
+ | |||
+ | |||
+ | |||
+ | if ($ExitCode$ = " | ||
+ | setLogLevel = 5 | ||
+ | logError " | ||
+ | isFatalError | ||
+ | endif | ||
+ | |||
+ | |||
+ | |||
+ | if ($ExitCode$ = " | ||
+ | setLogLevel = 5 | ||
+ | logError " | ||
+ | isFatalError | ||
+ | endif | ||
+ | |||
+ | |||
+ | |||
+ | if ($ExitCode$ = " | ||
+ | setLogLevel = 5 | ||
+ | logError " | ||
+ | isFatalError | ||
+ | endif | ||
+ | |||
+ | |||
+ | |||
+ | if ($ExitCode$ = " | ||
+ | setLogLevel = 5 | ||
+ | logError " | ||
+ | isFatalError | ||
+ | endif | ||
+ | |||
+ | |||
+ | |||
+ | if ($ExitCode$ = " | ||
+ | setLogLevel = 5 | ||
+ | logError " | ||
+ | isFatalError | ||
+ | endif | ||
+ | |||
+ | |||
+ | |||
+ | if ($ExitCode$ = " | ||
+ | setLogLevel = 5 | ||
+ | logError " | ||
+ | isFatalError | ||
+ | endif | ||
+ | |||
+ | |||
+ | |||
+ | if ($ExitCode$ = " | ||
+ | setLogLevel = 5 | ||
+ | logError " | ||
+ | isFatalError | ||
+ | endif | ||
+ | |||
+ | |||
+ | |||
+ | if ($ExitCode$ = " | ||
+ | setLogLevel = 5 | ||
+ | logError " | ||
+ | isFatalError | ||
+ | endif | ||
+ | |||
+ | |||
+ | |||
+ | if ($ExitCode$ = " | ||
+ | setLogLevel = 5 | ||
+ | logError " | ||
+ | isFatalError | ||
+ | endif | ||
+ | |||
+ | |||
+ | |||
+ | if ($ExitCode$ = " | ||
+ | setLogLevel = 5 | ||
+ | logError " | ||
+ | isFatalError | ||
+ | endif | ||
+ | |||
+ | |||
+ | |||
+ | if ($ExitCode$ = " | ||
+ | setLogLevel = 5 | ||
+ | logError " | ||
+ | isFatalError | ||
+ | endif | ||
+ | |||
+ | endif | ||
+ | |||
+ | ;Loglevel anpassen | ||
+ | setLogLevel = 6 | ||
</ | </ |