diff --git a/lib/builder-targets.sh b/lib/builder-targets.sh index 02aec6b..15798b3 100644 --- a/lib/builder-targets.sh +++ b/lib/builder-targets.sh @@ -226,7 +226,14 @@ builder_create() { # replace variables from file OPSI/control local release_new=${CREATOR_TAG}${RELEASE} - sed -e "s!VERSION!$VERSION!g" -e "s!RELEASE!${release_new}!g" -e "s!PRIORITY!$PRIORITY!g" -e "s!ADVICE!$ADVICE!g" ${PRODUCT_DIR}/OPSI/control >$INST_DIR/OPSI/control + # sed -e "s!VERSION!$VERSION!g" -e "s!RELEASE!${release_new}!g" -e "s!PRIORITY!$PRIORITY!g" -e "s!ADVICE!$ADVICE!g" ${PRODUCT_DIR}/OPSI/control >$INST_DIR/OPSI/control + write_control_file $INST_DIR/OPSI/control "Package" "version" "${release_new}" + write_control_file $INST_DIR/OPSI/control "Product" "id" "$PN" + write_control_file $INST_DIR/OPSI/control "Product" "name" "$NAME" + write_control_file $INST_DIR/OPSI/control "Product" "description" "$DESCRIPTION" + write_control_file $INST_DIR/OPSI/control "Product" "advice" "$ADVICE" + write_control_file $INST_DIR/OPSI/control "Product" "version" "$VERSION" + write_control_file $INST_DIR/OPSI/control "Product" "priority" "$PRIORITY" # Create changelog based on git - if available if [ -d "${PRODUCT_DIR}/.git" ] ; then diff --git a/lib/builder-utils.sh b/lib/builder-utils.sh index 667c644..ca60235 100644 --- a/lib/builder-utils.sh +++ b/lib/builder-utils.sh @@ -321,3 +321,21 @@ write_ini_file() { done } +################### +# Write control file +# +# Create a ini file containing needed information for package uninstall +# +# Parameter +# file: file to create / modify +# +################### +write_control_file() { + local control_file=$1 + local control_section=$2 + local control_option=$3 + local control_value=$4 + + sed -i -e "/^\[$control_section\]/,/^\[.*\]/ s|^\($control_option[ \t]*:[ \t]*\).*$|\1$control_value|" "$control_file" +} + diff --git a/sample/4.0.2/opsi-template-with-admin/CLIENT_DATA/localsetup/Thumbs.db b/sample/4.0.2/opsi-template-with-admin/CLIENT_DATA/localsetup/Thumbs.db new file mode 100644 index 0000000..513ee4e Binary files /dev/null and b/sample/4.0.2/opsi-template-with-admin/CLIENT_DATA/localsetup/Thumbs.db differ diff --git a/sample/4.0.2/opsi-template-with-admin/CLIENT_DATA/localsetup/delsub.ins b/sample/4.0.2/opsi-template-with-admin/CLIENT_DATA/localsetup/delsub.ins new file mode 100644 index 0000000..734d400 --- /dev/null +++ b/sample/4.0.2/opsi-template-with-admin/CLIENT_DATA/localsetup/delsub.ins @@ -0,0 +1,94 @@ +; 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/ + +DefVar $MsiId$ +Set $MsiId$ = '{XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX}' + +Message "Uninstalling " + $ProductId$ + " ..." + +if FileExists($InstallDir$ + "\uninstall.exe") + 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 ================================================================ +; "$InstallDir$\uninstall.exe" /S +; +; === Inno Setup ======================================================================================== +; "$InstallDir$\uninstall.exe" /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 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 + diff --git a/sample/4.0.2/opsi-template-with-admin/CLIENT_DATA/localsetup/opsi-template.png b/sample/4.0.2/opsi-template-with-admin/CLIENT_DATA/localsetup/opsi-template.png new file mode 100644 index 0000000..0692522 Binary files /dev/null and b/sample/4.0.2/opsi-template-with-admin/CLIENT_DATA/localsetup/opsi-template.png differ diff --git a/sample/4.0.2/opsi-template-with-admin/CLIENT_DATA/localsetup/setup32.ins b/sample/4.0.2/opsi-template-with-admin/CLIENT_DATA/localsetup/setup32.ins new file mode 100644 index 0000000..33f8991 --- /dev/null +++ b/sample/4.0.2/opsi-template-with-admin/CLIENT_DATA/localsetup/setup32.ins @@ -0,0 +1,207 @@ +; Copyright (c) uib gmbh (www.uib.de) +; This sourcecode is owned by uib +; and published under the Terms of the General Public License. +; credits: http://www.opsi.org/credits/ + + +[Actions] +ExitWindows /Reboot +DefVar $LogDir$ +Set $LogDir$ = "%SystemDrive%\tmp" +DefVar $ProductId$ +DefVar $MinimumSpace$ +DefVar $NewExe$ +DefVar $InstallDir$ +DefVar $ExitCode$ +DefVar $LicenseRequired$ +DefVar $LicenseKey$ +DefVar $LicensePool$ + +; ---------------------------------------------------------------- +; - Please edit the following values - +; ---------------------------------------------------------------- +Set $ProductId$ = "opsi-template" +Set $MinimumSpace$ = "1 MB" +Set $InstallDir$ = "%ProgramFilesDir%\" + $ProductId$ +Set $NewExe$ = $InstallDir$ + "\" + $ProductId$ + ".exe" +Set $LicenseRequired$ = "false" +Set $LicensePool$ = "p_" + $ProductId$ +; ---------------------------------------------------------------- + +if not(HasMinimumSpace ("%SystemDrive%", $MinimumSpace$)) + LogError "Not enough space on %SystemDrive%, " + $MinimumSpace$ + " on drive %SystemDrive% needed for " + $ProductId$ + ExitWindows /Reboot + isFatalError + ; Stop process and set installation status to failed +else + comment " this is for testing only ...remove on real scripts" + if "true" = GetProductProperty("test-set-fatal","true") + isFatalError + endif + + comment "Show product picture" + ShowBitmap "%ScriptPath%\" + $ProductId$ + ".png" $ProductId$ + + if FileExists("%ScriptPath%\delsub.ins") + comment "Start uninstall sub section" + Sub "%ScriptPath%\delsub.ins" + endif + + Message "Installing " + $ProductId$ + " ..." + + if not ($LicenseRequired$ = "false") + comment "Licensing required, reserve license and get license key" + Sub_get_licensekey + endif + + comment "Start setup program" + Winbatch_install + Sub_check_exitcode + + comment "Copy files" + Files_install + + comment "Patch Registry" + Registry_install + + comment "Create shortcuts" + LinkFolder_install + +endif + + +[Winbatch_install] +; Choose one of the following examples as basis for your installation +; You can use $LicenseKey$ var to pass a license key to the installer +; +; === Nullsoft Scriptable Install System ================================================================ +; "%ScriptPath%\Setup.exe" /S +; +; === MSI package ======================================================================================= +; msiexec /i "%ScriptPath%\some.msi" /l* "$LogDir$\$ProductId$.install_log.txt" /qb! ALLUSERS=2 REBOOT=ReallySuppress +; +; === InstallShield ===================================================================================== +; Create setup.iss answer file by running: setup.exe /r /f1"c:\setup.iss" +; "%ScriptPath%\setup.exe" /s /sms /f1"%ScriptPath%\setup.iss" /f2"$LogDir$\$ProductId$.install_log.txt" +; +; === Inno Setup ======================================================================================== +; "%ScriptPath%\setup.exe" /sp- /silent /norestart + +[Files_install] +; Example of recursively copying some files into the installation directory: +; +; copy -s "%ScriptPath%\files\*.*" "$InstallDir$" + +[Registry_install] +; Example of setting some values of an registry key: +; +; openkey [HKEY_LOCAL_MACHINE\Software\$ProductId$] +; set "name1" = "some string value" +; set "name2" = REG_DWORD:0001 +; set "name3" = REG_BINARY:00 af 99 cd + +[LinkFolder_install] +; Example of deleting a folder from AllUsers startmenu: +; +; set_basefolder common_programs +; delete_subfolder $ProductId$ +; +; Example of creating an shortcut to the installed exe in AllUsers startmenu: +; +; set_basefolder common_programs +; set_subfolder $ProductId$ +; +; set_link +; name: $ProductId$ +; target: $NewExe$ +; parameters: +; working_dir: $InstallDir$ +; icon_file: +; icon_index: +; end_link +; +; Example of creating an shortcut to the installed exe on AllUsers desktop: +; +; set_basefolder common_desktopdirectory +; set_subfolder "" +; +; set_link +; name: $ProductId$ +; target: $NewExe$ +; parameters: /some_param +; working_dir: $InstallDir$ +; icon_file: $NewExe$ +; icon_index: 2 +; end_link + +[Sub_get_licensekey] +if opsiLicenseManagementEnabled + comment "License management is enabled and will be used" + + comment "Trying to get a 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, we got the license key '" + $LicenseKey$ + "'" + else + if $ServiceErrorClass$ = "LicenseConfigurationError" + LogError "Fatal: license configuration must be corrected" + LogError getLastServiceErrorMessage + ExitWindows /Reboot + isFatalError + else + if $ServiceErrorClass$ = "LicenseMissingError" + LogError "Fatal: required license is not supplied" + ExitWindows /Reboot + isFatalError + endif + endif + endif +else + LogError "Fatal: license required, but license management not enabled" + ExitWindows /Reboot + 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$ + ExitWindows /Reboot + isFatalError + endif + endif + endif +endif + diff --git a/sample/4.0.2/opsi-template-with-admin/CLIENT_DATA/localsetup/uninstall.ins b/sample/4.0.2/opsi-template-with-admin/CLIENT_DATA/localsetup/uninstall.ins new file mode 100644 index 0000000..710ed76 --- /dev/null +++ b/sample/4.0.2/opsi-template-with-admin/CLIENT_DATA/localsetup/uninstall.ins @@ -0,0 +1,74 @@ +; 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/ + +[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$ +Set $TEMP$ = EnvVar("TEMP") +DefVar $LogDir$ +Set $LogDir$ = "%SystemDrive%\tmp" +DefVar $ExitCode$ +DefVar $ProductId$ +DefVar $InstallDir$ +DefVar $LicenseRequired$ +DefVar $LicensePool$ + +; ---------------------------------------------------------------- +; - Please edit the following values - +; ---------------------------------------------------------------- +Set $ProductId$ = "opsi-template" +Set $InstallDir$ = "%ProgramFilesDir%\" + $ProductId$ +Set $LicenseRequired$ = "false" +Set $LicensePool$ = "p_" + $ProductId$ +; ---------------------------------------------------------------- + + +comment "Show product picture" +ShowBitmap /3 "%ScriptPath%\" + $ProductId$ + ".png" $ProductId$ + +Message "Uninstalling " + $ProductId$ + " ..." + +if FileExists("%ScriptPath%\delsub.ins") + comment "Start uninstall sub section" + Sub "%ScriptPath%\delsub.ins" +endif + +if not ($LicenseRequired$ = "false") + 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 + + + diff --git a/sample/4.0.2/opsi-template-with-admin/CLIENT_DATA/opsi-template-with-admin.png b/sample/4.0.2/opsi-template-with-admin/CLIENT_DATA/opsi-template-with-admin.png new file mode 100644 index 0000000..0692522 Binary files /dev/null and b/sample/4.0.2/opsi-template-with-admin/CLIENT_DATA/opsi-template-with-admin.png differ diff --git a/sample/4.0.2/opsi-template-with-admin/CLIENT_DATA/opsi.bmp b/sample/4.0.2/opsi-template-with-admin/CLIENT_DATA/opsi.bmp new file mode 100644 index 0000000..dfe6204 Binary files /dev/null and b/sample/4.0.2/opsi-template-with-admin/CLIENT_DATA/opsi.bmp differ diff --git a/sample/4.0.2/opsi-template-with-admin/CLIENT_DATA/setup.ins b/sample/4.0.2/opsi-template-with-admin/CLIENT_DATA/setup.ins new file mode 100644 index 0000000..9c88203 --- /dev/null +++ b/sample/4.0.2/opsi-template-with-admin/CLIENT_DATA/setup.ins @@ -0,0 +1,299 @@ +; Copyright (c) uib gmbh (www.uib.de) +; This sourcecode is owned by uib +; and published under the Terms of the General Public License. + +; TEMPLATE for +; Skript fuer Installationen im Kontext eines temporaeren lokalen Administrators +; installations as temporary local admin +; see winst_manual.pdf / winst_handbuch.pdf + +; !!! requires winst32.exe version 4.2.x !!! + +; +; !!! Das lokale Installations-Skript, das durch den temporaeren lokalen Admin ausgefuehrt wird +; !!! (sein Name steht in $LocalSetupScript$), muss mit dem Befehl +; !!! exitWindows /Reboot +; !!! enden +; + +; !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! +; Vorarbeiten/Voraussetzungen/Doku pruefen wie in Winsthandbuch +; 8.3 Skript fuer Installationen im Kontext eines lokalen Administrators +; !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! + + +[Actions] +requiredWinstVersion >= 4.11.3.3 +setLogLevel=7 +DefVar $ProductName$ +DefVar $ProductSizeMB$ +DefVar $LocalSetupScript$ +DefVar $LockKeyboard$ +DefVar $OpsiAdminPass$ +DefVar $RebootFlag$ +DefVar $WinstRegKey$ +DefVar $AutoName$ +DefVar $AutoPass$ +DefVar $AutoDom$ +DefVar $AutoLogon$ +DefVar $AutoBackupKey$ +DefVar $LocalFilesPath$ +DefVar $LocalWinst$ +DefVar $DefaultLoglevel$ +DefVar $PasswdLogLevel$ +DefVar $AdminGroup$ +DefVar $SearchResult$ +DefVar $LocalDomain$ +DefVar $debug$ +DefVar $isFatal$ + +; ---------------------------------------------------------------- +; - Please edit the following values +; ---------------------------------------------------------------- +Set $ProductName$ = "opsi-template-with-admin" +Set $ProductSizeMB$ = "1" +Set $LocalSetupScript$ = "setup32.ins" +; ---------------------------------------------------------------- + +comment "get and set initial values..." +set $debug$ = GetProductProperty("debug","false") +set $isFatal$ = "false" +set $DefaultLoglevel$ = "7" +SetLogLevel=$DefaultLoglevel$ +Set $LocalDomain$ = "%PCNAME%" + +comment "check if we productive or debugging..." +if $debug$ = "true" + comment "we are in debug mode" + Set $LockKeyboard$="false" + Set $PasswdLogLevel$="7" +else + comment "we are in productive mode" + comment "set $LockKeyboard$ to true to prevent user hacks while admin is logged in" + Set $LockKeyboard$="true" + comment " set $PasswdLogLevel$ to 0 for production" + Set $PasswdLogLevel$="0" +endif + +comment "handle Rebootflag" +Set $WinstRegKey$ = "HKLM\SOFTWARE\opsi.org\winst" +Set $RebootFlag$ = GetRegistryStringValue32("["+$WinstRegKey$+"] "+"RebootFlag") + +comment "some paths required" +Set $AutoBackupKey$ = $WinstRegKey$+"\AutoLogonBackup" +Set $LocalFilesPath$ = "C:\opsi.org\tmp\opsi_local_inst" +Set $LocalWinst$ = "%ProgramFilesDir%\opsi.org\opsi-client-agent\opsi-winst\winst32.exe" +if not( FileExists($LocalWinst$) ) + LogError "No opsi-winst found. Abborting." + isFatalError +endif + +comment "show product picture" +ShowBitmap "%scriptpath%\localsetup\"+$ProductName$+".png" $ProductName$ + +if not (($RebootFlag$ = "1") or ($RebootFlag$ = "2") or ($RebootFlag$ = "3")) + comment "Part before first Reboot" + comment "just reboot - this must be done if this is the first product after OS installation" + comment "handle Rebootflag" + Set $RebootFlag$ = "1" + Registry_SaveRebootFlag /32bit + ;ExitWindows /ImmediateReboot +endif ; Rebootflag = not (1 or 2 or 3) + +if $RebootFlag$ = "1" + comment "Part before second Reboot" + setActionProgress "Preparing" + + if not(HasMinimumSpace ("%SYSTEMDRIVE%", ""+$ProductSizeMB$+" MB")) + LogError "Not enough space on drive C: . "+$ProductSizeMB$+" MB on C: required for "+$ProductName$ + isFatalError + endif + + comment "Lets work..." + Message "Preparing "+$ProductName$+" install step 1..." + sub_Prepare_AutoLogon + + comment "we need to reboot now to be sure that the autologon work" + comment "handle Rebootflag" + Set $RebootFlag$ = "2" + Registry_SaveRebootFlag /32bit + ExitWindows /ImmediateReboot +endif ; Rebootflag = not (1 or 2) + +if ($RebootFlag$ = "2") + comment "Part after first Reboot" + + comment "handle Rebootflag" + Set $RebootFlag$ = "3" + Registry_SaveRebootFlag /32bit + + comment "Lets work..." + Message "Preparing "+$ProductName$+" install step 2..." + Registry_enable_keyboard /sysnative + + comment "now let the autologon work" + comment "it will stop with a reboot" + setActionProgress "Run Installation" + + ExitWindows /ImmediateLogout +endif ; Rebootflag = 2 + +if ($RebootFlag$ = "3") + comment "Part after second Reboot" + ExitWindows /Reboot + setActionProgress "Cleanup" + comment "handle Rebootflag" + Set $RebootFlag$ = "0" + Registry_SaveRebootFlag /32bit + + comment "Lets work..." + Message "Cleanup "+$ProductName$+" install (step 3)..." + sub_Restore_AutoLogon + set $SearchResult$ = GetRegistryStringValueSysnative("[HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\RunOnce] opsi_autologon_setup") + if $SearchResult$ = $LocalWinst$+" "+$LocalFilesPath$+"\"+$LocalSetupScript$+" /batch /productid %installingProdName%" + LogError "Localscript did not run. We remove the RunOnce entry and abort" + Registry_del_runonce /sysnative + set $isFatal$ = "true" + endif + if "true" = getRegistryStringValue32("[HKLM\Software\opsi.org\winst] with-admin-fatal") + LogError "set to fatal because the local script stored this result" + set $isFatal$ = "true" + endif + comment "cleanup the registry key which stores a fatal result of the local script" + Registry_clean_fatal_flag /32bit + if $isFatal$ = "true" + isFatalError + endif + comment "This is the clean end of the installation" +endif ; Rebootflag = 3 + + +[sub_Prepare_AutoLogon] +comment "copy the setup script and files" +Files_copy_Setup_files_local +comment "read actual Autologon values for backup" +set $AutoName$ = GetRegistryStringValueSysnative("[HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Winlogon] DefaultUserName") +comment "if AutoLogonName is our setup admin user, something bad happend" +comment "then let us cleanup" +if ($AutoName$="opsiSetupAdmin") + set $AutoName$="" + set $AutoPass$="" + set $AutoDom$="" + set $AutoLogon$="0" +else + set $AutoPass$ = GetRegistryStringValueSysnative("[HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Winlogon] DefaultPassword") + set $AutoDom$ = GetRegistryStringValueSysnative("[HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Winlogon] DefaultDomainName") + set $AutoLogon$ = GetRegistryStringValueSysnative("[HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Winlogon] AutoAdminLogon") +endif + +comment "backup AutoLogon values" +Registry_save_autologon /32bit + +comment "prepare the admin AutoLogon" +SetLogLevel=$PasswdLogLevel$ +set $OpsiAdminPass$= randomstr +Registry_autologon /sysnative + +comment "get the name of the admin group" +set $AdminGroup$ = SidToName("S-1-5-32-544") +comment "create our setup admin user" +DosInAnIcon_makeadmin +SetLogLevel=$DefaultLoglevel$ + +comment "store our setup script as run once" +Registry_runOnce /sysnative + +comment "disable keyboard and mouse while the autologin admin works" +if ($LockKeyboard$="true") + Registry_disable_keyboard /Sysnative +endif + +comment "cleanup the registry key which stores a fatal result of the local script" +Registry_clean_fatal_flag /32bit + +[sub_Restore_AutoLogon] +comment "read AutoLogon values from backup" +set $AutoName$ = GetRegistryStringValue("["+$AutoBackupKey$+"] DefaultUserName") +set $AutoPass$ = GetRegistryStringValue("["+$AutoBackupKey$+"] DefaultPassword") +set $AutoDom$ = GetRegistryStringValue("["+$AutoBackupKey$+"] DefaultDomainName") +set $AutoLogon$ = GetRegistryStringValue("["+$AutoBackupKey$+"] AutoAdminLogon") + +comment "restore the values" +SetLogLevel = $PasswdLogLevel$ +Registry_restore_autologon /Sysnative +SetLogLevel = $DefaultLoglevel$ +comment "delete our setup admin user" +DosInAnIcon_deleteadmin +comment "cleanup setup script, files and profiledir" +Files_delete_Setup_files_local +comment "delete profiledir" +DosInAnIcon_deleteprofile + +[Registry_save_autologon] +openkey [$AutoBackupKey$] +set "DefaultUserName"="$AutoName$" +set "DefaultPassword"="$AutoPass$" +set "DefaultDomainName"="$AutoDom$" +set "AutoAdminLogon"="$AutoLogon$" + +[Registry_restore_autologon] +openkey [HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Winlogon] +set "DefaultUserName"="$AutoName$" +set "DefaultPassword"="$AutoPass$" +set "DefaultDomainName"="$AutoDom$" +set "AutoAdminLogon"="$AutoLogon$" + +[DosInAnIcon_deleteadmin] +NET USER opsiSetupAdmin /DELETE + +[Registry_SaveRebootFlag] +openKey [$WinstRegKey$] +set "RebootFlag" = "$RebootFlag$" + +[Files_copy_Setup_files_local] +copy -s %ScriptPath%\localsetup\*.* $LocalFilesPath$ + +[Files_delete_Setup_files_local] +del -sf $LocalFilesPath$\ +; folgender Befehl funktioniert nicht vollständig, deshalb ist er zur Zeit auskommentier +; der Befehl wird durch die Sektion "DosInAnIcon_deleteprofile" ersetzt (P.Ohler) +;delete -sf "%ProfileDir%\opsiSetupAdmin" + +[DosInAnIcon_deleteprofile] +rmdir /S /Q "%ProfileDir%\opsiSetupAdmin" + +[DosInAnIcon_makeadmin] +NET USER opsiSetupAdmin $OpsiAdminPass$ /ADD +NET LOCALGROUP $AdminGroup$ /ADD opsiSetupAdmin + +[Registry_autologon] +openkey [HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Winlogon] +set "DefaultUserName"="opsiSetupAdmin" +set "DefaultPassword"="$OpsiAdminPass$" +set "DefaultDomainName"="$LocalDomain$" +set "AutoAdminLogon"="1" + +[Registry_runonce] +openkey [HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\RunOnce] +set "opsi_autologon_setup"='"$LocalWinst$" "$LocalFilesPath$\$LocalSetupScript$" /batch /productid %installingProdName%' + +[Registry_del_runonce] +openkey [HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\RunOnce] +DeleteVar "opsi_autologon_setup" + +[Registry_disable_keyboard] +openkey [HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Kbdclass] +set "Start"=REG_DWORD:0x4 +openkey [HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Mouclass] +set "Start"=REG_DWORD:0x4 + +[Registry_enable_keyboard] +openkey [HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Kbdclass] +set "Start"=REG_DWORD:0x1 +openkey [HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Mouclass] +set "Start"=REG_DWORD:0x1 + +[Registry_clean_fatal_flag] +openkey [$WinstRegKey$] +DeleteVar "with-admin-fatal" + diff --git a/sample/4.0.2/opsi-template-with-admin/OPSI/control b/sample/4.0.2/opsi-template-with-admin/OPSI/control new file mode 100644 index 0000000..cc66a64 --- /dev/null +++ b/sample/4.0.2/opsi-template-with-admin/OPSI/control @@ -0,0 +1,122 @@ +[Package] +version: 2 +depends: +incremental: False + +[Product] +type: localboot +id: opsi-template-with-admin +name: opsi template for installs with logged in admin +description: A opsi demo package +advice: +version: 4.0.2 +priority: -20 +licenseRequired: False +productClasses: +setupScript: setup.ins +uninstallScript: localsetup\uninstall.ins +updateScript: +alwaysScript: +onceScript: +customScript: +userLoginScript: + +[ProductProperty] +type: bool +name: debug +description: should be false for production: switch off keyboard lock and increase loglevel +default: False + +[ProductProperty] +type: bool +name: test-set-fatal +description: test only: if true script result is set to fatal +default: False + +[Changelog] +opsi-template-with-admin (4.0.2-2) stable; urgency=low + + * requires opsi-winst >= 4.11.3.3 + * uses /productid switch at opsi-winst call + * code cleanup (use of synative instead of 64bit) + * property debug: switches loglevel and lock keyboard + * code cleanup + + -- detlef oertel Thu, 19 Sep 2012 15:01:53 +0200 + + +opsi-template-with-admin (4.0.2-1) stable; urgency=low + + * requires opsi-winst >= 4.11.3 + * using SidToName instead of psgetsid.exe + * priority set to -20 + * first reboot is commented (;ExitWindows /ImmediateReboot). Uncomment it if you have problems with the autologon + + -- detlef oertel Wed, 04 Jul 2012 15:01:53 +0200 + + +opsi-template-with-admin (1.0-8) stable; urgency=low + + * localdomain = "%PCNAME%" + + -- Jan Schneider Wed, 4 May 2011 14:09:00 +0100 + +opsi-template-with-admin (1.0-7) stable; urgency=low + + * localdomain = "." for nt6 + + -- Jan Schneider Tue, 29 Mar 2011 17:56:00 +0100 + +opsi-template-with-admin (1.0-6) stable; urgency=low + + * postinst fix: /bin/bash + * preinst fix: no more case sensitiv for pcgetsid.exe + + -- detlef oertel Tue, 30 Dec 2010 15:01:53 +0200 + +opsi-template-with-admin (1.0-5) testing; urgency=low + + * added support for opsi 4.0 opsi-client-agent + * scripts renamed to setup.ins, local_setup.ins and uninstall.ins + + -- detlef oertel Tue, 13 Jun 2010 15:01:53 +0200 + + +opsi-template-with-admin (1.0-4) testing; urgency=low + + * new (64 bit) functions of winst 4.10.3 used + + -- detlef oertel Fri, 16 Apr 2010 15:01:53 +0200 + + +opsi-template-with-admin (1.0-3) testing; urgency=low + + * in [sub_fetch_SearchResult] changed ("$s$") to ('$s$') + + -- detlef oertel Tue, 26 Jan 2010 15:01:53 +0200 + +opsi-template-with-admin (1.0-2) stable; urgency=low + + * added support for 64 Bit + * code cleanup + * added psgetsid for international support + + -- detlef oertel Mon, 14 Dec 2009 15:01:53 +0200 + + +opsi-template-with-admin (1.0-1) stable; urgency=low + + * initial package based on http://www.opsi.org/opsi_wiki/TemplateForInstallationsAsTemporaryLocalAdmin + + -- detlef oertel Mon, 13 Nov 2009 15:01:53 +0200 + + + + + + + + + + + diff --git a/sample/4.0.2/opsi-template-with-admin/OPSI/postinst b/sample/4.0.2/opsi-template-with-admin/OPSI/postinst new file mode 100644 index 0000000..56a8c4b --- /dev/null +++ b/sample/4.0.2/opsi-template-with-admin/OPSI/postinst @@ -0,0 +1,26 @@ +#! /bin/bash +# +# This script executes after unpacking files from that archive and registering the product at the server. +# +# The following environment variables can be used to obtain information about the current installation: +# PRODUCT_ID: id of the current product +# CLIENT_DATA_DIR: directory which contains the installed client data +# +TMP_DIR=${CLIENT_DATA_DIR}/../${PRODUCT_ID}.tmp + +echo 'Restoring previous files...' +if [ -f $TMP_DIR/psgetsid.exe ]; then + mv $TMP_DIR/psgetsid.exe $CLIENT_DATA_DIR/ || exit 1 +fi + +echo 'get files if not present' +if [ ! -f "$CLIENT_DATA_DIR/psgetsid.exe" ]; then + cd $CLIENT_DATA_DIR + echo 'try to get zip' + wget http://download.sysinternals.com/Files/PsTools.zip + echo 'unzip' + unzip -o PsTools.zip +fi + +echo "Removing temporary files..." +rm -rf $TMP_DIR diff --git a/sample/4.0.2/opsi-template-with-admin/OPSI/preinst b/sample/4.0.2/opsi-template-with-admin/OPSI/preinst new file mode 100644 index 0000000..4cbf4ba --- /dev/null +++ b/sample/4.0.2/opsi-template-with-admin/OPSI/preinst @@ -0,0 +1,28 @@ +#! /bin/bash +# +# preinst script for softprod +# This script executes before that package will be unpacked from its archive file. +# +# The following environment variables can be used to obtain information about the current installation: +# PRODUCT_ID: id of the current product +# CLIENT_DATA_DIR: directory where client data will be installed +# +TMP_DIR=${CLIENT_DATA_DIR}/../${PRODUCT_ID}.tmp + +if [ -d $TMP_DIR ]; then + echo "Temporary directory $TMP_DIR already exist, aborting!" 1>&2 + exit 1 +fi + +[ ! -d $CLIENT_DATA_DIR ] && mkdir $CLIENT_DATA_DIR +mkdir $TMP_DIR + +if [ -d $CLIENT_DATA_DIR ]; then + echo "Saving previous files..." + if [ -f $CLIENT_DATA_DIR/[pP][sS][gG][eE][tT][sS][iI][dD].[eE][xX][eE] ]; then + mv $CLIENT_DATA_DIR/[pP][sS][gG][eE][tT][sS][iI][dD].[eE][xX][eE] $TMP_DIR/psgetsid.exe || exit 1 + fi +fi + +exit 0 + diff --git a/sample/4.0.2/opsi-template/CLIENT_DATA/delsub32.ins b/sample/4.0.2/opsi-template/CLIENT_DATA/delsub32.ins new file mode 100644 index 0000000..db88f69 --- /dev/null +++ b/sample/4.0.2/opsi-template/CLIENT_DATA/delsub32.ins @@ -0,0 +1,97 @@ +; 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/en/credits/ + + +Set $MsiId$ = '{XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX}' +Set $UninstallProgram$ = $InstallDir$ + "\uninstall.exe" + +Message "Uninstalling " + $ProductId$ + " ..." + +if FileExists($UninstallProgram$) + comment "Uninstall program found, starting uninstall" + Winbatch_uninstall + sub_check_exitcode +endif +if not (GetRegistryStringValue32("[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 /32Bit + +comment "Cleanup registry" +Registry_uninstall /32Bit + +comment "Delete program shortcuts" +LinkFolder_uninstall + +[Winbatch_uninstall] +; Choose one of the following examples as basis for program uninstall +; +; === Nullsoft Scriptable Install System ================================================================ +; maby better Call as +; Winbatch_uninstall /WaitforProcessending "Au_.exe" /Timeoutseconds 10 +; "$UninstallProgram$" /S +; +; === Inno Setup ======================================================================================== +; "$UninstallProgram$" /silent /norestart /SUPPRESSMSGBOXES /nocancel + + +[Winbatch_uninstall_msi] +msiexec /x $MsiId$ /qb! REBOOT=ReallySuppress + +[Files_uninstall] +; Example for recursively deleting the installation directory: +; +; del -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 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 + diff --git a/sample/4.0.2/opsi-template/CLIENT_DATA/delsub3264.ins b/sample/4.0.2/opsi-template/CLIENT_DATA/delsub3264.ins new file mode 100644 index 0000000..dab13c4 --- /dev/null +++ b/sample/4.0.2/opsi-template/CLIENT_DATA/delsub3264.ins @@ -0,0 +1,143 @@ +; 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/en/credits/ + + +Set $MsiId32$ = '{XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX}' +Set $UninstallProgram32$ = $InstallDir32$ + "\uninstall.exe" + +Set $MsiId64$ = '{XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX}' +Set $UninstallProgram64$ = $InstallDir64$ + "\uninstall.exe" + +if (($INST_SystemType$ = "x86 System") and ($INST_architecture$ = "system specific")) or ($INST_architecture$ = "both") or ($INST_architecture$ = "32 only") + Message "Uninstalling " + $ProductId$ + " 32 Bit..." + + if FileExists($UninstallProgram32$) + comment "Uninstall program found, starting uninstall" + Winbatch_uninstall_32 + sub_check_exitcode + endif + + if not (GetRegistryStringValue32("[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\" + $MsiId32$ + "] DisplayName") = "") + comment "MSI id " + $MsiId32$ + " found in registry, starting msiexec to uninstall" + Winbatch_uninstall_msi_32 + sub_check_exitcode + endif + + comment "Delete files" + Files_uninstall_32 /32Bit + comment "Cleanup registry" + Registry_uninstall /32Bit +endif + +if ($INST_SystemType$ = "64 Bit System") and (($INST_architecture$ = "system specific") or ($INST_architecture$ = "both") or ($INST_architecture$ = "64 only")) + Message "Uninstalling " + $ProductId$ + " 64 Bit..." + + if FileExists($UninstallProgram64$) + comment "Uninstall program found, starting uninstall" + Winbatch_uninstall_64 + sub_check_exitcode + endif + + if not (GetRegistryStringValue64("[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\" + $MsiId64$ + "] DisplayName") = "") + comment "MSI id " + $MsiId64$ + " found in registry, starting msiexec to uninstall" + Winbatch_uninstall_msi_64 + sub_check_exitcode + endif + + comment "Delete files" + Files_uninstall_64 /64Bit + comment "Cleanup registry" + Registry_uninstall /64Bit +endif + +comment "Delete program shortcuts" +LinkFolder_uninstall + +[Winbatch_uninstall_32] +; Choose one of the following examples as basis for program uninstall +; +; === Nullsoft Scriptable Install System ================================================================ +; maby better Call as +; Winbatch_uninstall /WaitforProcessending "Au_.exe" /Timeoutseconds 10 +; "$UninstallProgram32$" /S +; +; === Inno Setup ======================================================================================== +; "$UninstallProgram32$" /silent /norestart /SUPPRESSMSGBOXES /nocancel + + +[Winbatch_uninstall_msi_32] +msiexec /x $MsiId32$ /qb! REBOOT=ReallySuppress + +[Files_uninstall_32] +; Example for recursively deleting the installation directory (don't forget the trailing backslash): +; +; delete -sf "$InstallDir32$\" + +[Winbatch_uninstall_64] +; Choose one of the following examples as basis for program uninstall +; +; === Nullsoft Scriptable Install System ================================================================ +; maby better Call as +; Winbatch_uninstall /WaitforProcessending "Au_.exe" /Timeoutseconds 10 +; "$UninstallProgram64$" /S +; +; === Inno Setup ======================================================================================== +; "$UninstallProgram64$" /silent /norestart /SUPPRESSMSGBOXES /nocancel + + +[Winbatch_uninstall_msi_64] +msiexec /x $MsiId64$ /qb! REBOOT=ReallySuppress + +[Files_uninstall_64] +; Example for recursively deleting the installation directory: +; +; del -sf "$InstallDir64$\" + +[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 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 + diff --git a/sample/4.0.2/opsi-template/CLIENT_DATA/delsub64.ins b/sample/4.0.2/opsi-template/CLIENT_DATA/delsub64.ins new file mode 100644 index 0000000..cf3a4c9 --- /dev/null +++ b/sample/4.0.2/opsi-template/CLIENT_DATA/delsub64.ins @@ -0,0 +1,97 @@ +; 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/en/credits/ + + +Set $MsiId$ = '{XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX}' +Set $UninstallProgram$ = $InstallDir$ + "\uninstall.exe" + +Message "Uninstalling " + $ProductId$ + " ..." + +if FileExists($UninstallProgram$) + comment "Uninstall program found, starting uninstall" + Winbatch_uninstall + sub_check_exitcode +endif +if not (GetRegistryStringValue64("[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 /64Bit + +comment "Cleanup registry" +Registry_uninstall /64Bit + +comment "Delete program shortcuts" +LinkFolder_uninstall + +[Winbatch_uninstall] +; Choose one of the following examples as basis for program uninstall +; +; === Nullsoft Scriptable Install System ================================================================ +; maby better Call as +; Winbatch_uninstall /WaitforProcessending "Au_.exe" /Timeoutseconds 10 +; "$UninstallProgram$" /S +; +; === Inno Setup ======================================================================================== +; "$UninstallProgram$" /silent /norestart /SUPPRESSMSGBOXES /nocancel + + +[Winbatch_uninstall_msi] +msiexec /x $MsiId$ /qb! REBOOT=ReallySuppress + +[Files_uninstall] +; Example for recursively deleting the installation directory: +; +; del -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 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 + diff --git a/sample/4.0.2/opsi-template/CLIENT_DATA/delsub_short32.opsiscript b/sample/4.0.2/opsi-template/CLIENT_DATA/delsub_short32.opsiscript new file mode 100644 index 0000000..16d9e26 --- /dev/null +++ b/sample/4.0.2/opsi-template/CLIENT_DATA/delsub_short32.opsiscript @@ -0,0 +1,67 @@ +; 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/en/credits/ + +include_append "section_sub_check_exitcode.opsiinc" + +Set $MsiId$ = '{XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX}' +Set $UninstallProgram$ = $InstallDir$ + "\uninstall.exe" + +Message "Uninstalling " + $ProductId$ + " ..." + +if FileExists($UninstallProgram$) + comment "Uninstall program found, starting uninstall" + Winbatch_uninstall + sub_check_exitcode +endif +if not (GetRegistryStringValue32("[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 /32Bit + +comment "Cleanup registry" +Registry_uninstall /32Bit + +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 /SUPPRESSMSGBOXES /nocancel + + +[Winbatch_uninstall_msi] +msiexec /x $MsiId$ /qb! REBOOT=ReallySuppress + +[Files_uninstall] +; Example for recursively deleting the installation directory: +; +; del -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$ + diff --git a/sample/4.0.2/opsi-template/CLIENT_DATA/login.ins b/sample/4.0.2/opsi-template/CLIENT_DATA/login.ins new file mode 100644 index 0000000..60419d9 --- /dev/null +++ b/sample/4.0.2/opsi-template/CLIENT_DATA/login.ins @@ -0,0 +1,24 @@ +; 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/en/credits/ + +[Actions] +Message "Profile Patch for VLC ...." + +comment "Did we run this script before ? - and set version stamp in profile" +if getValue("installationstate", getProductMap) = "installed" + comment "Product is installed" + if not (scriptWasExecutedBefore) + comment "loginscript was not run yet " + Files_profile_copy + Registry_currentuser_set + endif +endif + +[Files_profile_copy] +copy "%Scriptpath%\profiles\*.*" "%CurrentAppdataDir%\ACME" + +[Registry_currentuser_set] +openkey [HKCU\Software\ACME] +set "show_greeting_window" = "no" diff --git a/sample/4.0.2/opsi-template/CLIENT_DATA/opsi-template.png b/sample/4.0.2/opsi-template/CLIENT_DATA/opsi-template.png new file mode 100644 index 0000000..e4b974e Binary files /dev/null and b/sample/4.0.2/opsi-template/CLIENT_DATA/opsi-template.png differ diff --git a/sample/4.0.2/opsi-template/CLIENT_DATA/setup32.ins b/sample/4.0.2/opsi-template/CLIENT_DATA/setup32.ins new file mode 100644 index 0000000..4da30e7 --- /dev/null +++ b/sample/4.0.2/opsi-template/CLIENT_DATA/setup32.ins @@ -0,0 +1,212 @@ +; Copyright (c) uib gmbh (www.uib.de) +; This sourcecode is owned by uib +; and published under the Terms of the General Public License. +; credits: http://www.opsi.org/en/credits/ + +[Actions] +requiredWinstVersion >= "4.11.2.6" + +DefVar $MsiId$ +DefVar $UninstallProgram$ +DefVar $LogDir$ +DefVar $ProductId$ +DefVar $MinimumSpace$ +DefVar $InstallDir$ +DefVar $ExitCode$ +DefVar $LicenseRequired$ +DefVar $LicenseKey$ +DefVar $LicensePool$ + +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$ = "opsi-template" +Set $MinimumSpace$ = "1 MB" +; the path were we find the product after the installation +Set $InstallDir$ = "%ProgramFiles32Dir%\" +Set $LicenseRequired$ = "false" +Set $LicensePool$ = "p_" + $ProductId$ +; ---------------------------------------------------------------- + +if not(HasMinimumSpace ("%SystemDrive%", $MinimumSpace$)) + LogError "Not enough space on %SystemDrive%, " + $MinimumSpace$ + " on drive %SystemDrive% needed for " + $ProductId$ + isFatalError "No Space" + ; Stop process and set installation status to failed +else + comment "Show product picture" + ShowBitmap "%ScriptPath%\" + $ProductId$ + ".png" $ProductId$ + + if FileExists("%ScriptPath%\delsub32.ins") + comment "Start uninstall sub section" + Sub "%ScriptPath%\delsub32.ins" + endif + + Message "Installing " + $ProductId$ + " ..." + + if $LicenseRequired$ = "true" + comment "Licensing required, reserve license and get license key" + Sub_get_licensekey + endif + + comment "Start setup program" + ChangeDirectory "%SCRIPTPATH%" + Winbatch_install + Sub_check_exitcode + + comment "Copy files" + Files_install /32Bit + + comment "Patch Registry" + Registry_install /32Bit + + comment "Create shortcuts" + LinkFolder_install + +endif + +[Winbatch_install] +; Choose one of the following examples as basis for your installation +; You can use $LicenseKey$ var to pass a license key to the installer +; +; === Nullsoft Scriptable Install System ================================================================ +; "%ScriptPath%\Setup.exe" /S +; +; === MSI package ======================================================================================= +; You may use the parameter PIDKEY=$Licensekey$ +; msiexec /i "%ScriptPath%\some.msi" /l* "$LogDir$\$ProductId$.install_log.txt" /qb! ALLUSERS=1 REBOOT=ReallySuppress +; +; === InstallShield + MSI===================================================================================== +; Attention: The path to the log file should not contain any whitespaces +; "%ScriptPath%\setup.exe" /s /v" /l* $LogDir$\$ProductId$.install_log.txt /qb! ALLUSERS=1 REBOOT=ReallySuppress" +; "%ScriptPath%\setup.exe" /s /v" /qb! ALLUSERS=2 REBOOT=ReallySuppress" +; +; === InstallShield ===================================================================================== +; Create setup.iss answer file by running: setup.exe /r /f1"c:\setup.iss" +; You may use an answer file by the parameter /f1"c:\setup.iss" +; "%ScriptPath%\setup.exe" /s /sms /f2"$LogDir$\$ProductId$.install_log.txt" +; +; === Inno Setup ======================================================================================== +; http://unattended.sourceforge.net/InnoSetup_Switches_ExitCodes.html +; You may create setup answer file by: setup.exe /SAVEINF="filename" +; You may use an answer file by the parameter /LOADINF="filename" +; "%ScriptPath%\setup.exe" /sp- /silent /norestart /nocancel /SUPPRESSMSGBOXES + +[Files_install] +; Example of recursively copying some files into the installation directory: +; +; copy -s "%ScriptPath%\files\*.*" "$InstallDir$" + +[Registry_install] +; Example of setting some values of an registry key: +; +; openkey [HKEY_LOCAL_MACHINE\Software\$ProductId$] +; set "name1" = "some string value" +; set "name2" = REG_DWORD:0001 +; set "name3" = REG_BINARY:00 af 99 cd + +[LinkFolder_install] +; Example of deleting a folder from AllUsers startmenu: +; +; set_basefolder common_programs +; delete_subfolder $ProductId$ +; +; Example of creating an shortcut to the installed exe in AllUsers startmenu: +; +; set_basefolder common_programs +; set_subfolder $ProductId$ +; +; set_link +; name: $ProductId$ +; target: +; parameters: +; working_dir: $InstallDir$ +; icon_file: +; icon_index: +; end_link +; +; Example of creating an shortcut to the installed exe on AllUsers desktop: +; +; set_basefolder common_desktopdirectory +; set_subfolder "" +; +; set_link +; name: $ProductId$ +; target: +; parameters: +; working_dir: $InstallDir$ +; icon_file: +; icon_index: 2 +; end_link + +[Sub_get_licensekey] +if opsiLicenseManagementEnabled + comment "License management is enabled and will be used" + + comment "Trying to get a 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, 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 + diff --git a/sample/4.0.2/opsi-template/CLIENT_DATA/setup3264.ins b/sample/4.0.2/opsi-template/CLIENT_DATA/setup3264.ins new file mode 100644 index 0000000..20d8c29 --- /dev/null +++ b/sample/4.0.2/opsi-template/CLIENT_DATA/setup3264.ins @@ -0,0 +1,262 @@ +; Copyright (c) uib gmbh (www.uib.de) +; This sourcecode is owned by uib +; and published under the Terms of the General Public License. +; credits: http://www.opsi.org/en/credits/ + +[Actions] +requiredWinstVersion >= "4.11.2.6" + +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$ + +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$ = "opsi-template" +Set $MinimumSpace$ = "1 MB" +; the path were we find the product after the installation +Set $InstallDir32$ = "%ProgramFiles32Dir%\" +Set $InstallDir64$ = "%ProgramFiles64Dir%\" +Set $LicenseRequired$ = "false" +Set $LicensePool$ = "p_" + $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 + comment "Show product picture" + ShowBitmap "%ScriptPath%\" + $ProductId$ + ".png" $ProductId$ + + if FileExists("%ScriptPath%\delsub3264.ins") + comment "Start uninstall sub section" + Sub "%ScriptPath%\delsub3264.ins" + endif + + if $LicenseRequired$ = "true" + comment "Licensing required, reserve license and get license key" + Sub_get_licensekey + endif + + comment "installing" + + if (($INST_SystemType$ = "x86 System") and ($INST_architecture$ = "system specific")) or ($INST_architecture$ = "both") or ($INST_architecture$ = "32 only") + Message "Installing " + $ProductId$ + " 32 Bit..." + comment "Start setup program" + ChangeDirectory "%SCRIPTPATH%" + Winbatch_install_32 + Sub_check_exitcode + comment "Copy files" + Files_install_32 /32Bit + comment "Patch Registry" + Registry_install /32Bit + comment "Create shortcuts" + LinkFolder_install + endif + + if ($INST_SystemType$ = "64 Bit System") and (($INST_architecture$ = "system specific") or ($INST_architecture$ = "both") or ($INST_architecture$ = "64 only")) + Message "Installing " + $ProductId$ + " 64 Bit..." + comment "Start setup program" + ChangeDirectory "%SCRIPTPATH%" + Winbatch_install_64 + Sub_check_exitcode + comment "Copy files" + Files_install_64 /64Bit + comment "Patch Registry" + Registry_install /64Bit + comment "Create shortcuts" + LinkFolder_install + endif + +endif + +[Winbatch_install_32] +; Choose one of the following examples as basis for your installation +; You can use $LicenseKey$ var to pass a license key to the installer +; +; === Nullsoft Scriptable Install System ================================================================ +; "%ScriptPath%\Setup.exe" /S +; +; === MSI package ======================================================================================= +; You may use the parameter PIDKEY=$Licensekey$ +; msiexec /i "%ScriptPath%\some.msi" /l* "$LogDir$\$ProductId$.install_log.txt" /qb! ALLUSERS=1 REBOOT=ReallySuppress +; +; === InstallShield + MSI===================================================================================== +; Attention: The path to the log file should not contain any whitespaces +; "%ScriptPath%\setup.exe" /s /v" /l* $LogDir$\$ProductId$.install_log.txt /qb! ALLUSERS=1 REBOOT=ReallySuppress" +; "%ScriptPath%\setup.exe" /s /v" /qb! ALLUSERS=2 REBOOT=ReallySuppress" +; +; === InstallShield ===================================================================================== +; Create setup.iss answer file by running: setup.exe /r /f1"c:\setup.iss" +; You may use an answer file by the parameter /f1"c:\setup.iss" +; "%ScriptPath%\setup.exe" /s /sms /f2"$LogDir$\$ProductId$.install_log.txt" +; +; === Inno Setup ======================================================================================== +; http://unattended.sourceforge.net/InnoSetup_Switches_ExitCodes.html +; You may create setup answer file by: setup.exe /SAVEINF="filename" +; You may use an answer file by the parameter /LOADINF="filename" +; "%ScriptPath%\setup.exe" /sp- /silent /norestart /nocancel /SUPPRESSMSGBOXES + +[Files_install_32] +; Example of recursively copying some files into the installation directory: +; +; copy -s "%ScriptPath%\files\*.*" "$InstallDir32$" + +[Winbatch_install_64] +; Choose one of the following examples as basis for your installation +; You can use $LicenseKey$ var to pass a license key to the installer +; +; === Nullsoft Scriptable Install System ================================================================ +; "%ScriptPath%\Setup.exe" /S +; +; === MSI package ======================================================================================= +; You may use the parameter PIDKEY=$Licensekey$ +; msiexec /i "%ScriptPath%\some.msi" /l* "$LogDir$\$ProductId$.install_log.txt" /qb! ALLUSERS=1 REBOOT=ReallySuppress +; +; === InstallShield + MSI===================================================================================== +; Attention: The path to the log file should not contain any whitespaces +; "%ScriptPath%\setup.exe" /s /v" /l* $LogDir$\$ProductId$.install_log.txt /qb! ALLUSERS=1 REBOOT=ReallySuppress" +; "%ScriptPath%\setup.exe" /s /v" /qb! ALLUSERS=2 REBOOT=ReallySuppress" +; +; === InstallShield ===================================================================================== +; Create setup.iss answer file by running: setup.exe /r /f1"c:\setup.iss" +; You may use an answer file by the parameter /f1"c:\setup.iss" +; "%ScriptPath%\setup.exe" /s /sms /f2"$LogDir$\$ProductId$.install_log.txt" +; +; === Inno Setup ======================================================================================== +; http://unattended.sourceforge.net/InnoSetup_Switches_ExitCodes.html +; You may create setup answer file by: setup.exe /SAVEINF="filename" +; You may use an answer file by the parameter /LOADINF="filename" +; "%ScriptPath%\setup.exe" /sp- /silent /norestart /nocancel /SUPPRESSMSGBOXES + +[Files_install_64] +; Example of recursively copying some files into the installation directory: +; +; copy -s "%ScriptPath%\files\*.*" "$InstallDir64$" + +[Registry_install] +; Example of setting some values of an registry key: +; +; openkey [HKEY_LOCAL_MACHINE\Software\$ProductId$] +; set "name1" = "some string value" +; set "name2" = REG_DWORD:0001 +; set "name3" = REG_BINARY:00 af 99 cd + +[LinkFolder_install] +; Example of deleting a folder from AllUsers startmenu: +; +; set_basefolder common_programs +; delete_subfolder $ProductId$ +; +; Example of creating an shortcut to the installed exe in AllUsers startmenu: +; +; set_basefolder common_programs +; set_subfolder $ProductId$ +; +; set_link +; name: $ProductId$ +; target: +; parameters: +; working_dir: $InstallDir$ +; icon_file: +; icon_index: +; end_link +; +; Example of creating an shortcut to the installed exe on AllUsers desktop: +; +; set_basefolder common_desktopdirectory +; set_subfolder "" +; +; set_link +; name: $ProductId$ +; target: +; parameters: +; working_dir: $InstallDir$ +; icon_file: +; icon_index: 2 +; end_link + +[Sub_get_licensekey] +comment "License management is enabled and will be used" + +comment "Trying to get a 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, 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 + +[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 + diff --git a/sample/4.0.2/opsi-template/CLIENT_DATA/setup64.ins b/sample/4.0.2/opsi-template/CLIENT_DATA/setup64.ins new file mode 100644 index 0000000..8fc3187 --- /dev/null +++ b/sample/4.0.2/opsi-template/CLIENT_DATA/setup64.ins @@ -0,0 +1,212 @@ +; Copyright (c) uib gmbh (www.uib.de) +; This sourcecode is owned by uib +; and published under the Terms of the General Public License. +; credits: http://www.opsi.org/en/credits/ + +[Actions] +requiredWinstVersion >= "4.11.2.6" + +DefVar $MsiId$ +DefVar $UninstallProgram$ +DefVar $LogDir$ +DefVar $ProductId$ +DefVar $MinimumSpace$ +DefVar $InstallDir$ +DefVar $ExitCode$ +DefVar $LicenseRequired$ +DefVar $LicenseKey$ +DefVar $LicensePool$ + +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$ = "opsi-template" +Set $MinimumSpace$ = "1 MB" +; the path were we find the product after the installation +Set $InstallDir$ = "%ProgramFiles64Dir%\" +Set $LicenseRequired$ = "false" +Set $LicensePool$ = "p_" + $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 + comment "Show product picture" + ShowBitmap "%ScriptPath%\" + $ProductId$ + ".png" $ProductId$ + + if FileExists("%ScriptPath%\delsub64.ins") + comment "Start uninstall sub section" + Sub "%ScriptPath%\delsub64.ins" + endif + + Message "Installing " + $ProductId$ + " ..." + + if $LicenseRequired$ = "true" + comment "Licensing required, reserve license and get license key" + Sub_get_licensekey + endif + + comment "Start setup program" + ChangeDirectory "%SCRIPTPATH%" + Winbatch_install + Sub_check_exitcode + + comment "Copy files" + Files_install /64Bit + + comment "Patch Registry" + Registry_install /64Bit + + comment "Create shortcuts" + LinkFolder_install + +endif + +[Winbatch_install] +; Choose one of the following examples as basis for your installation +; You can use $LicenseKey$ var to pass a license key to the installer +; +; === Nullsoft Scriptable Install System ================================================================ +; "%ScriptPath%\Setup.exe" /S +; +; === MSI package ======================================================================================= +; You may use the parameter PIDKEY=$Licensekey$ +; msiexec /i "%ScriptPath%\some.msi" /l* "$LogDir$\$ProductId$.install_log.txt" /qb! ALLUSERS=1 REBOOT=ReallySuppress +; +; === InstallShield + MSI===================================================================================== +; Attention: The path to the log file should not contain any whitespaces +; "%ScriptPath%\setup.exe" /s /v" /l* $LogDir$\$ProductId$.install_log.txt /qb! ALLUSERS=1 REBOOT=ReallySuppress" +; "%ScriptPath%\setup.exe" /s /v" /qb! ALLUSERS=2 REBOOT=ReallySuppress" +; +; === InstallShield ===================================================================================== +; Create setup.iss answer file by running: setup.exe /r /f1"c:\setup.iss" +; You may use an answer file by the parameter /f1"c:\setup.iss" +; "%ScriptPath%\setup.exe" /s /sms /f2"$LogDir$\$ProductId$.install_log.txt" +; +; === Inno Setup ======================================================================================== +; http://unattended.sourceforge.net/InnoSetup_Switches_ExitCodes.html +; You may create setup answer file by: setup.exe /SAVEINF="filename" +; You may use an answer file by the parameter /LOADINF="filename" +; "%ScriptPath%\setup.exe" /sp- /silent /norestart /nocancel /SUPPRESSMSGBOXES + +[Files_install] +; Example of recursively copying some files into the installation directory: +; +; copy -s "%ScriptPath%\files\*.*" "$InstallDir$" + +[Registry_install] +; Example of setting some values of an registry key: +; +; openkey [HKEY_LOCAL_MACHINE\Software\$ProductId$] +; set "name1" = "some string value" +; set "name2" = REG_DWORD:0001 +; set "name3" = REG_BINARY:00 af 99 cd + +[LinkFolder_install] +; Example of deleting a folder from AllUsers startmenu: +; +; set_basefolder common_programs +; delete_subfolder $ProductId$ +; +; Example of creating an shortcut to the installed exe in AllUsers startmenu: +; +; set_basefolder common_programs +; set_subfolder $ProductId$ +; +; set_link +; name: $ProductId$ +; target: +; parameters: +; working_dir: $InstallDir$ +; icon_file: +; icon_index: +; end_link +; +; Example of creating an shortcut to the installed exe on AllUsers desktop: +; +; set_basefolder common_desktopdirectory +; set_subfolder "" +; +; set_link +; name: $ProductId$ +; target: +; parameters: +; working_dir: $InstallDir$ +; icon_file: +; icon_index: 2 +; end_link + +[Sub_get_licensekey] +if opsiLicenseManagementEnabled + comment "License management is enabled and will be used" + + comment "Trying to get a 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, 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 + diff --git a/sample/4.0.2/opsi-template/CLIENT_DATA/setup_short32.opsiscript b/sample/4.0.2/opsi-template/CLIENT_DATA/setup_short32.opsiscript new file mode 100644 index 0000000..3f808e9 --- /dev/null +++ b/sample/4.0.2/opsi-template/CLIENT_DATA/setup_short32.opsiscript @@ -0,0 +1,147 @@ +; Copyright (c) uib gmbh (www.uib.de) +; This sourcecode is owned by uib +; and published under the Terms of the General Public License. +; credits: http://www.opsi.org/en/credits/ + +[Actions] +requiredWinstVersion >= "4.11.3.2" +include_append "section_sub_check_exitcode.opsiinc" +include_append "section_sub_get_licensekey.opsiinc" + +DefVar $MsiId$ +DefVar $UninstallProgram$ +DefVar $LogDir$ +DefVar $ProductId$ +DefVar $MinimumSpace$ +DefVar $InstallDir$ +DefVar $ExitCode$ +DefVar $LicenseRequired$ +DefVar $LicenseKey$ +DefVar $LicensePool$ + +Set $LogDir$ = "%SystemDrive%\opsi.org\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$ = "opsi-template" +Set $MinimumSpace$ = "1 MB" +; the path were we find the product after the installation +Set $InstallDir$ = "%ProgramFiles32Dir%\" +Set $LicenseRequired$ = "false" +Set $LicensePool$ = "p_" + $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 + comment "Show product picture" + ShowBitmap "%ScriptPath%\" + $ProductId$ + ".png" $ProductId$ + + if FileExists("%ScriptPath%\delsub32.ins") + comment "Start uninstall sub section" + Sub "%ScriptPath%\delsub32.ins" + endif + + Message "Installing " + $ProductId$ + " ..." + + if $LicenseRequired$ = "true" + comment "Licensing required, reserve license and get license key" + Sub_get_licensekey + endif + + comment "Start setup program" + ChangeDirectory "%SCRIPTPATH%" + Winbatch_install + Sub_check_exitcode + + comment "Copy files" + Files_install /32Bit + + comment "Patch Registry" + Registry_install /32Bit + + comment "Create shortcuts" + LinkFolder_install + +endif + +[Winbatch_install] +; Choose one of the following examples as basis for your installation +; You can use $LicenseKey$ var to pass a license key to the installer +; +; === Nullsoft Scriptable Install System ================================================================ +; "%ScriptPath%\Setup.exe" /S +; +; === MSI package ======================================================================================= +; You may use the parameter PIDKEY=$Licensekey$ +; msiexec /i "%ScriptPath%\some.msi" /l* "$LogDir$\$ProductId$.install_log.txt" /qb! ALLUSERS=1 REBOOT=ReallySuppress +; +; === InstallShield + MSI===================================================================================== +; Attention: The path to the log file should not contain any whitespaces +; "%ScriptPath%\setup.exe" /s /v" /l* $LogDir$\$ProductId$.install_log.txt /qb! ALLUSERS=1 REBOOT=ReallySuppress" +; "%ScriptPath%\setup.exe" /s /v" /qb! ALLUSERS=2 REBOOT=ReallySuppress" +; +; === InstallShield ===================================================================================== +; Create setup.iss answer file by running: setup.exe /r /f1"c:\setup.iss" +; "%ScriptPath%\setup.exe" /s /sms /f1"%ScriptPath%\setup.iss" /f2"$LogDir$\$ProductId$.install_log.txt" +; +; === Inno Setup ======================================================================================== +; http://unattended.sourceforge.net/InnoSetup_Switches_ExitCodes.html +; You may create setup answer file by: setup.exe /SAVEINF="filename" +; You may use an answer file by the parameter /LOADINF="filename" +; "%ScriptPath%\setup.exe" /sp- /silent /norestart /nocancel /SUPPRESSMSGBOXES + +[Files_install] +; Example of recursively copying some files into the installation directory: +; +; copy -s "%ScriptPath%\files\*.*" "$InstallDir$" + +[Registry_install] +; Example of setting some values of an registry key: +; +; openkey [HKEY_LOCAL_MACHINE\Software\$ProductId$] +; set "name1" = "some string value" +; set "name2" = REG_DWORD:0001 +; set "name3" = REG_BINARY:00 af 99 cd + +[LinkFolder_install] +; Example of deleting a folder from AllUsers startmenu: +; +; set_basefolder common_programs +; delete_subfolder $ProductId$ +; +; Example of creating an shortcut to the installed exe in AllUsers startmenu: +; +; set_basefolder common_programs +; set_subfolder $ProductId$ +; +; set_link +; name: $ProductId$ +; target: +; parameters: +; working_dir: $InstallDir$ +; icon_file: +; icon_index: +; end_link +; +; Example of creating an shortcut to the installed exe on AllUsers desktop: +; +; set_basefolder common_desktopdirectory +; set_subfolder "" +; +; set_link +; name: $ProductId$ +; target: +; parameters: +; working_dir: $InstallDir$ +; icon_file: +; icon_index: 2 +; end_link + + diff --git a/sample/4.0.2/opsi-template/CLIENT_DATA/uninstall32.ins b/sample/4.0.2/opsi-template/CLIENT_DATA/uninstall32.ins new file mode 100644 index 0000000..6e184b8 --- /dev/null +++ b/sample/4.0.2/opsi-template/CLIENT_DATA/uninstall32.ins @@ -0,0 +1,58 @@ +; 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/en/credits/ + +[Actions] +requiredWinstVersion >= "4.11.2.6" + +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$ = "opsi-template" +Set $InstallDir$ = "%ProgramFiles32Dir%\" +Set $LicenseRequired$ = "false" +Set $LicensePool$ = "p_" + $ProductId$ +; ---------------------------------------------------------------- + + +comment "Show product picture" +ShowBitmap "%ScriptPath%\" + $ProductId$ + ".png" $ProductId$ + +Message "Uninstalling " + $ProductId$ + " ..." + +if FileExists("%ScriptPath%\delsub32.ins") + comment "Start uninstall sub section" + Sub "%ScriptPath%\delsub32.ins" +endif + +if $LicenseRequired$ = "true" + comment "Licensing required, free license used" + Sub_free_license +endif + +[Sub_free_license] +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$) + diff --git a/sample/4.0.2/opsi-template/CLIENT_DATA/uninstall3264.ins b/sample/4.0.2/opsi-template/CLIENT_DATA/uninstall3264.ins new file mode 100644 index 0000000..396a593 --- /dev/null +++ b/sample/4.0.2/opsi-template/CLIENT_DATA/uninstall3264.ins @@ -0,0 +1,69 @@ +; 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/en/credits/ + +[Actions] +requiredWinstVersion >= "4.11.2.6" + +DefVar $MsiId32$ +DefVar $UninstallProgram32$ +DefVar $MsiId64$ +DefVar $UninstallProgram64$ +DefVar $LogDir$ +DefVar $ExitCode$ +DefVar $ProductId$ +DefVar $InstallDir32$ +DefVar $InstallDir64$ +DefVar $LicenseRequired$ +DefVar $LicensePool$ +DefVar $INST_SystemType$ +DefVar $INST_architecture$ + +Set $INST_SystemType$ = GetSystemType +set $INST_architecture$ = GetProductProperty("install_architecture","system specific") + + +Set $LogDir$ = "%SystemDrive%\tmp" + +; ---------------------------------------------------------------- +; - Please edit the following values - +; ---------------------------------------------------------------- +Set $ProductId$ = "opsi-template" +Set $InstallDir32$ = "%ProgramFiles32Dir%\" +Set $InstallDir64$ = "%ProgramFiles64Dir%\" +Set $LicenseRequired$ = "false" +Set $LicensePool$ = "p_" + $ProductId$ +; ---------------------------------------------------------------- + + +comment "Show product picture" +ShowBitmap "%ScriptPath%\" + $ProductId$ + ".png" $ProductId$ + +Message "Uninstalling " + $ProductId$ + " ..." + +if FileExists("%ScriptPath%\delsub3264.ins") + comment "Start uninstall sub section" + Sub "%ScriptPath%\delsub3264.ins" +endif + +if $LicenseRequired$ = "true" + comment "Licensing required, free license used" + Sub_free_license +endif + +[Sub_free_license] +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$) + + diff --git a/sample/4.0.2/opsi-template/CLIENT_DATA/uninstall64.ins b/sample/4.0.2/opsi-template/CLIENT_DATA/uninstall64.ins new file mode 100644 index 0000000..fe4474e --- /dev/null +++ b/sample/4.0.2/opsi-template/CLIENT_DATA/uninstall64.ins @@ -0,0 +1,59 @@ +; 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/en/credits/ + +[Actions] +requiredWinstVersion >= "4.11.2.6" + +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$ = "opsi-template" +Set $InstallDir$ = "%ProgramFiles64Dir%\" +Set $LicenseRequired$ = "false" +Set $LicensePool$ = "p_" + $ProductId$ +; ---------------------------------------------------------------- + + +comment "Show product picture" +ShowBitmap "%ScriptPath%\" + $ProductId$ + ".png" $ProductId$ + +Message "Uninstalling " + $ProductId$ + " ..." + +if FileExists("%ScriptPath%\delsub64.ins") + comment "Start uninstall sub section" + Sub "%ScriptPath%\delsub64.ins" +endif + +if $LicenseRequired$ = "true" + comment "Licensing required, free license used" + Sub_free_license +endif + +[Sub_free_license] +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$) + + diff --git a/sample/4.0.2/opsi-template/CLIENT_DATA/uninstall_short32.opsiscript b/sample/4.0.2/opsi-template/CLIENT_DATA/uninstall_short32.opsiscript new file mode 100644 index 0000000..9f14fb1 --- /dev/null +++ b/sample/4.0.2/opsi-template/CLIENT_DATA/uninstall_short32.opsiscript @@ -0,0 +1,58 @@ +; 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/en/credits/ + +[Actions] +requiredWinstVersion >= "4.11.3.2" + +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$ = "opsi-template" +Set $InstallDir$ = "%ProgramFiles32Dir%\" +Set $LicenseRequired$ = "false" +Set $LicensePool$ = "p_" + $ProductId$ +; ---------------------------------------------------------------- + + +comment "Show product picture" +ShowBitmap "%ScriptPath%\" + $ProductId$ + ".png" $ProductId$ + +Message "Uninstalling " + $ProductId$ + " ..." + +if FileExists("%ScriptPath%\delsub_short32.opsiscript") + comment "Start uninstall sub section" + Sub "%ScriptPath%\delsub_short32.opsiscript" +endif + +if $LicenseRequired$ = "true" + comment "Licensing required, free license used" + Sub_free_license +endif + +[Sub_free_license] +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$) + diff --git a/sample/4.0.2/opsi-template/OPSI/control b/sample/4.0.2/opsi-template/OPSI/control new file mode 100644 index 0000000..e97a797 --- /dev/null +++ b/sample/4.0.2/opsi-template/OPSI/control @@ -0,0 +1,196 @@ +[Package] +version: 2 +depends: +incremental: False + +[Product] +type: localboot +id: opsi-template +name: opsi template product +description: A template for opsi products +advice: +version: 4.0.2 +priority: 0 +licenseRequired: False +productClasses: +setupScript: setup3264.ins +uninstallScript: uninstall3264.ins +updateScript: +alwaysScript: +onceScript: +customScript: +userLoginScript: login.ins + +[ProductProperty] +type: unicode +name: install_architecture +multivalue: False +editable: False +description: which architecture (32/64 bit) has to be installed +values: ["32 only", "64 only", "both", "system specific"] +default: ["system specific"] + +[Changelog] +opsi-template (4.0.2-2) stable; urgency=low + + * requiredWinstVersion >= "4.11.3.2" + * Set $LogDir$ = "%SystemDrive%\opsi.org\tmp" + * new: *_short32.opsiscript scripts with includes + * winbatch_install: changed inno-setup example: default without answer file + * winbatch_uninstall: changed NSIS example: /WaitForProcessEnding "Au_.exe" + + -- detlef oertel Fri, 03 Aug 2012 16:01:53 +0200 + +opsi-template (4.0.2-1) stable; urgency=low + + * requiredWinstVersion >= "4.11.2.6" + * added ChangeDirectory "%SCRIPTPATH%" + * changed delete to del (in delsub) + * changed at msi to ALLUSERS=1 + + -- detlef oertel Mon, 02 Jun 2012 16:01:53 +0200 + +opsi-template (4.0.1-5) stable; urgency=low + + * added /nocancel at Inno example + * added login.ins for 'user profile management' + * moved changelog to control file + + -- detlef oertel Mon, 02 Jan 2012 16:01:53 +0200 + + +opsi-template (4.0.1-4) stable; urgency=low + + * removed uncommented test for installation success via registry entries + + -- detlef oertel Thu, 30 Nov 2011 16:01:53 +0200 + + +opsi-template (4.0.1-3) stable; urgency=low + + * changed setup.ins to setup3264.ins (and so on ..) + * added /SUPPRESSMSGBOXES at Inno example + + -- detlef oertel Thu, 06 Oct 2011 16:01:53 +0200 + + +opsi-template (4.0.1-2) stable; urgency=low + + * bugfix: removed '\\' by '\' in showBitMap calls + + -- detlef oertel Tue, 02 Aug 2011 16:01:53 +0200 + + +opsi-template (4.0.1-1) stable; urgency=low + + * bugfix: delsub.ins: Set $UninstallProgram64$ = $InstallDir64$ + "\uninstall.exe" + + -- detlef oertel Wed, 18 Jan 2011 16:01:53 +0200 + + +opsi-template (4.0-1) stable; urgency=low + + * requires opsi.winst 4.10.8 + * default: 32Bit Version + * additional: 64Bit Version + * additional: 32/64Bit Version + + -- detlef oertel Wed, 18 Jan 2011 16:01:53 +0200 + + +opsi-template (1.0-20) stable; urgency=low + + * removed EnvVar("temp") + * all variable definitions at top + * new loglevel + * removed $NewExe$ + * more infos for inno setup + * removed number at showBitmap + * Initial section removed + * example for $installDir$ changed + + -- detlef oertel Wed, 14 Apr 2010 16:01:53 +0200 + + +opsi-template (1.0-19) stable; urgency=low + + * adding 'Installshield + MSI' to the Winbatch_install section + * changing to 'if $LicenseRequired$ = "true"' from 'if not ($LicenseRequired$ = "false")' + * changed from .ins to 'setup.ins' + + -- detlef oertel Tue, 26 Jan 2010 16:01:53 +0200 + + +opsi-template (1.0-18) stable; urgency=low + * bug fix in the successful request (comment out) + +opsi-template (1.0-17) stable; urgency=low + + * bug fix in delsub.ins : deleting a shortcut from AllUsers desktop + + -- detlef oertel Mon, 28 Sep 2009 16:01:53 +0200 + +opsi-template (1.0-16) stable; urgency=low + + * Added some examples for other installers + * Some cleanups + * More examples in other sections + + -- Jan Schneider Fri, 18 Sep 2009 13:01:53 +0200 + +opsi-template (1.0-15) stable; urgency=low + + * bugfix for delopsi-template + + -- Rupert Roeder Mon, 06 Jun 2009 11:15:00 +0100 + +opsi-template (1.0-14) stable; urgency=low + + * bugfix for delopsi-template + + -- Rupert Roeder Tue, 26 May 2009 11:15:00 +0100 + +opsi-template (1.0-13) stable; urgency=low + + * some corrections + + -- Rupert Roeder Tue, 26 May 2009 11:15:00 +0100 + +opsi-template (1.0-12) stable; urgency=low + + * code for license management added + + -- Rupert Roeder Tue, 19 May 2009 11:15:00 +0100 + +opsi-template (1.0-11) stable; urgency=low + + * sub_check_exitcode modified + * sub_check_exitcode 1641 added + * sub_check_exitcode integrated in delsub.ins + + -- Detlef Oertel Mon, 18 May 2009 14:15:00 +0100 + +opsi-template (1.0-10) stable; urgency=low + + * modified test on exit code added 3010 success restart required + -- bardo wolf + +opsi-template (1.0-9) stable; urgency=low + + * renamed from softprod to opsi-template + * added test on exit code + + -- Detlef Oertel Fri, 13 Mar 2009 12:35:32 +0100 + +opsi-template (1.0-8) stable; urgency=low + + * comment Anweisungen + * delsub: + Section: Files_uninstall + ;something like (don't forget the trailing backslash) + ;delete -sf "$InstallDir$\" + + -- Detlef Oertel Wed, 5 Nov 2008 17:00:00 +0100 + + + diff --git a/sample/product-template/OPSI/postinst b/sample/4.0.2/opsi-template/OPSI/postinst similarity index 100% rename from sample/product-template/OPSI/postinst rename to sample/4.0.2/opsi-template/OPSI/postinst diff --git a/sample/product-template/OPSI/preinst b/sample/4.0.2/opsi-template/OPSI/preinst similarity index 100% rename from sample/product-template/OPSI/preinst rename to sample/4.0.2/opsi-template/OPSI/preinst diff --git a/sample/product-template/CLIENT_DATA/delsub32.ins b/sample/old/CLIENT_DATA/delsub32.ins similarity index 100% rename from sample/product-template/CLIENT_DATA/delsub32.ins rename to sample/old/CLIENT_DATA/delsub32.ins diff --git a/sample/product-template/CLIENT_DATA/delsub3264.ins b/sample/old/CLIENT_DATA/delsub3264.ins similarity index 100% rename from sample/product-template/CLIENT_DATA/delsub3264.ins rename to sample/old/CLIENT_DATA/delsub3264.ins diff --git a/sample/product-template/CLIENT_DATA/delsub64.ins b/sample/old/CLIENT_DATA/delsub64.ins similarity index 100% rename from sample/product-template/CLIENT_DATA/delsub64.ins rename to sample/old/CLIENT_DATA/delsub64.ins diff --git a/sample/product-template/CLIENT_DATA/opsi-PN.ini b/sample/old/CLIENT_DATA/opsi-PN.ini similarity index 100% rename from sample/product-template/CLIENT_DATA/opsi-PN.ini rename to sample/old/CLIENT_DATA/opsi-PN.ini diff --git a/sample/product-template/CLIENT_DATA/setup32.ins b/sample/old/CLIENT_DATA/setup32.ins similarity index 100% rename from sample/product-template/CLIENT_DATA/setup32.ins rename to sample/old/CLIENT_DATA/setup32.ins diff --git a/sample/product-template/CLIENT_DATA/setup3264.ins b/sample/old/CLIENT_DATA/setup3264.ins similarity index 100% rename from sample/product-template/CLIENT_DATA/setup3264.ins rename to sample/old/CLIENT_DATA/setup3264.ins diff --git a/sample/product-template/CLIENT_DATA/setup64.ins b/sample/old/CLIENT_DATA/setup64.ins similarity index 100% rename from sample/product-template/CLIENT_DATA/setup64.ins rename to sample/old/CLIENT_DATA/setup64.ins diff --git a/sample/product-template/CLIENT_DATA/uninstall32.ins b/sample/old/CLIENT_DATA/uninstall32.ins similarity index 100% rename from sample/product-template/CLIENT_DATA/uninstall32.ins rename to sample/old/CLIENT_DATA/uninstall32.ins diff --git a/sample/product-template/CLIENT_DATA/uninstall3264.ins b/sample/old/CLIENT_DATA/uninstall3264.ins similarity index 100% rename from sample/product-template/CLIENT_DATA/uninstall3264.ins rename to sample/old/CLIENT_DATA/uninstall3264.ins diff --git a/sample/product-template/CLIENT_DATA/uninstall64.ins b/sample/old/CLIENT_DATA/uninstall64.ins similarity index 100% rename from sample/product-template/CLIENT_DATA/uninstall64.ins rename to sample/old/CLIENT_DATA/uninstall64.ins diff --git a/sample/product-template/OPSI/changelog.txt b/sample/old/OPSI/changelog.txt similarity index 100% rename from sample/product-template/OPSI/changelog.txt rename to sample/old/OPSI/changelog.txt diff --git a/sample/product-template/OPSI/control b/sample/old/OPSI/control similarity index 100% rename from sample/product-template/OPSI/control rename to sample/old/OPSI/control diff --git a/sample/old/OPSI/postinst b/sample/old/OPSI/postinst new file mode 100644 index 0000000..a8e33fc --- /dev/null +++ b/sample/old/OPSI/postinst @@ -0,0 +1,9 @@ +#! /bin/sh +# +# postinst script for softprod +# This script executes after unpacking files from that archive and registering the product at the server. +# +# The following environment variables can be used to obtain information about the current installation: +# PRODUCT_ID: id of the current product +# CLIENT_DATA_DIR: directory which contains the installed client data +# diff --git a/sample/old/OPSI/preinst b/sample/old/OPSI/preinst new file mode 100644 index 0000000..15a5320 --- /dev/null +++ b/sample/old/OPSI/preinst @@ -0,0 +1,9 @@ +#! /bin/sh +# +# preinst script for softprod +# This script executes before that package will be unpacked from its archive file. +# +# The following environment variables can be used to obtain information about the current installation: +# PRODUCT_ID: id of the current product +# CLIENT_DATA_DIR: directory where client data will be installed +# diff --git a/sample/product-template/Testing.txt b/sample/old/Testing.txt similarity index 100% rename from sample/product-template/Testing.txt rename to sample/old/Testing.txt diff --git a/sample/product-template/builder-product.cfg b/sample/old/builder-product.cfg similarity index 100% rename from sample/product-template/builder-product.cfg rename to sample/old/builder-product.cfg diff --git a/sample/product-template/builder-targets-cb.sh b/sample/old/builder-targets-cb.sh similarity index 100% rename from sample/product-template/builder-targets-cb.sh rename to sample/old/builder-targets-cb.sh