Tested with opsi 4.0.1
requiredWinstVersion >= 4.8.6
questions to: Thomas_H 2011/10/27 10:44
The installation-files can be downloaded from: http://www.baywotch.de/php/download.php//
Please note: This script is a lil bit older, made unter Opsi 3.5 It also functions with the new Opsi 4.0 but is not as well structured like it should.
Last checks:
Thomas_H 2019/05/14 11:36
Tree:
├ baywotch.bmp
├ bw4setup.exe
├ delsub.ins
├ setup.ins
└ uninstall.ins
[Initial] requiredWinstVersion >= "4.8.6" LogLevel=2 ; Log Errors in Logfile but don't abort: ExitOnError=false ; Show syntax errors in the script: ScriptErrorMessages=on ; Dont trace step by step through the script: TraceMode=off ; let started programs run in front of the winst window StayOnTop=false [Aktionen] DefVar $TEMP$ DefVar $ProductId$ DefVar $MinimumSpace$ DefVar $NewExe$ DefVar $InstallDir$ DefVar $ExitCode$ DefVar $LicenseRequired$ DefVar $LicenseKey$ DefVar $LicensePool$ comment "show product picture" ShowBitmap /3 if FileExists ("%scriptpath%\"+"baywotch.bmp") ShowBitmap /3 "%scriptpath%\"+"baywotch.bmp" $ProductId$ endif ; This should be edited set $ProductId$ = "baywotch" set $MinimumSpace$ = "100 MB" set $InstallDir$="%ProgramFilesDir%\BayWotch4\" set $NewExe$=$InstallDir$+"\baywotch.exe" set $LicenseRequired$ = "false" set $LicensePool$ = "p_" + $ProductId$ Set $TEMP$ = EnvVar("TEMP") ; Message at install time: Message "Installing "+$ProductId$+" ..." ; Message at install time: Message "Installing "+$ProductId$+" ..." if not(HasMinimumSpace ("%SYSTEMDRIVE%", $MinimumSpace$)) LogError "Not enough space on %SYSTEMDRIVE%: . "+$MinimumSpace$+" on Drive %SYSTEMDRIVE%: needed for "+$ProductId$+"." isFatalError ; stop process and set installation status to failed else if FileExists("%ScriptPath%\delsub.ins") comment "start uninstall sub section" sub "%ScriptPath%\delsub.ins" endif ;Message at install time: Message "Installing "+$ProductId$+" ..." comment "if license management enabled, reserve license and get license key" if ($LicenseRequired$ = "true") sub_get_licensekey endif comment "start setup program" Winbatch_install sub_check_exitcode comment "test for installation success" if not(FileExists($NewExe$)) logError "Fatal: After Installation "+$NewExe$+" not found" isFatalError endif endif [Winbatch_install] "%SCRIPTPATH%\bw4setup.exe" /sp- /silent /norestart ; $licensekey$ may be inserted into the additional parameters string [sub_get_licensekey] if opsiLicenseManagementEnabled comment "license management is enabled and will be used" comment "try to to get license key" Set $licensekey$ = demandLicenseKey ($licensepool$) ; if there is an assignment of exactly one licensepool to the product the following call is possible: ; Set $licensekey$ = demandLicenseKey ("", $ProductId$) ; if there is an assignment of a license pool to a windows software id, it is possible to use ; DefVar $windowsSoftwareId$ ; $windowsSoftwareId$ = "..." ; Set $licensekey$ = demandLicenseKey ("", "", $windowsSoftwareId$) DefVar $serviceErrorClass$ set $serviceErrorClass$ = getLastServiceErrorClass comment "error class: " + $serviceErrorClass$ if $serviceErrorClass$ = "None" comment "everything fine" comment "we got the license key '" + $licensekey$ + "'" else if $serviceErrorClass$ = "LicenseConfigurationError" LogError "Fatal: license configuration must be corrected" LogError getLastServiceErrorMessage isFatalError else if $serviceErrorClass$ = "LicenseMissingError" LogError "Fatal: required license is not supplied" isFatalError endif endif endif else LogError "Fatal: license required, but license management not enabled" isFatalError endif [sub_check_exitcode] comment "test for installation success via exit code" set $ExitCode$ = getLastExitCode ; informations to exit codes see ; http://msdn.microsoft.com/en-us/library/aa372835(VS.85).aspx ; http://msdn.microsoft.com/en-us/library/aa368542.aspx if ($ExitCode$ = "0") comment "looks good: setup program gives exitcode zero" else comment "Setup program gives a exitcode unequal zero: "+$ExitCode$ if ($ExitCode$ = "1605") comment "ERROR_UNKNOWN_PRODUCT 1605 This action is only valid for products that are currently installed." comment "Uninstall of a not installed product failed - no problem" else if ($ExitCode$ = "1641") comment "looks good: setup program gives exitcode 1641" comment "ERROR_SUCCESS_REBOOT_INITIATED 1641 The installer has initiated a restart. This message is indicative of a success." else if ($ExitCode$ = "3010") comment "looks good: setup program gives exitcode 3010" comment "ERROR_SUCCESS_REBOOT_REQUIRED 3010 A restart is required to complete the install. This message is indicative of a success." else logError "Fatal: Setup program gives an unknown exitcode unequal zero: "+$ExitCode$ isFatalError endif endif endif endif
; copyright (c) uib gmbh (www.uib.de) ; This sourcecode is owned by uib gmbh ; and published under the Terms of the General Public License. ; credits: http://www.opsi.org/credits/ [Actions] requiredWinstVersion >= "4.10.5" DefVar $MsiId$ ;DefVar $UninstallProgram$ DefVar $LogDir$ DefVar $ExitCode$ DefVar $ProductId$ DefVar $InstallDir$ DefVar $LicenseRequired$ DefVar $LicensePool$ Set $LogDir$ = "%SystemDrive%\tmp" ; ---------------------------------------------------------------- ; - Please edit the following values - ; ---------------------------------------------------------------- Set $ProductId$ = "baywotchlite" Set $InstallDir$ = "%ProgramFilesDir%\BayWotch4" Set $LicenseRequired$ = "false" Set $LicensePool$ = "" ; ---------------------------------------------------------------- comment "Show product picture" ShowBitmap "%ScriptPath%\" + $ProductId$ + ".bmp" $ProductId$ Message "Uninstalling " + $ProductId$ + " ..." if FileExists("%ScriptPath%\delsub.ins") comment "Start uninstall sub section" Sub "%ScriptPath%\delsub.ins" endif if $LicenseRequired$ = "true" comment "Licensing required, free license used" Sub_free_license endif [Sub_free_license] if opsiLicenseManagementEnabled comment "License management is enabled and will be used" comment "Trying to free license used for the product" DefVar $result$ Set $result$ = FreeLicense($LicensePool$) ; If there is an assignment of a license pool to ; the product, it is possible to use ; Set $result$ = FreeLicense("", $ProductId$) ; ; If there is an assignment of a license pool to ; a windows software id, it is possible to use ; DefVar $WindowsSoftwareId$ ; $WindowsSoftwareId$ = "..." ; set $result$ = FreeLicense("", "", $WindowsSoftwareId$) else LogError "Error: licensing required, but license management not enabled" isFatalError endif
DefVar $UninstallProgram$ Set $UninstallProgram$ = "%ProgramFilesDir%\BayWotch4\unins000.exe" ;Set $UninstallProgram$ = "C:\Programme\BayWotch4\unins000.exe" Message "Uninstalling " + $ProductId$ + " ..." if FileExists($UninstallProgram$) comment "Uninstall program found, starting uninstall" Winbatch_uninstall sub_check_exitcode endif ; if not (GetRegistryStringValue([HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\" + $MsiId$ + "] DisplayName") = "") ; comment "MSI id " + $MsiId$ + " found in registry, starting msiexec to uninstall" ; Winbatch_uninstall_msi ; sub_check_exitcode ; endif comment "Delete files" Files_uninstall comment "Cleanup registry" Registry_uninstall comment "Delete program shortcuts" LinkFolder_uninstall [Winbatch_uninstall] ; Choose one of the following examples as basis for program uninstall ; ; === Nullsoft Scriptable Install System ================================== ; "$UninstallProgram$" /S ; ; === Inno Setup ========================================================== "$UninstallProgram$" /silent /norestart [Winbatch_uninstall_msi] ;msiexec /x $MsiId$ /qb! REBOOT=ReallySuppress [Files_uninstall] ; Example for recursively deleting the installation directory ; (don't forget the trailing backslash): ; ; delete -sf "$InstallDir$\" [Registry_uninstall] ; Example of deleting a registry key: ; ; deletekey [HKEY_LOCAL_MACHINE\Software\$ProductId$] [LinkFolder_uninstall] ; Example of deleting a folder from AllUsers startmenu: ; ; set_basefolder common_programs ; delete_subfolder $ProductId$ ; ; Example of deleting a shortcut from AllUsers desktop: ; ; set_basefolder common_desktopdirectory ; set_subfolder "" ; delete_element $ProductId$ [Sub_check_exitcode] comment "Test for installation success via exit code" set $ExitCode$ = getLastExitCode ; informations to exit codes see ; http://msdn.microsoft.com/en-us/library/aa372835(VS.85).aspx ; http://msdn.microsoft.com/en-us/library/aa368542.aspx if ($ExitCode$ = "0") comment "Looks good: setup program gives exitcode zero" else comment "Setup program gives a exitcode unequal zero: " + $ExitCode$ if ($ExitCode$ = "1605") comment "ERROR_UNKNOWN_PRODUCT 1605 This action is only valid for products" comment "that are currently installed." comment "Uninstall of a not installed product failed - no problem" else if ($ExitCode$ = "1641") comment "looks good: setup program gives exitcode 1641" comment "ERROR_SUCCESS_REBOOT_INITIATED 1641 The installer has initiated a restart. This message is indicative of a success." else if ($ExitCode$ = "3010") comment "looks good: setup program gives exitcode 3010" comment "ERROR_SUCCESS_REBOOT_REQUIRED 3010 A restart is required to" comment "complete the install. This message is indicative of a success." else logError "Fatal: Setup program gives an unknown exitcode unequal zero: " logError $ExitCode$ isFatalError endif endif endif endif