diff --git a/CLIENT_DATA/X86/java/JavaUninstallScript.vbs b/CLIENT_DATA/X86/java/JavaUninstallScript.vbs new file mode 100644 index 0000000..add253a --- /dev/null +++ b/CLIENT_DATA/X86/java/JavaUninstallScript.vbs @@ -0,0 +1,392 @@ +'*************************************************************************************** +'Java removal script. +'Version: 3.0 +'Description: Removes specified Java versions based on command line parameters. +' !!!!!!USE AT YOUR OWN RISK!!!!!!! +'2011.03.09 - 2.0 - First version. Assumes %SYSTEMDRIVE%\Logs exists. +'2011.03.23 - 2.1 - Fixes issue running in 32bit SCCM under 64bit Windows. +'2011.03.30 - 2.2 - Adds array of versions to keep. +'2011.04.24 - 3.0 - Added command line parameters. Still doesn't make the log directory! +' +'http://www.itninja.com/question/silent-uninstall-java-all-versions +'*************************************************************************************** +'-----------------------------Begin Main Script-------------------------------- +Option Explicit + +'If help is specified on the command line, show it and quit. +If WScript.Arguments.Named.Count < 1 Or WScript.Arguments.Named.Exists("help") Or WScript.Arguments.Named.Exists("?") Then + PrintHelp() + WScript.Quit(0) +End If + +Dim aryVersions, aryVersionsx86Onx64 +Dim bolKeepJava +Dim colNamedArguments, colProcesses +Dim objWMIService, objProcessor, objProcess +Dim strArgument, strLogFilePath + +'Set default command line parameters. +'The script defaults to removing all versions of Java without leaving uninstall logs. +bolKeepJava = 1 +strLogFilePath = "" +aryVersions = Array() +aryVersionsx86Onx64 = Array() + +'Start script logging. +WScript.Echo "**********************************" +WScript.Echo "Java uninstall script started at " & Now() + +'Parse command line parameters. +If WScript.Arguments.Named.Count > 0 Then + Set colNamedArguments = WScript.Arguments.Named + + For Each strArgument in colNamedArguments + Select Case LCase(strArgument) + Case "keeponly" + Case "removeonly" + bolKeepJava = 0 + Case "logfilepath" + strLogFilePath = colNamedArguments.Item(strArgument) + Case "versions" + aryVersions = Split(colNamedArguments.Item(strArgument), ";", -1, 1) + Case "versionsx86onx64" + aryVersionsx86Onx64 = Split(colNamedArguments.Item(strArgument), ";", -1, 1) + Case Else + WScript.Echo vbCrLf & "Unknown switch: " & strArgument & "." + WScript.Echo vbCrLf & "Java uninstall script finished at " & Now() + WScript.Echo "**********************************" & vbCrLf + PrintHelp() + WScript.Quit(2) + End Select + Next +End If + +'Output the parameters the script was run with. +WScript.Echo vbCrLf & "----------------------------------" +WScript.Echo "Script parameters:" + If bolKeepJava Then + WScript.Echo "Specified Java versions found will be kept. Other versions will be removed." + Else + WScript.Echo "Specified Java versions found will be removed. Other versions will be kept." + End If + + 'This check is important. It will default the versions array if no versions were specified. Without this the whole thing falls apart. + If (Ubound(aryVersions) < 0 ) Then + aryVersions = Array("FooBar") + WScript.Echo "No native Java versions specified on the command line." + Else + WScript.Echo "Native Java versions specified on the command line." + End If + + 'If no non-native versions are specified set the non-native array to the native array. + If (Ubound(aryVersionsx86Onx64) < 0) Then + aryVersionsx86Onx64 = aryVersions + WScript.Echo "No x86 Java versions for x64 systems specified on the command line." & vbCrLf & "Using specified native verions for x86 also." + Else + WScript.Echo "x86 Java versions for x64 systems specified on the command line." + End If + + If strLogFilePath = "" Or IsNull(strLogFilePath) Then + WScript.Echo "Uninstall logfile path is empty. Uninstall logs will not be created." + Else + 'If the log file path does not end in a \ put one on there! + If (StrComp(Right(strLogFilePath,1), "\") <> 0) Then + strLogFilePath = strLogFilePath & "\" + End If + WScript.Echo "Uninstall log file path: " & strLogFilePath & "." + End If +WScript.Echo "----------------------------------" + +'Get a WMI Service object. +Set objWMIService = GetObject("winmgmts:{impersonationLevel=impersonate, (Debug)}\\.\root\cimv2") + +'Get processor object. objProcessor.AddressWidth will give us bitness. Check objProcessor.AddressWidth = "32" or "64" +Set objProcessor = GetObject("winmgmts:\\.\root\cimv2:Win32_Processor='cpu0'") + +'Kill processes that might prevent installs or uninstalls. +Set colProcesses = objWMIService.ExecQuery("Select Name from Win32_Process Where Name = 'jqs.exe' OR Name = 'jusched.exe' OR Name = 'jucheck.exe' OR Name = 'jp2launcher.exe' OR Name = 'java.exe' OR Name = 'javaws.exe' OR Name = 'javaw.exe'", "WQL", 48) + +WScript.Echo vbCrLf & "----------------------------------" +WScript.Echo "Checking for problematic processes." + +'Set this to look for errors that aren't fatal when killing processes. +On Error Resume Next + +'Cycle through found problematic processes and kill them. +For Each objProcess in colProcesses + + WScript.Echo "Found process " & objProcess.Name & "." + + objProcess.Terminate() + + Select Case Err.Number + Case 0 + WScript.Echo "Killed process " & objProcess.Name & "." + Err.Clear + Case -2147217406 + WScript.Echo "Process " & objProcess.Name & " already closed." + Err.Clear + Case Else + WScript.Echo "Could not kill process " & objProcess.Name & "! Aborting Script!" + WScript.Echo "Error Number: " & Err.Number + WScript.Echo "Error Description: " & Err.Description + WScript.Echo "Finished problematic process check." + WScript.Echo "----------------------------------" + WScript.Echo vbCrLf & "Java uninstall script finished at " & Now() + WScript.Echo "**********************************" & vbCrLf + WScript.Quit(1) + End Select + +Next + +'Resume normal error handling. +On Error Goto 0 + +WScript.Echo "Finished problematic process check." +WScript.Echo "----------------------------------" + +'This call will remove x64 versions on a x64 system and x86 versions on a x86 system. +RemoveJava "Software\Microsoft\Windows\CurrentVersion\Uninstall\", aryVersions, strLogFilePath, objProcessor + +'This call will remove x86 versions on a x64 system. +If (objProcessor.AddressWidth = "64") Then + RemoveJava "Software\Wow6432Node\Microsoft\Windows\CurrentVersion\Uninstall\", aryVersionsx86Onx64, strLogFilePath, objProcessor +End If + +WScript.Echo vbCrLf & "Java uninstall script finished at " & Now() +WScript.Echo "**********************************" & vbCrLf +'-------------------------------End Main Script-------------------------------- + +'---------------------------------Functions------------------------------------ +Function RemoveJava(strRegistryPath, aryVersions, strLogFilePath, objProcessor) + + Dim objWSHShell, objRegistry, objWbemContext, objSWbemLocator, objSWbemServices + Dim aryUninstallKeys + Dim strUninstallKey, strDisplayName, strUninstallString, strVersion + Dim intUninstallReturnCode + + Set objWSHShell = CreateObject("WScript.Shell") + + 'The following SWbem setup allows a script running in a x86 context, such as under the SCCM client, on a x64 system + 'to access the full x64 registry. Without this the actual registry paths will be transparently redirected to the + 'Wow6432Node branch for every registry call to HKLM\Software\Microsoft\Windows\CurrentVersion\Uninstall. + 'Essentially this transparent redirection would hide 64bit Java runtimes from a script running in 32bit mode on a 64bit OS. + + 'Provides the bitness context parameters for registry calls. + Set objWbemContext = CreateObject("WbemScripting.SWbemNamedValueSet") + objWbemContext.Add "__ProviderArchitecture", objProcessor.AddressWidth + objWbemContext.Add "__RequiredArchitecture", true + + 'Create SWbemLocator to connect to WMI + Set objSWbemLocator = CreateObject("WbemScripting.SWbemLocator") + + 'Actually connect to the WMI service using the SWbemLocator and the SWbemContext parameters. + Set objSWbemServices = objSWbemLocator.ConnectServer(".","root\default","","",,,,objWbemContext) + + 'Get the Standard Registry Provider from WMI... finally. + Set objRegistry = objSWbemServices.Get("StdRegProv") + + 'Find the Java uninstallers hiding in the uninstall key. &H80000002 = HKEY_LOCAL_MACHINE for this function call. + objRegistry.EnumKey &H80000002, strRegistryPath, aryUninstallKeys + + 'Enable VBS' poor excuse for error handling... + On Error Resume Next + + For Each strUninstallKey In aryUninstallKeys + + 'These must be reset in case the GetStringValue fails to return a value. This way we don't keep values for other pieces of software. + strDisplayName = "" + strUninstallString = "" + intUninstallReturnCode = "" + + 'DisplayName should always be a REG_SZ + objRegistry.GetStringValue &H80000002, strRegistryPath & strUninstallKey, "DisplayName", strDisplayName + + 'Just in case GetStringValue doesn't retrieve what we want. + If Err.Number <> 0 Then + Wscript.Echo vbCrLf & "----------------------------------" + WScript.Echo "Could not retrieve DisplayName at " & strRegistryPath & strUninstallKey & "!" + WScript.Echo "Error Number: " & Err.Number + WScript.Echo "Error Description: " & Err.Description + Wscript.Echo "----------------------------------" + strDisplayName = "" + Err.Clear + End If + + 'In English: If the DisplayName contains either Java OR the DisplayName contains J2SE Runtime Environment + 'AND if the DisplayName does not contain Development AND if the DisplayName does not contain JavaDB + 'AND if the DisplayName does not contain Web Start + 'AND if the DisplayName does not contain SAS + 'AND if the DisplayName does not contain Java Auto Update then do the if block. + 'Fun, eh? + 'You could remove the Web Start line to get rid of JWS but the uninstall string If block would have to account for that. It currently doesn't. + + If ((Instr(1, strDisplayName, "Java", 1) OR (Instr(1, strDisplayName, "J2SE Runtime Environment", 1))) _ + AND ((Instr(1, strDisplayName, "Development", 1) + Instr(1, strDisplayName, "JavaDB", 1)) < 1) _ + AND (Instr(1, strDisplayName, "Web Start", 1) < 1) _ + AND (Instr(1, strDisplayName, "SAS", 1) < 1) _ + AND (Instr(1, strDisplayName, "Java Auto Update", 1) < 1)) Then + + Wscript.Echo vbCrLf & "----------------------------------" + WScript.Echo "Found version: " & strDisplayName + WScript.Echo "Found at: HKEY_LOCAL_MACHINE\" & strRegistryPath & strUninstallKey + + 'UninstallString might be a REG_EXPAND_SZ but GetStringValue should retrieve what we want. + objRegistry.GetStringValue &H80000002, strRegistryPath & strUninstallKey, "UninstallString", strUninstallString + + 'Just in case GetStringValue doesn't retrieve what we want. + If Err.Number <> 0 Then + Wscript.Echo vbCrLf & "----------------------------------" + WScript.Echo "Could not retrieve uninstall information for " & strDisplayName & "!" + WScript.Echo "Error Number: " & Err.Number + WScript.Echo "Error Description: " & Err.Description + Wscript.Echo "----------------------------------" + strUninstallString = "" + Err.Clear + End If + + 'Slightly convoluted logic that determines if we're keeping or removing specific versions. + For Each strVersion In aryVersions + If (bolKeepJava) Then + If (Instr(1, strDisplayName, strVersion, 1) > 0) Then + strUninstallString = "" + End If + Else + If (Instr(1, strDisplayName, strVersion, 1) < 1) Then + strUninstallString = "" + End If + End If + Next + + If (strUninstallString <> "") Then + 'Look for very old JRE 1.1, 1.2.x, or 1.3.0 to 1.3.0_04 and 1.3.1 to 1.3.1_04 InstallShield installs. + If (Instr(1, strUninstallKey, "JRE 1", 1)) Then + strUninstallString = Replace(strUninstallString, "-f", "-a -x -y -f") + 'Look for 1.3.0_05 and 1.3.1_05 to 1.3.1_20 InstallShield based installs. + ElseIf (Instr(1, strUninstallString, "-uninst", 1)) Then + strUninstallString = "" + WScript.Echo "Java versions 1.3.0_05 and 1.3.1_05 through 1.3.1_20 cannot be silently uninstalled." + 'Look for a 1.4.0 to 1.4.1_07 InstallShield installation. + ElseIf (Instr(1, strUninstallString, "Anytext", 1)) Then + 'Create ISS script for this install and fix the uninstall string. + If (CreateISSFile(strUninstallKey, objWSHShell.ExpandEnvironmentStrings("%TEMP%"))) Then + strUninstallString = Replace(strUninstallString, "Anytext", "/s /SMS /w /f1""" & objWSHShell.ExpandEnvironmentStrings("%TEMP%") _ + & "\" & strUninstallKey & ".iss""") + 'Check and add the logfile to the uninstaller string. + If (strLogFilePath <> "") Then + strUninstallString = strUninstallString & " /f2""" & strLogFilePath & strDisplayName & "_Uninstall.txt""" + End If + Else + strUninstallString = "" + End If + 'Look for 1.4.2 and up MSI based InstallShield installs. + ElseIf (Instr(1, strUninstallString, "msiexec.exe", 1)) Then + 'Create MSIEXEC uninstall string. + strUninstallString = "MSIEXEC.EXE /X " & strUninstallKey & " /qn /norestart" + 'Check and add the logfile to the uninstaller string. + If (strLogFilePath <> "") Then + strUninstallString = strUninstallString & " /l*v """ & strLogFilePath & strDisplayName & "_Uninstall.txt""" + End If + Else + strUninstallString = "" + End If + Else + strUninstallString = "" + End If + + WScript.Echo "Uninstall string: " & strUninstallString + + If (strUninstallString = "") Then + WScript.Echo strDisplayName & " was not uninstalled." + Else + 'Run the uninstaller. + intUninstallReturnCode = objWSHShell.Run(strUninstallString, 0, true) + WScript.Echo "Uninstall return code was: " & intUninstallReturnCode & "." + End If + + WScript.Echo "----------------------------------" + + End If + + Next + + 'Resume normal quit on error behavior. + On Error GoTo 0 + +End Function + +Function CreateISSFile(strUninstallKey, strTempPath) + On Error Resume Next + + Dim objFileSystem, objUninstallScript + + Set objFileSystem = CreateObject("Scripting.FileSystemObject") + + 'Create InstallShield ISS script file for the uninstallation. + Set objUninstallScript = objFileSystem.OpenTextFile(strTempPath & "\" & strUninstallKey & ".iss", 2, True) + + If (Err.Number <> 0) Then + WScript.Echo "Could not create uninstall file at " & strTempPath & "\" & strUninstallKey & ".iss!" + WScript.Echo "Error Number: " & Err.Number + WScript.Echo "Error Description: " & Err.Description + Err.Clear + CreateISSFile = 0 + End If + + 'One ugly write statement to cut down on the ammount of error checking that has to be done. + 'That SharedFile=YesToAll creates problems with multiple versions of 1.4.0 to 1.4.1_07 installed. + objUninstallScript.Write "[InstallShield Silent]" & vbCrLf & "Version=v6.00.000" & vbCrLf & "File=Response File" & vbCrLf & "[File Transfer]" & _ + vbCrLf & "OverwrittenReadOnly=NoToAll" & vbCrLf & "[" & strUninstallKey & "-DlgOrder]" & vbCrLf & "Dlg0=" & strUninstallKey & "-SprintfBox-0" & _ + vbCrLf & "Count=2" & vbCrLf & "Dlg1=" & strUninstallKey & "-File Transfer" & vbCrLf & "[" & strUninstallKey & "-SprintfBox-0]" & vbCrLf & "Result=1" & _ + vbCrLf & "[Application]" & vbCrLf & "Name=Java 2 Runtime Environment, SE v1.4.0" & vbCrLf & "Version=1.4.0" & vbCrLf & "Company=JavaSoft" & _ + vbCrLf & "Lang=0009" & vbCrLf & "[" & strUninstallKey & "-File Transfer]" & vbCrLf & "SharedFile=NoToAll" + + If (Err.Number <> 0) Then + WScript.Echo "Could not create uninstall file at " & strTempPath & "\" & strUninstallKey & ".iss!" + WScript.Echo "Error Number: " & Err.Number + WScript.Echo "Error Description: " & Err.Description + Err.Clear + CreateISSFile = 0 + End If + + objUninstallScript.Close + + If (Err.Number <> 0) Then + WScript.Echo "Could not create uninstall file at " & strTempPath & "\" & strUninstallKey & ".iss!" + WScript.Echo "Error Number: " & Err.Number + WScript.Echo "Error Description: " & Err.Description + Err.Clear + CreateISSFile = 0 + End If + + + CreateISSFile = 1 + +End Function + +Function PrintHelp() + 'Just prints out the help when run with /help /? or no arguments. + WScript.Echo vbCrLf & "Java Runtime Environment Removal Script v3.0" & vbCrLf + WScript.Echo "Removes Java runtimes based on command line parameters." & vbCrLf & "Default parameters removes all Java versions without creating logs." + WScript.Echo "Does not uninstall Java versions 1.3.0_05 and 1.3.1_05 through 1.3.1_20." & vbCrLf & "They do not uninstall silently." & vbCrLf + WScript.Echo "Command line switches:" & vbCrLf + WScript.Echo "/keeponly" & vbTab & vbTab & "Script keeps only versions specified." & vbCrLf & vbTab & vbTab & vbTab & "If no versions are specified no versions are kept." & vbCrLf + WScript.Echo "/removeonly" & vbTab & vbTab & "Script removes only versions specified." & vbCrLf & vbTab & vbTab & vbTab & "If no versions are specified no versions are removed." & vbCrLf + WScript.Echo "/versions:" & vbTab & vbTab & "Specifies verions to act on." & vbCrLf & vbTab & vbTab & vbTab & "Versions are seperated by semicolons." & vbCrLf & vbTab & vbTab & vbTab & _ + "By default specified versions are kept." & vbCrLf & vbTab & vbTab & vbTab & "MUST MATCH THE DISPLAY NAME IN ADD/REMOVE PROGRAMS" & vbCrLf + WScript.Echo "/versionsx86onx64:" & vbTab & "Specifies x86 runtime versions to keep on a x64 system." & vbCrLf & vbTab & vbTab & vbTab & _ + "Versions are seperated by semicolon." & vbCrLf & vbTab & vbTab & vbTab & _ + "If no x86 versions are specified script uses versions" & vbCrLf & vbTab & vbTab & vbTab & "specified by /versions for both x64 and x86 runtimes." _ + & vbCrLf & vbTab & vbTab & vbTab & "MUST MATCH THE DISPLAY NAME IN ADD/REMOVE PROGRAMS" & vbCrLf + Wscript.Echo "/logfilepath:" & vbTab & vbTab & "Sets path for uninstall log file from Java runtimes." & vbCrLf & vbTab & vbTab & vbTab & _ + "If path does not exist uninstallers will fail." & vbCrLf + WScript.Echo "Examples:" & vbCrLf + WScript.Echo "cscript /nologo JavaUninstallScript.vbs /keeponly /versions:""Java(TM) 6 Update 24;J2SE Runtime Environment 5.0 Update 16"" /logfilepath:""C:\Temp""" + WScript.Echo "Removes all Java Runtimes found except Java 6 Update 24 and J2SE 5 Update 16 and places the uninstall logs in C:\Temp." & vbCrLf + WScript.Echo "cscript /nologo JavaUninstallScript.vbs /keeponly /versions:""Java(TM) 6 Update 24"" /versionsx86onx64:""J2SE Runtime Environment 5.0 Update 16"" /logfilepath:""C:\Temp""" + WScript.Echo "Removes all Java Runtimes found except x64 Java 6 Update 24 and x86 J2SE 5 Update 16 on a x64 system and places the uninstall logs in C:\Temp." & vbCrLf + WScript.Echo "cscript /nologo JavaUninstallScript.vbs /keeponly" + WScript.Echo "Removes all Java Runtimes without creating logs." & vbCrLf + WScript.Echo "cscript /nologo JavaUninstallScript.vbs /removeonly" + WScript.Echo "Keeps all Java Runtimes. Only useful for making a list of installed runtimes." & vbCrLf +End Function \ No newline at end of file diff --git a/CLIENT_DATA/X86/winpkg/WinPKG.xml b/CLIENT_DATA/X86/winpkg/WinPKG.xml new file mode 100644 index 0000000..4c5a6af --- /dev/null +++ b/CLIENT_DATA/X86/winpkg/WinPKG.xml @@ -0,0 +1,18 @@ + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/CLIENT_DATA/setup.ins b/CLIENT_DATA/setup.ins index c023d8c..5ccbc64 100644 --- a/CLIENT_DATA/setup.ins +++ b/CLIENT_DATA/setup.ins @@ -25,9 +25,60 @@ 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] @@ -38,6 +89,7 @@ Set $LogDir$ = "%SystemDrive%\tmp" ; @@BUILDER_VARIABLES@@ + ; ---------------------------------------------------------------- ; - Please edit the following values - ; ---------------------------------------------------------------- @@ -75,9 +127,59 @@ else 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" - Winbatch_install_32 - Sub_check_exitcode + 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" @@ -88,9 +190,59 @@ else 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" - Winbatch_install_64 - Sub_check_exitcode + 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" @@ -104,6 +256,91 @@ else 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 @@ -116,6 +353,12 @@ endif ; ; 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 diff --git a/NET_FRAMEWORK3.5.CAB.sha1sum b/NET_FRAMEWORK3.5.CAB.sha1sum new file mode 100644 index 0000000..57e9f7b --- /dev/null +++ b/NET_FRAMEWORK3.5.CAB.sha1sum @@ -0,0 +1 @@ +ea29c5eaa35a33544010630226f62e2cf44d7352 /home/opsiproducts/.opsi-dist-cache/sereby.aio-2.0.1/X86/net3.5/NET_FRAMEWORK3.5.CAB diff --git a/OPSI/control b/OPSI/control index 0b00a91..4dd8040 100644 --- a/OPSI/control +++ b/OPSI/control @@ -30,3 +30,206 @@ 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: sourceforge.xmlstarlet +requiredStatus: installed +requirementType: before + +[ProductProperty] +type: unicode +name: xp_wsus_bugfix +multivalue: False +editable: False +description: Correct a XP WSUS bug. If the value is set to false, the Net Framwork 3.5 SP1 (KB951847) installation often loops. +values: ["0", "1"] +default: ["1"] + +[ProductProperty] +type: unicode +name: java_reinstall +multivalue: False +editable: False +description: Remove all versions of Java and install the latest version (from sereby packet) +values: ["0", "1"] +default: ["1"] + +[ProductProperty] +type: unicode +name: extract_install +multivalue: False +editable: False +description: Install the extracted version of the sereby packet on opsiserver +values: ["0", "1"] +default: ["0"] + +[ProductProperty] +type: unicode +name: extract_use +multivalue: False +editable: False +description: Use the extracted version of the sereby packet on opsiserver. If set to auto extracted version will be used for wan connections. +values: ["0", "1", "auto"] +default: ["0"] + +[ProductProperty] +type: unicode +name: connection_set_max_latency +multivalue: False +editable: True +description: Defines the maximum latency (in ms) between server and client for local connection. If connection latency is above this value wan will be set to true. +values: ["30"] +default: ["30"] + +[ProductProperty] +type: unicode +name: timer_value +multivalue: False +editable: True +description: Time until installation starts (0 for immediate installation) +values: ["40"] +default: ["40"] + +[ProductProperty] +type: unicode +name: timer_enabled +multivalue: False +editable: False +description: Timer enabled +values: ["0", "1"] +default: ["1"] + +[ProductProperty] +type: unicode +name: inst_net1.1 +multivalue: False +editable: False +description: Install Microsoft Netframework 1.1 +values: ["0", "1"] +default: ["1"] + +[ProductProperty] +type: unicode +name: inst_net2.0 +multivalue: False +editable: False +description: Install Microsoft Netframework 2.0 +values: ["0", "1"] +default: ["1"] + +[ProductProperty] +type: unicode +name: inst_net3.0 +multivalue: False +editable: False +description: Install Microsoft Netframework 3.0 +values: ["0", "1"] +default: ["1"] + +[ProductProperty] +type: unicode +name: inst_net3.5 +multivalue: False +editable: False +description: Install Microsoft Netframework 3.5 +values: ["0", "1"] +default: ["1"] + +[ProductProperty] +type: unicode +name: inst_net4.0 +multivalue: False +editable: False +description: Install Microsoft Netframework 4.0 +values: ["0", "1"] +default: ["0"] + +[ProductProperty] +type: unicode +name: inst_net4.5 +multivalue: False +editable: False +description: Install Microsoft Netframework 4.5 +values: ["0", "1"] +default: ["1"] + +[ProductProperty] +type: unicode +name: inst_msjsharp +multivalue: False +editable: False +description: Install Microsoft Visual J-Sharp 2.0 SE +values: ["0", "1"] +default: ["1"] + +[ProductProperty] +type: unicode +name: inst_silver +multivalue: False +editable: False +description: Install Microsoft Silverlight 5 +values: ["0", "1"] +default: ["1"] + +[ProductProperty] +type: unicode +name: inst_jre7 +multivalue: False +editable: False +description: Install Java Runtime Environment 7 +values: ["0", "1"] +default: ["1"] + +[ProductProperty] +type: unicode +name: inst_AdobeShock +multivalue: False +editable: False +description: Install Adobe Shockwave Player 11.6 +values: ["0", "1"] +default: ["1"] + +[ProductProperty] +type: unicode +name: inst_basicruntimes +multivalue: False +editable: False +description: Install Basic Runtimes +values: ["0", "1"] +default: ["1"] + +[ProductProperty] +type: unicode +name: inst_msdx9 +multivalue: False +editable: False +description: Install Microsoft DirectX 9.0c Redistributable +values: ["0", "1"] +default: ["1"] + +[ProductProperty] +type: unicode +name: inst_msdxm +multivalue: False +editable: False +description: Install Microsoft DirectX for Managed Code +values: ["0", "1"] +default: ["1"] + +[ProductProperty] +type: unicode +name: inst_msvc +multivalue: False +editable: False +description: Install Microsoft Visual C++ Runtimes +values: ["0", "1"] +default: ["1"] + +[ProductProperty] +type: unicode +name: inst_AdobeFlash +multivalue: False +editable: False +description: Adobe Flash Player 11.4 +values: ["0", "1"] +default: ["1"] diff --git a/aio-runtimes_v2.0.0.7z.sha1sum b/aio-runtimes_v2.0.0.7z.sha1sum deleted file mode 100644 index 0f242da..0000000 --- a/aio-runtimes_v2.0.0.7z.sha1sum +++ /dev/null @@ -1 +0,0 @@ -8fd55cd1515a4bdc240ffe9264bb63fcadb9bf75 /home/mario/.opsi-dist-cache/sereby.aio-2.0.0/X86/aio-runtimes_v2.0.0.7z diff --git a/aio-runtimes_v2.0.1.7z.sha1sum b/aio-runtimes_v2.0.1.7z.sha1sum new file mode 100644 index 0000000..e9d714f --- /dev/null +++ b/aio-runtimes_v2.0.1.7z.sha1sum @@ -0,0 +1 @@ +c0b248819d410af7fae7d0c132590e52eb019e12 /home/opsiproducts/.opsi-dist-cache/sereby.aio-2.0.1/X86/sereby/aio-runtimes_v2.0.1.7z diff --git a/builder-product.cfg b/builder-product.cfg index 7a69a77..8b4be90 100644 --- a/builder-product.cfg +++ b/builder-product.cfg @@ -3,7 +3,7 @@ ############################ VENDOR="sereby.org" PN="sereby.aio" -VERSION="2.0.0" +VERSION="2.0.1" RELEASE="1" PRIORITY="0" ADVICE="" @@ -25,10 +25,24 @@ DL_SOURCE[0]="http://www.chip.de/ii/102791693_ff1cd10758.jpg" ## 1: 32 & 64 Bit Runtimes DL_FILE[1]="aio-runtimes_v${VERSION}.7z" -DL_SOURCE[1]="http://www.computerbase.de/downloads/system/all-in-one-runtimes/56930/?download" -DL_ARCH[1]="X86" +DL_SOURCE[1]="http://www.computerbase.de/downloads/system/all-in-one-runtimes/57520/?download" +DL_ARCH[1]="X86/sereby" DL_EXTRACT_FORMAT[1]="7zip" +## 2: 32 Bit XP Net Framework 1.1,2,3.0,3.5 Runtimes +DL_FILE[2]="NET_FRAMEWORK3.5.CAB" +DL_SOURCE[2]="http://team.win-lite.de/ganesha/NET_FRAMEWORK3.5.CAB" +DL_ARCH[2]="X86/net3.5" +DL_EXTRACT_FORMAT[2]="cab" + +## 3: 32 & 64 Bit XP Net Framework 4 Runtimes +DL_FILE[3]="dotNetFx40_Full_DE_x86_x64_SlimSetup.7z" +DL_SOURCE[3]="http://german-unattended.de/%7Edimpel/Addons/dotNetFx40_Full_DE_x86_x64_SlimSetup.7z" +DL_ARCH[3]="X86/net4.0" +DL_EXTRACT_FORMAT[3]="7zip" + + + ################## ### Variables ################## @@ -39,6 +53,14 @@ WINST_VALUE[0]="@DL_EXTRACT_WINST_PATH[1]@\\svcpack\\aio-runtimes.exe" WINST_NAME[1]=Install64Exe WINST_VALUE[1]="@DL_EXTRACT_WINST_PATH[1]@\\svcpack\\aio-runtimes.exe" +WINST_NAME[2]=Install32_XP1_Exe +WINST_VALUE[2]="@DL_EXTRACT_WINST_PATH[2]@\\svcpack\\dotNetFX35.exe" +WINST_NAME[3]=Install32_XP2_Exe +WINST_VALUE[3]="@DL_EXTRACT_WINST_PATH[3]@\\svcpack\\dotNetFx40_Full_DE_x86_x64_SlimSetup.exe" +WINST_NAME[4]=Install_extracted_32Exe +WINST_VALUE[4]="@DL_EXTRACT_WINST_PATH[1]@\\extracted\\WinPKG.exe" +WINST_NAME[5]=Install_extracted_64Exe +WINST_VALUE[5]="@DL_EXTRACT_WINST_PATH[1]@\\extracted\\WinPKG.exe" diff --git a/dotNetFx40_Full_DE_x86_x64_SlimSetup.7z.sha1sum b/dotNetFx40_Full_DE_x86_x64_SlimSetup.7z.sha1sum new file mode 100644 index 0000000..d724344 --- /dev/null +++ b/dotNetFx40_Full_DE_x86_x64_SlimSetup.7z.sha1sum @@ -0,0 +1 @@ +49003bf5d2baaf62c017fe575393a6d21dee14c0 /home/opsiproducts/.opsi-dist-cache/sereby.aio-2.0.1/X86/net4.0/dotNetFx40_Full_DE_x86_x64_SlimSetup.7z