User Tools

Site Tools


userspace:etu_javavm

This is an old revision of the document!


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

Ich will das ganze bei Gelegenheit vereinfachen bin aber bisher nicht dazu gekommen

; 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

erlaubt es die subdeljava. als uninstall aufzurufen

; 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$
userspace/etu_javavm.1427751719.txt.gz · Last modified: 2021/08/23 08:37 (external edit)