This is an old revision of the document!
Table of Contents
ETU JavaVM
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
CopyFolder.exe / CopyFolder.au3
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
javavm.ins
; 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$"
deljvm.ins
; 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$
