This is an old revision of the document!
Versions
Versions
By Robert Tauber 2014/12/08
Tested with opsi xxxxx
requiredWinstVersion >= 4.11.4.12 Robert Tauber 2015/03/13
Die Setup-Daten werden unter Q:\Java\jre_#_x32\ und Q:\Java\jre_#_x64\ mit Ordner abgelegt z.B.: Q:\Java\jre_#_x32\jre1.8.0_40\jre1.8.0_40.msi (den Speicher Ort des Netzlaufwerks Q: bestimmt die map_Q.exe ..\opt_pcbin\install\!drivemap\map_Q.exe)
Tree (..\opt_pcbin\install\!drivemap):
map_Q.exe
Tree (Q:\Java):
CopyFolder.exe
jre_#_x32\jre1.8.0_40\jre1.8.0_40.msi
jre_#_x64\jre1.8.0_40_x64\jre1.8.0_40.msi
Tree (..\Java):
OPSI\control
CLIENT_DATA\javavm.ins
CLIENT_DATA\deljvm.ins
CLIENT_DATA\subdeljava.ins
CLIENT_DATA\Uninstall_Java.exe
CLIENT_DATA\java.png
Kopieren und Umbenennen
Später ermitteln der Version Nummer
#cs ---------------------------------------------------------------------------- AutoIt Version: 3.3.8.1 Author: myName Script Function: Template AutoIt script. #ce ---------------------------------------------------------------------------- ; Script Start - Add your code below here #include <File.au3> #include <Array.au3> Local $sPath = @ScriptDir Local $aPath = StringSplit( @ScriptDir, "\" ) Local $sPathTo = "C:\Temp\" & $aPath[$aPath[0]] local $extention = ".msi" ;_ArrayDisplay($sFolderList, "$Folderolder") ;MsgBox ( 1, "Zeil Pfad", $sPathTo ) DirRemove ( $sPathTo , 1 ) Local $sFolderList = _FileListToArray($sPath , "*" , 2 ) local $i = 0 For $i = 1 to $sFolderList[0] Local $sFileList = _FileListToArray($sPath & "\" & $sFolderList[$i] , "jre*" , 2 ) if $sFileList <> 0 Then if $sFileList[0] = 1 Then ;_ArrayDisplay($sFileList, "$sFileList") $sFrom = $sPath & "\" & $sFolderList[$i] & "\" & $sFileList[$sFileList[0]] $sTo = $sPathTo & "\" & $sFolderList[$i] DirCopy ( $sFrom, $sTo, 9 ) ;DirRemove ( $sFrom ,1 ) ;MsgBox ( 1, "OK", $sFrom & " => " & $sTo & " " & @error ) Else MsgBox ( 1, "ERROR", "Mehr als ein Subfolder in: " & $sPath & "\" & $sFolderList[$i] ) _ArrayDisplay($sFileList, "$sFileList") EndIf Else ;MsgBox ( 1, "No Subfolders in: ", $sPath & "\" & $sFolderList[$i] ) endif Local $sFileList = _FileListToArray($sPathTo & "\" & $sFolderList[$i] , "*" & $extention , 1 ) if $sFileList <> 0 Then if $sFileList[0] = 1 Then ;_ArrayDisplay($sFileList, "$sFileList") $sFrom = $sPathTo & "\" & $sFolderList[$i] & "\" & $sFileList[1] $sTo = $sPathTo & "\" & $sFolderList[$i] & "\" & $sFolderList[$i] & $extention FileMove ( $sFrom, $sTo) ;MsgBox ( 1, "OK", $From & " => " & $to ) Else MsgBox ( 1, "ERROR", "Mehr als eine *.MSI in: " & $sPath & "\" & $sFolderList[$i] ) _ArrayDisplay($sFileList, "$sFileList") EndIf Else ;MsgBox ( 1, "No *.MSI Files in: ", $sPath & "\" & $sFolderList[$i] ) endif Next Exit
; (c) Robert Tauber in anlenung an Paket von uib gmbh ; Update was ist zu tun? ; 1. Hol dir die Aktuelle version 32 und 64 bit ; http://java.com/de/download/windows_manual.jsp?locale=de ; 2. Startet die instalation aber klikt nicht auf [Instaliren] ; 3. Öfnet den Pfaht ; C:\Users\%USERNAME%\AppData\LocalLow\Sun\Java ; 4. Kopirt dort die ortner ; jre1.7.0_45 ; jre1.7.0_45_x64 ; oder so änlich ; 5. Fügt sie unter ; \\OPSI4\opsi_workbench\localboot\javavm\CLIENT_DATA\Java ; ein ; 6. Ändere die Variablen so das sie zum neuen Ortner passen ; set $AktMsi32$ = "jre1.7.0_45.msi" ; set $AktMsi64$ = $AktMsi32$ ; Set $msi32path$ = "%ScriptPath%\Java\jre1.7.0_45" ; Set $msi64path$ = "%ScriptPath%\Java\jre1.7.0_45_x64" ; 7. Teste es :-P ; ; Kompatibel für Win 7 ; Vemutlich nicht Kompatibel mit Win 2000 ; Header der Ursprünglichen pakets ;=========================================== ; Copyright (c) uib gmbh (www.uib.de) ; This sourcecode is owned by uib ; and published under the Terms of the General Public License. ;see ;http://www.oracle.com/technetwork/java/javase/silent-136552.html ;http://www.oracle.com/technetwork/java/javase/jre-install-137694.html ;=========================================== [Aktionen] requiredWinstVersion >= "4.10.8.3" setLogLevel = 5 Message "Installing Oracle Java Virtual Machine jre 1.6 or jre 1.7..." DefVar $ExitCode$ DefVar $INST_MsVersion$ DefVar $INST_SystemType$ DefVar $INST_architecture$ DefVar $JAVAVERSION$ DefVar $JAVA32_VER$ DefVar $JAVA64_VER$ DefVar $InstallPlugins$ DefVar $MySystemRoot$ DefVar $success$ DefVar $AktMsi32$ DefVar $AktMsi64$ DefVar $msi32path$ DefVar $msi64path$ DefVar $msiinstall$ DefVar $InstalledJavaExe$ DefVar $Temp$ DefVar $WinstRegKey$ DefVar $Flag$ Set $WinstRegKey$ = "HKLM\SOFTWARE\opsi.org\winst" Set $Flag$ = GetRegistryStringValue32("["+$WinstRegKey$+"] "+"RebootFlag") DefStringlist $INST_MsVersionMap$ set $Temp$ = EnvVar("TEMP") Set $INST_SystemType$ = GetSystemType set $INST_MsVersion$ = GetMsVersionInfo set $INST_MsVersionMap$ = GetMSVersionMap set $INST_architecture$ = GetProductProperty("install_architecture","64 only") ; "system specific" "both" "64 only" "32 only" set $MySystemRoot$ = "%"+"systemroot"+"%" set $success$ = "true" ;set $JAVA32_EXE$="jre-7u25-windows-i586.exe" ;set $JAVA64_EXE$="jre-7u25-windows-x64.exe" set $AktMsi32$ = "jre_#_x32.msi" set $AktMsi64$ = "jre_#_x64.msi" Set $msi32path$ = "C:\Temp\Java\jre_#_x32" Set $msi64path$ = "C:\Temp\Java\jre_#_x64" ;set $AktMsi32$ = "jre1.7.0_45.msi" ;set $AktMsi64$ = $AktMsi32$ ;Set $msi32path$ = "c:\temp\Java\jre1.7.0_45" ;Set $msi64path$ = "c:\temp\Java\jre1.7.0_45_x64" ;Set $msi32path$ = "%ScriptPath%\Java\jre1.7.0_45" ;Set $msi64path$ = "%ScriptPath%\Java\jre1.7.0_45_x64" set $JAVAVERSION$ = GetProductProperty("javaversion","jre7") set $msiinstall$ = "True" set $InstallPlugins$ = "IEXPLORER=1 MOZILLA=1" ;RT: Speicher platz Überprüfen if not(HasMinimumSpace ("%SYSTEMDRIVE%", "200 MB")) LogError "Not enough space on %SystemDrive%, " + $MinimumSpace$ + " on drive %SystemDrive% needed for Java 1.6 or 1.7" isFatalError ; Stop process and set installation status to failed endif ;RT: Betribssystem ok if $INST_MsVersion$ < "6.0" LogError "Minimum Windows Vista is required for this Skript" isFatalError endif ;RT Bild herzeigen ShowBitmap "%scriptpath%\java.png" "Oracle Java VM" if not ($Flag$ = "1" ) Message "Un-Installing Oracle Java Virtual Machine jre 1.6 or jre 1.7..." ;RT unterprog aufrufen ; deinstalirt Java (Umbau auf Auto it skript vieleicht mit exitcode check) if FileExists("%ScriptPath%\subdeljava.ins") comment "start uninstall" sub "%ScriptPath%\subdeljava.ins" endif Set $Flag$ = "1" Registry_SaveRebootFlag ExitWindows /ImmediateReboot endif if ($Flag$ = "1" ) comment "installing" Set $Flag$ = "0" Registry_SaveRebootFlag DosInAnIcon_Q DosInAnIcon_Copy ;RT: Instaliert Java 32 ; + Beschreibung der daten beschafung if (($INST_SystemType$ = "x86 System") and ($INST_architecture$ = "system specific")) or ($INST_architecture$ = "both") or ($INST_architecture$ = "32 only") ;RT: da vorher uninstall macht doch nut Firefox sin comment "kill a running firefox" Message "Installing Oracle Java Virtual Machine 32 bit ..." killtask "firefox.exe" killtask "jqs.exe" killtask "java.exe" killtask "javaw.exe" ;RT: Scheint notwendig zu sein habs noch net ohne getestet if $INST_SystemType$ = "64 Bit System" comment "registry hack for silent install 32 bit on 64 Bit Systems" ; see http://www.myitforum.com/forums/tm.aspx?high=&m=215451&mpage=1#215451 Registry_redirect_64_profile_image_to_32 /64bit endif if $msiinstall$ = "True" Execwith_autoit_close_proxy "%SCRIPTPATH%\autoit3.exe" WINST /letThemGo Execwith_autoit_zertifikat "%SCRIPTPATH%\autoit3.exe" WINST /letThemGo ;Winbatch_oracle_silent_install_32 Winbatch_oracle_msi_install_32 Sub_check_exitcode endif Message "Check Java Virtual Machine 32 bit ..." ;RT: weis net was das macht if CompareDotSeparatedNumbers("%WinstVersion%","4.11.2") >= "0" includelog "c:\tmp\"+$JAVA32_VER$+"_x86.log" "20" endif Killtask "autoit3.exe" ;RT: Scheinbar der Zweite teil des "registry hack" zu sein if $INST_SystemType$ = "64 Bit System" comment "registry hack for silent install 32 bit on 64 Bit Systems" Registry_redirect_64_profile_image_to_64 /64bit endif ;RT: Überprüfen was instalirt wurde Set $InstalledJavaExe$ = "%ProgramFilesDir%\java\" +$JAVAVERSION$ +"\bin\java.exe" DOSInAnIcon_java_version comment "disable auto updater" ; see http://wpkg.org/Java Winbatch_oracle_silent_disable_update ;Sub_check_exitcode Registry_disable_update ;Files_del endif ; 32 Bit if ($INST_SystemType$ = "64 Bit System") and (($INST_architecture$ = "system specific") or ($INST_architecture$ = "both") or ($INST_architecture$ = "64 only")) comment "kill a running firefox" Message "Installing Oracle Java Virtual Machine 64 Bit..." killtask "firefox.exe" killtask "jqs.exe" killtask "java.exe" killtask "javaw.exe" if ($INST_MsVersion$ = "6.0") and ("1" < getValue("product_type_nr",$INST_MsVersionMap$)) and ($INST_SystemType$ = "64 Bit System") ;LogWarning "silent installation on 2008x64 doesn't works at the moment" ;Files_create_low_dir comment "on 2008x64 we working with msi" Set $msiinstall$ = "True" endif ;killtask "msiexec.exe" ;killtask "msiexec.exe" ;killtask "msiexec.exe" ;killtask "msiexec.exe" if $msiinstall$ = "True" Execwith_autoit_close_proxy "%SCRIPTPATH%\autoit3.exe" WINST /letThemGo Execwith_autoit_Wrapper "%SCRIPTPATH%\autoit3.exe" WINST /letThemGo Winbatch_oracle_msi_install_64 Sub_check_exitcode endif if CompareDotSeparatedNumbers("%WinstVersion%","4.11.2") >= "0" includelog "c:\tmp\"+$JAVA64_VER$+"_x64.log" "20" endif Killtask "autoit3.exe" comment "disable auto updater" ; see http://wpkg.org/Java Registry_disable_update /64Bit Set $InstalledJavaExe$ = "%ProgramFiles64Dir%\java\" +$JAVAVERSION$ +"\bin\java.exe" DOSInAnIcon_java_version ;Files_del endif ; 64 Bit if not ($success$ = "true") logError "Fatal: one or more installations are failed " isFatalError endif endif ; zusätzliches File möglich ;if FileExists("%ScriptPath%\custom_ins_dir\custom.ins") ; sub "%ScriptPath%\custom_ins_dir\custom.ins" ;endif ExitWindows /Reboot ;=============================================================================== [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 set $success$ = "false" endif endif endif endif [DosInAnIcon_Q] "p:\!drivemap\map_Q.exe" [DosInAnIcon_Copy] "Q:\Java\CopyFolder.exe" ;RT: Autoit Killt nerfige abfragen [Execwith_autoit_close_proxy] WinWait("Verbindung","Verbindung") Sleep(500) ; activating WinActivate("Verbindung","Verbindung") send ("!{F4}") exit [Execwith_autoit_zertifikat] WinWait("Sicherheitshinweis") Sleep(500) ; activating WinActivate("Sicherheitshinweis") send ("J") exit ; wird im 64 bit teil verwendet [Execwith_autoit_Wrapper] WinWait("Error") Sleep(500) ; activating WinActivate("Error") send ("ENTER") exit ;RT: setup mit MSI [Winbatch_oracle_msi_install_32] msiexec /i "$msi32path$\$aktmsi32$" /qb! /lie+ "c:\tmp\$JAVA32_VER$_x86.log" ADDLOCAL=ALL $InstallPlugins$ REBOOT=ReallySuppess SYSTRAY=0 JAVAUPDATE=0 JU=0 AUTOUPDATECHECK=0 ARPURLUPDATEINFO='http://www.opsi.org' ; /qb! [Winbatch_oracle_msi_install_64] msiexec /i "$msi64path$\$aktmsi64$" /qb! /lie+ "c:\tmp\$JAVA64_VER$_x64.log" ADDLOCAL=ALL $InstallPlugins$ REBOOT=ReallySuppess SYSTRAY=0 JAVAUPDATE=0 JU=0 AUTOUPDATECHECK=0 ARPURLUPDATEINFO='http://www.opsi.org' ; /qb! ;RT: vieleicht geht das [Winbatch_oracle_silent_install_32] c:\tmp\$JAVA32_EXE$ /s /v"/qb! /lie+ c:\tmp\$JAVA32_VER$_x86.log ADDLOCAL=ALL $InstallPlugins$ REBOOT=ReallySuppess SYSTRAY=0 JAVAUPDATE=0 JU=0 AUTOUPDATECHECK=0 ARPURLUPDATEINFO='http://www.opsi.org'" ;RT Regestry Hack [Registry_redirect_64_profile_image_to_32] openkey [HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\ProfileList\S-1-5-18] set "ProfileImagePath"=REG_EXPAND_SZ:"$MySystemRoot$\syswow64\config\systemprofile" [Registry_redirect_64_profile_image_to_64] openkey [HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\ProfileList\S-1-5-18] set "ProfileImagePath"=REG_EXPAND_SZ:"$MySystemRoot$\config\systemprofile" ;RT: Welches Java ist drauf? [DOSInAnIcon_java_version] "$InstalledJavaExe$" -version [DOSInAnIcon_instalation_abgeschlossen] @echo off tasklist |find /i "prog.exe" >nul :while1 if %errorlevel% == 0 ( tasklist |find /i "msiexec" >nul goto :while1 ) echo 1 [Winbatch_oracle_silent_disable_update] ;RT: Scheint vorhanden zu sein und zu funktioniren msiexec /x {4A03706F-666A-4037-7777-5F2748764D10} /qb-! [Registry_disable_update] ;RT: und nochmal updates off openkey [HKEY_LOCAL_MACHINE\SOFTWARE\JavaSoft\Java Update\Policy] set "EnableJavaUpdate"=REG_DWORD:0 ;RT: wird nicht aufgerufen [winbatch_start_taskmgr] taskmgr.exe [Files_del] delete -sf "c:\temp" ;delete -f "c:\tmp\$aktmsi64$" ;delete -f "c:\tmp\$aktmsi32$" ;delete -f "c:\tmp\Data1.cab" [Registry_SaveRebootFlag] openKey [$WinstRegKey$] set "RebootFlag" = "$Flag$"
; Copyright (c) uib gmbh (www.uib.de) ; This sourcecode is owned by uib ; and published under the Terms of the General Public License. [Aktionen] requiredWinstVersion >= "4.10.8.3" Message=Deinstalling Oracle Java Virtual Machine 1.6 ... DefVar $UninstallCommand$ DefVar $DisplayName$ DefVar $ExitCode$ if FileExists("%ScriptPath%\subdeljava.ins") comment "start uninstall" sub "%ScriptPath%\subdeljava.ins" endif [Winbatch_oracle_uninstall] $UninstallCommand$