add new samples and rename OPSI_INI_NAME to OPSI_INI_OPTION (ini typical naming)
| @@ -216,6 +216,9 @@ builder_create() { | |||||||
|   local ini_file=${INST_DIR}/CLIENT_DATA/opsi-$PN.ini |   local ini_file=${INST_DIR}/CLIENT_DATA/opsi-$PN.ini | ||||||
|   write_ini_file  $ini_file $var_file |   write_ini_file  $ini_file $var_file | ||||||
|  |  | ||||||
|  |   echo ";Hardcoded opsi vars" >>$var_file | ||||||
|  |   echo "Set    \$ProductId\$ = \"$PN\""  >>$var_file | ||||||
|  |  | ||||||
|   # add the new vaiables to all *.ins winst files |   # add the new vaiables to all *.ins winst files | ||||||
|   for inst_file in `find ${INST_DIR}/CLIENT_DATA -type f -name "*.ins"` ; do |   for inst_file in `find ${INST_DIR}/CLIENT_DATA -type f -name "*.ins"` ; do | ||||||
|     sed -i -e "/@@BUILDER_VARIABLES@@/ { |     sed -i -e "/@@BUILDER_VARIABLES@@/ { | ||||||
|   | |||||||
| @@ -226,6 +226,8 @@ create_winst_varfile() { | |||||||
|   local var_file=$1 |   local var_file=$1 | ||||||
|    |    | ||||||
|   echo -n >$var_file |   echo -n >$var_file | ||||||
|  |   echo "; Opsi Builder Variables" >>$var_file | ||||||
|  |   echo >>$var_file | ||||||
|   for (( i = 0 ; i < ${#DL_SOURCE[@]} ; i++ )) ; do |   for (( i = 0 ; i < ${#DL_SOURCE[@]} ; i++ )) ; do | ||||||
|     if [ -z ${DL_WINST_NAME[$i]} ] ; then continue ; fi |     if [ -z ${DL_WINST_NAME[$i]} ] ; then continue ; fi | ||||||
|      |      | ||||||
| @@ -316,11 +318,13 @@ write_ini_file() { | |||||||
|     $CMD_iniset $ini_file --COMMON ${var}="${!var}" |     $CMD_iniset $ini_file --COMMON ${var}="${!var}" | ||||||
|   done |   done | ||||||
|    |    | ||||||
|  |   echo "; Opsi INI File Variables" >>$var_file | ||||||
|  |   echo >>$var_file | ||||||
|   # publish custom variables |   # publish custom variables | ||||||
|   for (( i = 0 ; i < ${#OPSI_INI_NAME[@]} ; i++ )) ; do |   for (( i = 0 ; i < ${#OPSI_INI_OPTION[@]} ; i++ )) ; do | ||||||
|     $CMD_iniset $ini_file --${OPSI_INI_SECTION[$i]} ${OPSI_INI_NAME[$i]}="${OPSI_INI_VALUE[$i]}" |     $CMD_iniset $ini_file --${OPSI_INI_SECTION[$i]} ${OPSI_INI_OPTION[$i]}="${OPSI_INI_VALUE[$i]}" | ||||||
|     echo "DefVar \$${OPSI_INI_NAME[$i]}\$" >>$var_file |     echo "DefVar \$${OPSI_INI_OPTION[$i]}\$" >>$var_file | ||||||
|     echo "Set    \$${OPSI_INI_NAME[$i]}\$ = \"${OPSI_INI_VALUE[$i]}\""  >>$var_file |     echo "Set    \$${OPSI_INI_OPTION[$i]}\$ = \"${OPSI_INI_VALUE[$i]}\""  >>$var_file | ||||||
|   done |   done | ||||||
|  |  | ||||||
|   echo >>$var_file |   echo >>$var_file | ||||||
|   | |||||||
							
								
								
									
										105
									
								
								sample/All/CLIENT_DATA/delsub32.ins
									
									
									
									
									
										Normal file
									
								
							
							
						
						| @@ -0,0 +1,105 @@ | |||||||
|  | ; 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 $UninstallProgram$ = $InstallDir$ + "\uninstall.exe" | ||||||
|  | Set $IniFile$ = $InstallDir$ + "\opsi-" + $ProductId$ + ".ini" | ||||||
|  |  | ||||||
|  | Message "Uninstalling " + $ProductId$ + " ..." | ||||||
|  |  | ||||||
|  | if FileExists($UninstallProgram$) | ||||||
|  | 	comment "Uninstall program found, starting uninstall" | ||||||
|  | 	Winbatch_uninstall | ||||||
|  | 	sub_check_exitcode | ||||||
|  | endif | ||||||
|  | if FileExists($IniFile$) | ||||||
|  |         Set $MsiIdOld$ = GetValueFromInifile($IniFile$,"X86","MsiId","{XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX}") | ||||||
|  |         if not (GetRegistryStringValue32("[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\" + $MsiIdOld$ + "] DisplayName") = "") | ||||||
|  |                 comment "Old MSI id " + $MsiIdOld$ + " found in registry, starting msiexec to uninstall old version" | ||||||
|  |                 Winbatch_uninstall_msi_old | ||||||
|  |                 sub_check_exitcode | ||||||
|  |         endif | ||||||
|  | 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 | ||||||
|  |  | ||||||
							
								
								
									
										161
									
								
								sample/All/CLIENT_DATA/delsub3264.ins
									
									
									
									
									
										Normal file
									
								
							
							
						
						| @@ -0,0 +1,161 @@ | |||||||
|  | ; 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 $UninstallProgram32$ = $InstallDir32$ + "\uninstall.exe" | ||||||
|  | Set $IniFile32$ = $InstallDir32$ + "\opsi-" + $ProductId$ + ".ini" | ||||||
|  |  | ||||||
|  | Set $UninstallProgram64$ = $InstallDir64$ + "\uninstall.exe" | ||||||
|  | Set $IniFile64$ = $InstallDir64$ + "\opsi-" + $ProductId$ + ".ini" | ||||||
|  |  | ||||||
|  | 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 FileExists($IniFile32$) | ||||||
|  |                 Set $MsiIdOld32$ = GetValueFromInifile($IniFile32$,"X86","MsiId32","{XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX}") | ||||||
|  |                 if not (GetRegistryStringValue32("[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\" + $MsiIdOld32$ + "] DisplayName") = "") | ||||||
|  |                         comment "Old MSI id " + $MsiIdOld32$ + " found in registry, starting msiexec to uninstall old version" | ||||||
|  |                         Winbatch_uninstall_msi_old_32 | ||||||
|  |                         sub_check_exitcode | ||||||
|  |                 endif | ||||||
|  |         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 FileExists($IniFile64$) | ||||||
|  |                 Set $MsiIdOld64$ = GetValueFromInifile($IniFile64$,"X86_64","MsiId64","{XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX}") | ||||||
|  |                 if not (GetRegistryStringValue64("[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\" + $MsiIdOld64$ + "] DisplayName") = "") | ||||||
|  |                         comment "Old MSI id " + $MsiIdOld64$ + " found in registry, starting msiexec to uninstall old version" | ||||||
|  |                         Winbatch_uninstall_msi_old_64 | ||||||
|  |                         sub_check_exitcode | ||||||
|  |                 endif | ||||||
|  |         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 | ||||||
|  |  | ||||||
							
								
								
									
										105
									
								
								sample/All/CLIENT_DATA/delsub64.ins
									
									
									
									
									
										Normal file
									
								
							
							
						
						| @@ -0,0 +1,105 @@ | |||||||
|  | ; 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 $UninstallProgram$ = $InstallDir$ + "\uninstall.exe" | ||||||
|  | Set $IniFile$ = $InstallDir$ + "\opsi-" + $ProductId$ + ".ini" | ||||||
|  |  | ||||||
|  | Message "Uninstalling " + $ProductId$ + " ..." | ||||||
|  |  | ||||||
|  | if FileExists($UninstallProgram$) | ||||||
|  | 	comment "Uninstall program found, starting uninstall" | ||||||
|  | 	Winbatch_uninstall | ||||||
|  | 	sub_check_exitcode | ||||||
|  | endif | ||||||
|  | if FileExists($IniFile$) | ||||||
|  |         Set $MsiIdOld$ = GetValueFromInifile($IniFile$,"X86","MsiId","{XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX}") | ||||||
|  |         if not (GetRegistryStringValue32("[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\" + $MsiIdOld$ + "] DisplayName") = "") | ||||||
|  |                 comment "Old MSI id " + $MsiIdOld$ + " found in registry, starting msiexec to uninstall old version" | ||||||
|  |                 Winbatch_uninstall_msi_old | ||||||
|  |                 sub_check_exitcode | ||||||
|  |         endif | ||||||
|  | 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 | ||||||
|  |  | ||||||
							
								
								
									
										24
									
								
								sample/All/CLIENT_DATA/login.ins
									
									
									
									
									
										Normal file
									
								
							
							
						
						| @@ -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" | ||||||
							
								
								
									
										11
									
								
								sample/All/CLIENT_DATA/opsi-PN.ini
									
									
									
									
									
										Normal file
									
								
							
							
						
						| @@ -0,0 +1,11 @@ | |||||||
|  | [X86] | ||||||
|  | MsiId={XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX} | ||||||
|  | MsiId32={XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX} | ||||||
|  |  | ||||||
|  | [X86_64] | ||||||
|  | MsiId={XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX} | ||||||
|  | MsiId64={XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX} | ||||||
|  |  | ||||||
|  | [COMMON] | ||||||
|  | PN=name | ||||||
|  | VERSION=version | ||||||
							
								
								
									
										228
									
								
								sample/All/CLIENT_DATA/setup32.ins
									
									
									
									
									
										Normal file
									
								
							
							
						
						| @@ -0,0 +1,228 @@ | |||||||
|  | ; 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 $MsiIdOld$ | ||||||
|  | DefVar $UninstallProgram$ | ||||||
|  | DefVar $IniFile$ | ||||||
|  | DefVar $IniCfgFile$ | ||||||
|  | DefVar $LogDir$ | ||||||
|  | DefVar $ProductId$   | ||||||
|  | DefVar $MinimumSpace$ | ||||||
|  | DefVar $InstallDir$ | ||||||
|  | DefVar $ExitCode$ | ||||||
|  | DefVar $LicenseRequired$ | ||||||
|  | DefVar $LicenseKey$ | ||||||
|  | DefVar $LicensePool$ | ||||||
|  |  | ||||||
|  | Set $LogDir$ = "%SystemDrive%\tmp" | ||||||
|  |  | ||||||
|  | ; The token BUILDER_VARIABLES will be replaced by opsi-builder.sh | ||||||
|  | ; and adds the following variables: | ||||||
|  | ;   from builder-product.cfg :  all variables definded by attribute WINST[index] | ||||||
|  | ;   from builder-product.cfg :  VENDOR PN VERSION RELEASE PRIORITY ADVICE TYPE    | ||||||
|  | ;   from opsi-builder.cfg    :  CREATOR_TAG CREATOR_NAME CREATOR_EMAIL            | ||||||
|  | ;   auto generated winst-variables | ||||||
|  | ;         $IconFile$: path to product picture | ||||||
|  | ; | ||||||
|  | @@BUILDER_VARIABLES@@ | ||||||
|  |  | ||||||
|  | ; ---------------------------------------------------------------- | ||||||
|  | ; - 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 $MinimumSpace$    = "1 MB" | ||||||
|  | ; the path were we find the product after the installation | ||||||
|  | Set $InstallDir$      = "%ProgramFiles32Dir%\<path to the product>" | ||||||
|  | Set $LicenseRequired$ = "false" | ||||||
|  | Set $LicensePool$     = "p_" + $ProductId$ | ||||||
|  | ; ---------------------------------------------------------------- | ||||||
|  |  | ||||||
|  | Set $IniCfgFile$ = "%ScriptPath%\opsi-" + $ProductId$ + ".ini" | ||||||
|  |  | ||||||
|  | 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] | ||||||
|  | ; copy the ini file to the InstallDir | ||||||
|  | copy "$IniCfgFile$" "$InstallDir$" | ||||||
|  |  | ||||||
|  | ; 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: <path to the program> | ||||||
|  | ; 	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: <path to the program> | ||||||
|  | ; 	parameters: <some_param> | ||||||
|  | ; 	working_dir: $InstallDir$ | ||||||
|  | ; 	icon_file: <path to 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 | ||||||
|  |  | ||||||
							
								
								
									
										281
									
								
								sample/All/CLIENT_DATA/setup3264.ins
									
									
									
									
									
										Normal file
									
								
							
							
						
						| @@ -0,0 +1,281 @@ | |||||||
|  | ; 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 $MsiIdOld32$ | ||||||
|  | DefVar $UninstallProgram32$ | ||||||
|  | DefVar $IniFile32$ | ||||||
|  | DefVar $MsiIdOld64$ | ||||||
|  | DefVar $UninstallProgram64$ | ||||||
|  | DefVar $IniFile64$ | ||||||
|  | DefVar $IniCfgFile$ | ||||||
|  | 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" | ||||||
|  |  | ||||||
|  | ; The token BUILDER_VARIABLES will be replaced by opsi-builder.sh | ||||||
|  | ; and adds the following variables: | ||||||
|  | ;   from builder-product.cfg :  all variables definded by attribute WINST[index] | ||||||
|  | ;   from builder-product.cfg :  VENDOR PN VERSION RELEASE PRIORITY ADVICE TYPE    | ||||||
|  | ;   from opsi-builder.cfg    :  CREATOR_TAG CREATOR_NAME CREATOR_EMAIL            | ||||||
|  | ;   auto generated winst-variables | ||||||
|  | ;         $IconFile$: path to product picture | ||||||
|  | ; | ||||||
|  | @@BUILDER_VARIABLES@@ | ||||||
|  |  | ||||||
|  | ; ---------------------------------------------------------------- | ||||||
|  | ; - 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 $MinimumSpace$    = "1 MB" | ||||||
|  | ; the path were we find the product after the installation | ||||||
|  | Set $InstallDir32$      = "%ProgramFiles32Dir%\<path to the product>" | ||||||
|  | Set $InstallDir64$      = "%ProgramFiles64Dir%\<path to the product>" | ||||||
|  | Set $LicenseRequired$ = "false" | ||||||
|  | Set $LicensePool$     = "p_" + $ProductId$ | ||||||
|  | ; ---------------------------------------------------------------- | ||||||
|  |  | ||||||
|  | Set $IniCfgFile$ = "%ScriptPath%\opsi-" + $ProductId$ + ".ini" | ||||||
|  |  | ||||||
|  | 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] | ||||||
|  | ; copy the ini file to the InstallDir | ||||||
|  | copy "$IniCfgFile$" "$InstallDir32$" | ||||||
|  |  | ||||||
|  | ; 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] | ||||||
|  | ; copy the ini file to the InstallDir | ||||||
|  | copy "$IniCfgFile$" "$InstallDir64$" | ||||||
|  |  | ||||||
|  | ; 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: <path to the program> | ||||||
|  | ; 	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: <path to the program> | ||||||
|  | ; 	parameters: <some_param> | ||||||
|  | ; 	working_dir: $InstallDir$ | ||||||
|  | ; 	icon_file: <path to 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 | ||||||
|  |  | ||||||
							
								
								
									
										228
									
								
								sample/All/CLIENT_DATA/setup64.ins
									
									
									
									
									
										Normal file
									
								
							
							
						
						| @@ -0,0 +1,228 @@ | |||||||
|  | ; 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 $MsiIdOld$ | ||||||
|  | DefVar $UninstallProgram$ | ||||||
|  | DefVar $IniFile$ | ||||||
|  | DefVar $IniCfgFile$ | ||||||
|  | DefVar $LogDir$ | ||||||
|  | DefVar $ProductId$   | ||||||
|  | DefVar $MinimumSpace$ | ||||||
|  | DefVar $InstallDir$ | ||||||
|  | DefVar $ExitCode$ | ||||||
|  | DefVar $LicenseRequired$ | ||||||
|  | DefVar $LicenseKey$ | ||||||
|  | DefVar $LicensePool$ | ||||||
|  |  | ||||||
|  | Set $LogDir$ = "%SystemDrive%\tmp" | ||||||
|  |  | ||||||
|  | ; The token BUILDER_VARIABLES will be replaced by opsi-builder.sh | ||||||
|  | ; and adds the following variables: | ||||||
|  | ;   from builder-product.cfg :  all variables definded by attribute WINST[index] | ||||||
|  | ;   from builder-product.cfg :  VENDOR PN VERSION RELEASE PRIORITY ADVICE TYPE    | ||||||
|  | ;   from opsi-builder.cfg    :  CREATOR_TAG CREATOR_NAME CREATOR_EMAIL            | ||||||
|  | ;   auto generated winst-variables | ||||||
|  | ;         $IconFile$: path to product picture | ||||||
|  | ; | ||||||
|  | @@BUILDER_VARIABLES@@ | ||||||
|  |  | ||||||
|  | ; ---------------------------------------------------------------- | ||||||
|  | ; - 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 $MinimumSpace$    = "1 MB" | ||||||
|  | ; the path were we find the product after the installation | ||||||
|  | Set $InstallDir$      = "%ProgramFiles64Dir%\<path to the product>" | ||||||
|  | Set $LicenseRequired$ = "false" | ||||||
|  | Set $LicensePool$     = "p_" + $ProductId$ | ||||||
|  | ; ---------------------------------------------------------------- | ||||||
|  |  | ||||||
|  | Set $IniCfgFile$ = "%ScriptPath%\opsi-" + $ProductId$ + ".ini" | ||||||
|  |  | ||||||
|  | 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] | ||||||
|  | ; copy the ini file to the InstallDir | ||||||
|  | copy "$IniCfgFile$" "$InstallDir$" | ||||||
|  |  | ||||||
|  | ; 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: <path to the program> | ||||||
|  | ; 	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: <path to the program> | ||||||
|  | ; 	parameters: <some_param> | ||||||
|  | ; 	working_dir: $InstallDir$ | ||||||
|  | ; 	icon_file: <path to 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 | ||||||
|  |  | ||||||
							
								
								
									
										70
									
								
								sample/All/CLIENT_DATA/uninstall32.ins
									
									
									
									
									
										Normal file
									
								
							
							
						
						| @@ -0,0 +1,70 @@ | |||||||
|  | ; 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 $MsiIdOld$ | ||||||
|  | DefVar $UninstallProgram$ | ||||||
|  | DefVar $IniFile$ | ||||||
|  | DefVar $IniCfgFile$ | ||||||
|  | DefVar $LogDir$ | ||||||
|  | DefVar $ExitCode$ | ||||||
|  | DefVar $ProductId$ | ||||||
|  | DefVar $InstallDir$ | ||||||
|  | DefVar $LicenseRequired$ | ||||||
|  | DefVar $LicensePool$ | ||||||
|  |  | ||||||
|  | Set $LogDir$ = "%SystemDrive%\tmp" | ||||||
|  |  | ||||||
|  | ; The token BUILDER_VARIABLES will be replaced by opsi-builder.sh | ||||||
|  | ; and adds the following variables: | ||||||
|  | ;   from builder-product.cfg :  all variables definded by attribute WINST[index] | ||||||
|  | ;   from builder-product.cfg :  VENDOR PN VERSION RELEASE PRIORITY ADVICE TYPE    | ||||||
|  | ;   from opsi-builder.cfg    :  CREATOR_TAG CREATOR_NAME CREATOR_EMAIL            | ||||||
|  | ;   auto generated winst-variables | ||||||
|  | ;         $IconFile$: path to product picture | ||||||
|  | ; | ||||||
|  | @@BUILDER_VARIABLES@@ | ||||||
|  |  | ||||||
|  | ; ---------------------------------------------------------------- | ||||||
|  | ; - Please edit the following values                             - | ||||||
|  | ; ---------------------------------------------------------------- | ||||||
|  | Set $InstallDir$      = "%ProgramFiles32Dir%\<path to the product>" | ||||||
|  | Set $LicenseRequired$ = "false" | ||||||
|  | Set $LicensePool$     = "p_" + $ProductId$ | ||||||
|  | ; ---------------------------------------------------------------- | ||||||
|  |  | ||||||
|  | Set $IniCfgFile$ = "%ScriptPath%\opsi-" + $ProductId$ + ".ini" | ||||||
|  |  | ||||||
|  | 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$) | ||||||
|  |  | ||||||
							
								
								
									
										81
									
								
								sample/All/CLIENT_DATA/uninstall3264.ins
									
									
									
									
									
										Normal file
									
								
							
							
						
						| @@ -0,0 +1,81 @@ | |||||||
|  | ; 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 $MsiIdOld32$ | ||||||
|  | DefVar $UninstallProgram32$ | ||||||
|  | DefVar $IniFile32$ | ||||||
|  | DefVar $MsiIdOld64$ | ||||||
|  | DefVar $UninstallProgram64$ | ||||||
|  | DefVar $IniFile64$ | ||||||
|  | DefVar $IniCfgFile$ | ||||||
|  | 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" | ||||||
|  |  | ||||||
|  | ; The token BUILDER_VARIABLES will be replaced by opsi-builder.sh | ||||||
|  | ; and adds the following variables: | ||||||
|  | ;   from builder-product.cfg :  all variables definded by attribute WINST[index] | ||||||
|  | ;   from builder-product.cfg :  VENDOR PN VERSION RELEASE PRIORITY ADVICE TYPE    | ||||||
|  | ;   from opsi-builder.cfg    :  CREATOR_TAG CREATOR_NAME CREATOR_EMAIL            | ||||||
|  | ;   auto generated winst-variables | ||||||
|  | ;         $IconFile$: path to product picture | ||||||
|  | ; | ||||||
|  | @@BUILDER_VARIABLES@@ | ||||||
|  |  | ||||||
|  | ; ---------------------------------------------------------------- | ||||||
|  | ; - Please edit the following values                             - | ||||||
|  | ; ---------------------------------------------------------------- | ||||||
|  | Set $InstallDir32$    = "%ProgramFiles32Dir%\<path to the product>" | ||||||
|  | Set $InstallDir64$    = "%ProgramFiles64Dir%\<path to the product>" | ||||||
|  | Set $LicenseRequired$ = "false" | ||||||
|  | Set $LicensePool$     = "p_" + $ProductId$ | ||||||
|  | ; ---------------------------------------------------------------- | ||||||
|  |  | ||||||
|  | Set $IniCfgFile$ = "%ScriptPath%\opsi-" + $ProductId$ + ".ini" | ||||||
|  |  | ||||||
|  | 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$) | ||||||
|  |  | ||||||
|  |  | ||||||
							
								
								
									
										71
									
								
								sample/All/CLIENT_DATA/uninstall64.ins
									
									
									
									
									
										Normal file
									
								
							
							
						
						| @@ -0,0 +1,71 @@ | |||||||
|  | ; 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 $MsiIdOld$ | ||||||
|  | DefVar $UninstallProgram$ | ||||||
|  | DefVar $IniFile$ | ||||||
|  | DefVar $IniCfgFile$ | ||||||
|  | DefVar $LogDir$ | ||||||
|  | DefVar $ExitCode$ | ||||||
|  | DefVar $ProductId$ | ||||||
|  | DefVar $InstallDir$ | ||||||
|  | DefVar $LicenseRequired$ | ||||||
|  | DefVar $LicensePool$ | ||||||
|  |  | ||||||
|  | Set $LogDir$ = "%SystemDrive%\tmp" | ||||||
|  |  | ||||||
|  | ; The token BUILDER_VARIABLES will be replaced by opsi-builder.sh | ||||||
|  | ; and adds the following variables: | ||||||
|  | ;   from builder-product.cfg :  all variables definded by attribute WINST[index] | ||||||
|  | ;   from builder-product.cfg :  VENDOR PN VERSION RELEASE PRIORITY ADVICE TYPE    | ||||||
|  | ;   from opsi-builder.cfg    :  CREATOR_TAG CREATOR_NAME CREATOR_EMAIL            | ||||||
|  | ;   auto generated winst-variables | ||||||
|  | ;         $IconFile$: path to product picture | ||||||
|  | ; | ||||||
|  | @@BUILDER_VARIABLES@@ | ||||||
|  |  | ||||||
|  | ; ---------------------------------------------------------------- | ||||||
|  | ; - Please edit the following values                             - | ||||||
|  | ; ---------------------------------------------------------------- | ||||||
|  | Set $InstallDir$      = "%ProgramFiles64Dir%\<path to the product>" | ||||||
|  | Set $LicenseRequired$ = "false" | ||||||
|  | Set $LicensePool$     = "p_" + $ProductId$ | ||||||
|  | ; ---------------------------------------------------------------- | ||||||
|  |  | ||||||
|  | Set $IniCfgFile$ = "%ScriptPath%\opsi-" + $ProductId$ + ".ini" | ||||||
|  |  | ||||||
|  | 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$) | ||||||
|  |  | ||||||
|  |  | ||||||
							
								
								
									
										39
									
								
								sample/All/OPSI/control
									
									
									
									
									
										Normal file
									
								
							
							
						
						| @@ -0,0 +1,39 @@ | |||||||
|  | [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: | ||||||
|  |  | ||||||
|  | [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"] | ||||||
|  |  | ||||||
|  | [ProductDependency] | ||||||
|  | action: setup | ||||||
|  | requiredProduct: sereby.aio | ||||||
|  | requiredStatus: installed | ||||||
|  | requirementType: before | ||||||
|  |  | ||||||
|  |  | ||||||
							
								
								
									
										28
									
								
								sample/All/Testing.txt
									
									
									
									
									
										Normal file
									
								
							
							
						
						| @@ -0,0 +1,28 @@ | |||||||
|  | *** Qualitiymanagement/Testing procedure | ||||||
|  |  | ||||||
|  | - Product: | ||||||
|  |         - Name: productname | ||||||
|  |         - Version: xxx | ||||||
|  |         - Release: yyyy | ||||||
|  |  | ||||||
|  | - Environment | ||||||
|  |         - OS: Native windows XP-32Bit installation | ||||||
|  | 	- Preinstalled packages: None (also no aio) | ||||||
|  | 	- Files used while testing: | ||||||
|  |                 File1: http://domain.de/file.ext | ||||||
|  |  | ||||||
|  | - Testing process: | ||||||
|  |         OPSI-action: | ||||||
|  |                 - Installation (without dependencies like AIO/Firefox): ?? | ||||||
|  |         Result:    | ||||||
|  |                 - File extensions related to program: ?? | ||||||
|  |                 - Start menu entry: ?? | ||||||
|  |                 - Starting/using program: viewer works, File1 is shown correctly: ?? | ||||||
|  |  | ||||||
|  |         OPSI-action: | ||||||
|  |                 - Uninstall | ||||||
|  |         Result: | ||||||
|  |                 - File extensions related to program: unrelated: ?? | ||||||
|  |                 - Start menu entry: none: ?? | ||||||
|  |  | ||||||
|  |  | ||||||
							
								
								
									
										150
									
								
								sample/All/builder-product.cfg
									
									
									
									
									
										Normal file
									
								
							
							
						
						| @@ -0,0 +1,150 @@ | |||||||
|  | ############################ | ||||||
|  | # Setup product information  | ||||||
|  | ############################ | ||||||
|  | VENDOR="itwatch.de" | ||||||
|  | PN="itwatch" | ||||||
|  | NAME="7-Zip" | ||||||
|  | DESCRIPTION="7-Zip is a file archiver with a high compression ratio." | ||||||
|  | VERSION="4.10.19" | ||||||
|  | RELEASE="3" | ||||||
|  | PRIORITY="0" | ||||||
|  | ADVICE="" | ||||||
|  |  | ||||||
|  | # TYPE - defines, if the install files are public or restricted.  | ||||||
|  | # Valid value: restricted | public | ||||||
|  | TYPE="public" | ||||||
|  |  | ||||||
|  | ################# | ||||||
|  | # Downloader (DL) object array | ||||||
|  | ################ | ||||||
|  | # | ||||||
|  | # To build the opsi-packet, some files are needed. The files are defined by a file object. | ||||||
|  | # A file object contains different attributes. All attributes (FILE, SOURCE, ..) are binded together | ||||||
|  | # using a file index.  | ||||||
|  | #  | ||||||
|  | # Target "prepare"  : Working directory INST_DIR and OUTPUT_DIR are prepared | ||||||
|  | # Target "retrieve" : the files are downloaded to the the caching storage ${DIST_CACHE_DIR}/$DL_ARCH[i]/$DL_FILE[i] | ||||||
|  | # Target "create"   : the files are extrated/copied to ${INST_DIR}/CLIENT_DATA/${DL_ARCH[$i]} | ||||||
|  | # Target "package"  : opsi-makeproductfile is called processing ${INST_DIR} directory | ||||||
|  | # | ||||||
|  | #   - Filename | ||||||
|  | #     Filename used inside the builder and opsi package | ||||||
|  | #     Mandatory parameter. | ||||||
|  | #       DL_FILE[index]="cool-stuff.exe" | ||||||
|  | #  | ||||||
|  | #   - Source URL | ||||||
|  | #     The source URL to download the file from. Multiple URLs are separted by a ";" or "," | ||||||
|  | #     The $DIST_PRIVATE_REPOS variable will be added as the first URL automatically | ||||||
|  | #     Therefore, you download the non-public programs to your local/privagte repository. | ||||||
|  | #     You can use variable like $PN or $Version inside the URLs | ||||||
|  | #       DL_SOURCE[index]="http://cool-stuff.de/download/cool-stuff_1.001.exe;http://mirro5.cool-stuff.at/$PN_$VERSION.exe" | ||||||
|  | # | ||||||
|  | #   - Architecture | ||||||
|  | #     Definition of the architecture to separate different files. This will be used in  | ||||||
|  | #     the file structure inside the opsi-package. Also, you can use it in your repos-URL's  | ||||||
|  | #     or filenames (OPSI_REPOS_FILE_PATTERN, OPSI_REPOS_PRODUCT_DIR) to structure the repos.  | ||||||
|  | #     If it's a file for all architecture, the variable have not to be set.  | ||||||
|  | #     Optional parameter. Default value: <not set> | ||||||
|  | #     Valid values: <not set>, "X86", "X86_64" | ||||||
|  | #       DL_ARCH[index]="X86" | ||||||
|  | # | ||||||
|  | #   - WINST variable: | ||||||
|  | #     You can access the file (included in the opsi-package) using WINST script language.  | ||||||
|  | #     The target "package" will replace all occurence of the string "@@BUILDER_VARIABLES@@"  | ||||||
|  | #     by pairs of "DefVar/Set"-commands, if the WINST attribute is set. Default value: <not set> | ||||||
|  | #     Optional parameter. Default value: <not set>,  | ||||||
|  | #       DL_WINST_NAME[index]=itWESS | ||||||
|  | # | ||||||
|  | #   - Compression format | ||||||
|  | #     If the retrieved file is compressed, the compression format is specified to  | ||||||
|  | #     extract it. If the parameter is not set, no extraction happens | ||||||
|  | #     Optional parameter. Valid values: unzip, 7zip.  Default value: <not set>. | ||||||
|  | #        DL_EXTRACT_FORMAT="zip" | ||||||
|  | # | ||||||
|  | #   - Extraction directory for compressed files | ||||||
|  | #     This Variable only works in combination with INSTALL and forces the extraction | ||||||
|  | #     to be done into the specified directory. | ||||||
|  | #     This will result in the files to be extracted to ${OUTPUT_DIR}/${DL_ARCH}/${DL_EXTRACT_TO}. | ||||||
|  | #     This feature is mostly needed if a package includes more setup programms that are nemed the | ||||||
|  | #     same. This way you place the setups into diffent dirs | ||||||
|  | #     Optional parameter. Default value: <empty> | ||||||
|  | #       DL_EXTRACT_TO[index]="office" | ||||||
|  | # | ||||||
|  | #   - Specify Downloader | ||||||
|  | #     Defines the downloader to use to retrieve the SOURCE file | ||||||
|  | #     Optional parameter. Valid values: wget|plowdown. Default value: wget | ||||||
|  | # | ||||||
|  |    | ||||||
|  | DL_FILE[0]="itWatchLogo.jpg" | ||||||
|  | DL_SOURCE[0]="http://www.itwatch.de/logos/itWatchLogo.jpg" | ||||||
|  |  | ||||||
|  | DL_FILE[1]="itWESS-Client_German.msi" | ||||||
|  | DL_SOURCE[1]="http://repos.dtnet.de/itwatch/itwatch/4.10.19/itWESS-Client_German.msi;http://internal.graz.disconnected-by-peer.at/Orig/itWatch/itWESS/HB/4.10.19/itWESS-Client_German.msi" | ||||||
|  | DL_ARCH[1]="X86" | ||||||
|  | DL_WINST_NAME[1]=itWESS | ||||||
|  |  | ||||||
|  | DL_FILE[2]="itWESS-64bit_German.msi" | ||||||
|  | DL_SOURCE[2]="http://repos.dtnet.de/itwatch/itwatch/4.10.19/itWESS-64bit_German.msi;http://internal.graz.disconnected-by-peer.at/Orig/itWatch/itWESS/HB/4.10.19/itWESS-64bit_German.msi" | ||||||
|  | DL_ARCH[2]="X86_64" | ||||||
|  | DL_WINST_NAME[2]=itWESS64 | ||||||
|  |  | ||||||
|  | DL_FILE[3]="AiO-Runtimes-x86-v1.7.1.7z" | ||||||
|  | DL_SOURCE[3]="http://ftp.computerbase.de/dl-758/weJMhoTGCTbFI5mzRnMlAg/1327825564/AiO-Runtimes-x86-v1.7.1.7z" | ||||||
|  | DL_ARCH[3]="X86" | ||||||
|  | DL_DOWNLOADER[3]="wget" | ||||||
|  | DL_EXTRACT_FORMAT[3]="unzip" | ||||||
|  | DL_EXTACT_TO[3]="office" | ||||||
|  |  | ||||||
|  | # File array index for the image showing while installing the program | ||||||
|  | ICON_DL_INDEX=0 | ||||||
|  |  | ||||||
|  | ######################### | ||||||
|  | # Setup additional, custom WINST variables  | ||||||
|  | # which will be injected to the *.ins files (replaces token @@BUILDER_VARIABLES@@ ) | ||||||
|  | # | ||||||
|  | # The following tokens inside the WINST_VALUE will be replaced dynamically | ||||||
|  | # | ||||||
|  | #  @DL_EXTRACT_WINST_PATH[<index>]@  : contains the WINST location of the directory, the files from DL_FILE[<index>] was extracted to. | ||||||
|  | #   Sample:  | ||||||
|  | #        WINST_VALUE[1]="@DL_EXTRACT_WINST_PATH[<index>]@\\svcpack\\aio-runtimes.exe" | ||||||
|  | #        results in "%ScriptPath%\X86_64\svcpack\aio-runtimes.exe" | ||||||
|  | # | ||||||
|  | ######################### | ||||||
|  | WINST_NAME[0]="InstallExe" | ||||||
|  | WINST_VALUE[0]="@DL_EXTRACT_WINST_PATH[2]@\\svcpack\\aio-runtimes.exe" | ||||||
|  |  | ||||||
|  | WINST_NAME[1]="MyVar" | ||||||
|  | WINST_VALUE[1]="My content" | ||||||
|  |  | ||||||
|  | ######################### | ||||||
|  | # Setup required OPSI_INI variables  | ||||||
|  | # which will be injected to the opsi-PN.ini files | ||||||
|  | # | ||||||
|  | # if your package is not msi based then you can remove the msi part from *.ins files and drop this variables compleatly | ||||||
|  | # !!! These Variables are requred if you remove them in this cfg file you will get error's about not defined Variables !!! | ||||||
|  | # | ||||||
|  | ######################### | ||||||
|  | # if the packaga just supports X86 OR X86_64 (setupXX.ins delsubXX.ins uninstallXX.ins)  then you have to just specify one MsiId | ||||||
|  |  | ||||||
|  | OPSI_INI_SECTION[0]="X86" | ||||||
|  | OPSI_INI_OPTION[0]="MsiId" | ||||||
|  | OPSI_INI_VALUE[0]="{XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX}" | ||||||
|  |  | ||||||
|  | # OR | ||||||
|  |  | ||||||
|  | OPSI_INI_SECTION[0]="X86_64" | ||||||
|  | OPSI_INI_OPTION[0]="MsiId" | ||||||
|  | OPSI_INI_VALUE[0]="{XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX}" | ||||||
|  |  | ||||||
|  | # if the package supports X86 AND X86_64 (setup3264.ins delsub3264.ins uninstall3264.ins) then you have to specify 2 MsiId's | ||||||
|  |  | ||||||
|  | OPSI_INI_SECTION[0]="X86" | ||||||
|  | OPSI_INI_OPTION[0]="MsiId32" | ||||||
|  | OPSI_INI_VALUE[0]="{XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX}" | ||||||
|  |  | ||||||
|  | # AND | ||||||
|  |  | ||||||
|  | OPSI_INI_SECTION[1]="X86_64" | ||||||
|  | OPSI_INI_OPTION[1]="MsiId64" | ||||||
|  | OPSI_INI_VALUE[1]="{XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX}" | ||||||
|  |  | ||||||
							
								
								
									
										25
									
								
								sample/All/builder-targets-cb.sh
									
									
									
									
									
										Normal file
									
								
							
							
						
						| @@ -0,0 +1,25 @@ | |||||||
|  | ############################################################################## | ||||||
|  | # This optional file "builder-targets-cb.sh" will be called by builder.sh  | ||||||
|  | #  | ||||||
|  | # The targets will be called from thde opsi-builder using the following | ||||||
|  | # order: config, prepare, retrieve, create, package, publish, commit, cleanup  | ||||||
|  | # You can overwrite the target functions in builder-targets-cb.sh | ||||||
|  | #  | ||||||
|  | # You can define callback functions. The functions are called from | ||||||
|  | # opsi-builder within processing a target | ||||||
|  | #   cb_package_makeproductfile | ||||||
|  | # | ||||||
|  | # You can use every variable defined in any configuration file or by | ||||||
|  | # the defined builder script itself. Also, calling the predefined | ||||||
|  | # targets builder_<targetname> is possible. | ||||||
|  | # | ||||||
|  | # Abstract: | ||||||
|  | #  target order: config, prepare, retrieve, create, package, publish, commit, cleanup | ||||||
|  | #  callbacks: <none> | ||||||
|  | # | ||||||
|  | ############################################################################## | ||||||
|  |  | ||||||
|  | function cleanup() { | ||||||
|  |     echo "Cleanup" | ||||||
|  |     builder_cleanup | ||||||
|  | } | ||||||
| Before Width: | Height: | Size: 75 KiB After Width: | Height: | Size: 75 KiB | 
| Before Width: | Height: | Size: 75 KiB After Width: | Height: | Size: 75 KiB | 
| Before Width: | Height: | Size: 75 KiB After Width: | Height: | Size: 75 KiB | 
| Before Width: | Height: | Size: 17 KiB After Width: | Height: | Size: 17 KiB | 
							
								
								
									
										9
									
								
								sample/source/4.0.2/opsi-template/OPSI/postinst
									
									
									
									
									
										Normal file
									
								
							
							
						
						| @@ -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 | ||||||
|  | # | ||||||
							
								
								
									
										9
									
								
								sample/source/4.0.2/opsi-template/OPSI/preinst
									
									
									
									
									
										Normal file
									
								
							
							
						
						| @@ -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 | ||||||
|  | # | ||||||