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 | ||
| </ | </ | ||