sereby.aio/CLIENT_DATA/setup.ins
Peter Singer 22c983b711 Added separated net framework pack (thanks to Ganesha and Dimpel) for XP
Remove all versions of Java (thanks to LabDeploy) and install the latest version (from sereby paket)
Predefined install variables for versions later than 2.0.1, variables are working in this version, but the timer will be disabled (timer-bug).
Added extracted installation mode, specially for wan connections
Added wan recognition
2012-11-06 09:33:09 +01:00

483 lines
18 KiB
TeX

; 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]
requiredWinstVersion >= "4.10.8.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"
DefVar $MSVersion$
Set $MSVersion$ = GetMsVersionInfo
DefVar $xp_wsus_bugfix$
Set $xp_wsus_bugfix$ = GetProductProperty("xp_wsus_bugfix", "1")
DefVar $java_reinstall$
Set $java_reinstall$ = GetProductProperty("java_reinstall", "1")
DefVar $extract_install$
Set $extract_install$ = GetProductProperty("extract_install", "0")
DefVar $extract_use$
Set $extract_use$ = GetProductProperty("extract_use", "0")
DefVar $connection_set_max_latency$
Set $connection_set_max_latency$ = GetProductProperty("connection_set_max_latency", "30")
DefVar $connection_wan$
DefStringList $Output$
DefVar $timer_value$
Set $timer_value$ = GetProductProperty("timer_value", "40")
DefVar $timer_enabled$
Set $timer_enabled$ = GetProductProperty("timer_enabled", "1")
DefVar $inst_net1.1$
Set $inst_net1.1$ = GetProductProperty("inst_net1.1", "1")
DefVar $inst_net2.0$
Set $inst_net2.0$ = GetProductProperty("inst_net2.0", "1")
DefVar $inst_net3.0$
Set $inst_net3.0$ = GetProductProperty("inst_net3.0", "1")
DefVar $inst_net3.5$
Set $inst_net3.5$ = GetProductProperty("inst_net3.5", "1")
DefVar $inst_net4.0$
Set $inst_net4.0$ = GetProductProperty("inst_net4.0", "0")
DefVar $inst_net4.5$
Set $inst_net4.5$ = GetProductProperty("inst_net4.5", "1")
DefVar $inst_msjsharp$
Set $inst_msjsharp$ = GetProductProperty("inst_msjsharp", "1")
DefVar $inst_silver$
Set $inst_silver$ = GetProductProperty("inst_silver", "1")
DefVar $inst_jre7$
Set $inst_jre7$ = GetProductProperty("inst_jre7", "1")
DefVar $inst_AdobeShock$
Set $inst_AdobeShock$ = GetProductProperty("inst_AdobeShock", "1")
DefVar $inst_basicruntimes$
Set $inst_basicruntimes$ = GetProductProperty("inst_basicruntimes", "1")
DefVar $inst_msdx9$
Set $inst_msdx9$ = GetProductProperty("inst_msdx9", "1")
DefVar $inst_msdxm$
Set $inst_msdxm$ = GetProductProperty("inst_msdxm", "1")
DefVar $inst_msvc$
Set $inst_msvc$ = GetProductProperty("inst_msvc", "1")
DefVar $inst_AdobeFlash$
Set $inst_AdobeFlash$ = GetProductProperty("inst_AdobeFlash", "1")
; 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 $ProductId$ = "sereby.aio"
Set $MinimumSpace$ = "400 MB"
; the path were we find the product after the installation
Set $InstallDir32$ = "%ProgramFiles32Dir%\aio"
Set $InstallDir64$ = "%ProgramFiles64Dir%\aio"
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%\delsub.ins")
; comment "Start uninstall sub section"
; Sub "%ScriptPath%\delsub.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..."
if (( $MSVersion$ = "5.1" ) and ($xp_wsus_bugfix$ = "1"))
if (GetRegistryStringValue32("[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\{C09FB3CD-3D0C-3F2D-899A-6A1D67F2073F}] DisplayName") = "")
comment "DotNet 2.0 SP2 not found in registry, starting install dotNetFX3.5"
Message "Installing " + "dotNetFX 2 - 3.5" + " 32 Bit..."
Winbatch_install_dotNet_XP_2-3.5_32
sub_check_exitcode
endif
if (GetRegistryStringValue32("[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\{3C3901C5-3455-3E0A-A214-0B093A5070A6}] DisplayName") = "")
comment "DotNet 4.0 not found in registry, starting install dotNetFX4 install"
Message "Installing " + "dotNetFX 4" + " 32 Bit..."
Winbatch_install_dotNet_XP_4_32
sub_check_exitcode
endif
endif
comment "Reinstall Java"
if ($java_reinstall$ = "1")
Message "Uninstalling " + "Java" + " 32 Bit..."
Dosbatch_java_reinstall
endif
comment "Install the extracted version of the sereby packet on opsiserver"
if (($extract_install$ = "1") and not (FileExists("%ScriptPath%\X86\sereby\extracted\WinPKG.exe")))
Message "Installing " + $ProductId$ + " on depotserver..."
Dosbatch_extract_install
endif
comment "Get connection latency between server and client"
if ($extract_use$ = "auto")
Message "Get connection latency..."
Dosbatch_get_connection_latency
Set $Output$ = getOutStreamFromSection('Dosbatch_get_connection_latency')
Set $connection_wan$ = takeFirstStringContaining($Output$, "opsi wan mode : ")
Set $connection_wan$ = TakeString(1, SplitString($connection_wan$, " : "))
endif
comment "Build sereby configuration"
Message "Build sereby configuration"
Dosbatch_build_config
comment "Choose version to install"
if (($extract_use$ = "1") or (($extract_use$ = "auto") and ($connection_wan$ = "1")))
Message "Installing extracted " + $ProductId$ + " 32 Bit..."
comment "Start extracted setup program"
Dosbatch_install_extracted_32
Sub_check_exitcode
else
Message "Installing " + $ProductId$ + " 32 Bit..."
comment "Start setup program"
Winbatch_install_32
Sub_check_exitcode
endif
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..."
if (( $MSVersion$ = "5.1" ) and ($xp_wsus_bugfix$ = "1"))
if (GetRegistryStringValue64("[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\{C09FB3CD-3D0C-3F2D-899A-6A1D67F2073F}] DisplayName") = "")
comment "DotNet 2.0 SP2 not found in registry, starting install dotNetFX3.5"
Message "Installing " + "dotNetFX 2 - 3.5" + " 32 Bit..."
Winbatch_install_dotNet_XP_2-3.5_32
sub_check_exitcode
endif
if (GetRegistryStringValue64("[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\{3C3901C5-3455-3E0A-A214-0B093A5070A6}] DisplayName") = "")
comment "DotNet 4.0 not found in registry, starting install dotNetFX4 install"
Message "Installing " + "dotNetFX 4" + " 32 Bit..."
Winbatch_install_dotNet_XP_4_32
sub_check_exitcode
endif
endif
comment "Reinstall Java"
if ($java_reinstall$ = "1")
Message "Uninstalling " + "Java" + " 32 + 64 Bit..."
Dosbatch_java_reinstall
endif
comment "Install the extracted version of the sereby packet on opsiserver"
if (($extract_install$ = "1") and not (FileExists("%ScriptPath%\X86\sereby\extracted\WinPKG.exe")))
Message "Installing extracted " + $ProductId$ + " on depotserver..."
Dosbatch_extract_install
endif
comment "Get connection latency between server and client"
if ($extract_use$ = "auto")
Message "Get connection latency..."
Dosbatch_get_connection_latency
Set $Output$ = getOutStreamFromSection('Dosbatch_get_connection_latency')
Set $connection_wan$ = takeFirstStringContaining($Output$, "opsi wan mode : ")
Set $connection_wan$ = TakeString(1, SplitString($connection_wan$, " : "))
endif
comment "Build sereby configuration"
Message "Build sereby configuration"
Dosbatch_build_config winst /64Bit
comment "Choose version to install"
if (($extract_use$ = "1") or (($extract_use$ = "auto") and ($connection_wan$ = "1")))
Message "Installing extracted " + $ProductId$ + " 64 Bit..."
comment "Start extracted setup program"
Dosbatch_install_extracted_32
Sub_check_exitcode
else
Message "Installing " + $ProductId$ + " 64 Bit..."
comment "Start setup program"
Winbatch_install_64
Sub_check_exitcode
endif
comment "Copy files"
Files_install_64 /64Bit
comment "Patch Registry"
Registry_install /64Bit
comment "Create shortcuts"
LinkFolder_install
endif
comment "Reboot"
ExitWindows /Reboot
endif
[Winbatch_install_dotNet_XP_2-3.5_32]
"$Install32_XP1_Exe$"
[Winbatch_install_dotNet_XP_4_32]
"$Install32_XP2_Exe$" /ain
[Dosbatch_java_reinstall]
cscript /nologo "%ScriptPath%\X86\java\JavaUninstallScript.vbs" /keeponly
[Dosbatch_extract_install]
@echo off &setlocal
"$Install32Exe$" -gm0 -nr
echo Ident opsi Server
echo .
for /f "tokens=2 delims=\" %%a in ('net use p:') do set "opsiservername=%%a"
echo opsi Server: %opsiservername%
@echo off
net use x: \\%opsiservername%\opt_pcbin
net use /delete p:
net use p: \\%opsiservername%\opt_pcbin\install
xcopy "%SystemDrive%\AiO-Files\*.*" "%ScriptPath%\X86\sereby\extracted\" /S /E /D /Y
rem rd "%SystemDrive%\AiO-Files" /S /Q
net use /delete p:
net use p: \\%opsiservername%\opsi_depot
net use /delete x:
[Dosbatch_get_connection_latency]
@echo off
setlocal enabledelayedexpansion
echo Ident opsi Server
echo .
for /f "tokens=2 delims=\" %%a in ('net use p:') do set "opsiservername=%%a"
echo opsi Server : %opsiservername%
for /f "tokens=4 delims='='" %%a in ('ping %opsiservername% -n 10') do set "opsiserverping=%%a"
set Latenzms=!opsiserverping:~1,10!
echo Latenz in ms : %Latenzms%
for /f "tokens=1 delims=m" %%a in ('@echo %Latenzms%') do set "Latenz=%%a"
echo Latenz : %Latenz%
if %Latenz% GTR $connection_set_max_latency$ (set wan=1) else (set wan=0)
@echo opsi wan mode : %wan%
[Dosbatch_build_config]
copy "%ScriptPath%\X86\winpkg\WinPKG.xml" "%System%"
copy "%System%\WinPKG.xml" "%System%\WinPKG.xml.old"
xml ed -O -u "/settings/timer[@value=40]/@value" -v $timer_value$ "%System%\WinPKG.xml.old" > "%System%\WinPKG.xml"
copy "%System%\WinPKG.xml" "%System%\WinPKG.xml.old"
xml ed -O -u "/settings/timer[@enabled=1]/@enabled" -v $timer_enabled$ "%System%\WinPKG.xml.old" > "%System%\WinPKG.xml"
copy "%System%\WinPKG.xml" "%System%\WinPKG.xml.old"
xml ed -O -u "/settings/set[@component='net1.1']/@checked" -v $inst_net1.1$ "%System%\WinPKG.xml.old" > "%System%\WinPKG.xml"
copy "%System%\WinPKG.xml" "%System%\WinPKG.xml.old"
xml ed -O -u "/settings/set[@component='net2.0']/@checked" -v $inst_net2.0$ "%System%\WinPKG.xml.old" > "%System%\WinPKG.xml"
copy "%System%\WinPKG.xml" "%System%\WinPKG.xml.old"
xml ed -O -u "/settings/set[@component='net3.0']/@checked" -v $inst_net3.0$ "%System%\WinPKG.xml.old" > "%System%\WinPKG.xml"
copy "%System%\WinPKG.xml" "%System%\WinPKG.xml.old"
xml ed -O -u "/settings/set[@component='net3.5']/@checked" -v $inst_net3.5$ "%System%\WinPKG.xml.old" > "%System%\WinPKG.xml"
copy "%System%\WinPKG.xml" "%System%\WinPKG.xml.old"
xml ed -O -u "/settings/set[@component='net4.0']/@checked" -v $inst_net4.0$ "%System%\WinPKG.xml.old" > "%System%\WinPKG.xml"
copy "%System%\WinPKG.xml" "%System%\WinPKG.xml.old"
xml ed -O -u "/settings/set[@component='net4.5']/@checked" -v $inst_net4.5$ "%System%\WinPKG.xml.old" > "%System%\WinPKG.xml"
copy "%System%\WinPKG.xml" "%System%\WinPKG.xml.old"
xml ed -O -u "/settings/set[@component='msjsharp']/@checked" -v $inst_msjsharp$ "%System%\WinPKG.xml.old" > "%System%\WinPKG.xml"
copy "%System%\WinPKG.xml" "%System%\WinPKG.xml.old"
xml ed -O -u "/settings/set[@component='silver']/@checked" -v $inst_silver$ "%System%\WinPKG.xml.old" > "%System%\WinPKG.xml"
copy "%System%\WinPKG.xml" "%System%\WinPKG.xml.old"
xml ed -O -u "/settings/set[@component='jre7']/@checked" -v $inst_jre7$ "%System%\WinPKG.xml.old" > "%System%\WinPKG.xml"
copy "%System%\WinPKG.xml" "%System%\WinPKG.xml.old"
xml ed -O -u "/settings/set[@component='AdobeShock']/@checked" -v $inst_AdobeShock$ "%System%\WinPKG.xml.old" > "%System%\WinPKG.xml"
copy "%System%\WinPKG.xml" "%System%\WinPKG.xml.old"
xml ed -O -u "/settings/set[@component='basicruntimes']/@checked" -v $inst_basicruntimes$ "%System%\WinPKG.xml.old" > "%System%\WinPKG.xml"
copy "%System%\WinPKG.xml" "%System%\WinPKG.xml.old"
xml ed -O -u "/settings/set[@component='msdx9']/@checked" -v $inst_msdx9$ "%System%\WinPKG.xml.old" > "%System%\WinPKG.xml"
copy "%System%\WinPKG.xml" "%System%\WinPKG.xml.old"
xml ed -O -u "/settings/set[@component='msdxm']/@checked" -v $inst_msdxm$ "%System%\WinPKG.xml.old" > "%System%\WinPKG.xml"
copy "%System%\WinPKG.xml" "%System%\WinPKG.xml.old"
xml ed -O -u "/settings/set[@component='msvc']/@checked" -v $inst_msvc$ "%System%\WinPKG.xml.old" > "%System%\WinPKG.xml"
copy "%System%\WinPKG.xml" "%System%\WinPKG.xml.old"
xml ed -O -u "/settings/set[@component='AdobeFlash']/@checked" -v $inst_AdobeFlash$ "%System%\WinPKG.xml.old" > "%System%\WinPKG.xml"
[Dosbatch_install_extracted_32]
@echo off
p:
cd "%ScriptPath%\X86\sereby\extracted"
"$Install_extracted_32Exe$"
[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 ================================================================
"$Install32Exe$"
[Files_install_32]
; Example of recursively copying some files into the installation directory:
;
; copy -s "%ScriptPath%\files\*.*" "$InstallDir32$"
[Dosbatch_install_extracted_64]
@echo off
p:
cd "%ScriptPath%\X86\sereby\extracted"
"$Install_extracted_64Exe$"
[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
;
; === MSI package =======================================================================================
"$Install64Exe$"
[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: <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