Oracle Java 8 Update 40 unter System-Konto installieren und konfigurieren

Weil Oracle den Support für Java RE 7 mitte April einstellt, musste ich eine Application in ConfigMgr 2012 R2 für Java RE 8 Update 40 erstellen. Aufgrund des Aufwands und Recherche-Arbeit habe ich dann diesen Artikel für alle erstellt, die Oracle Java 8 Update 40 unter System-Konto installieren und konfigurieren müssen.

Java mit einem Administrator-Konto installieren

  1. Als Administrator an CLIENT1 anmelden
  2. Folgende Dateien von Java-Downloads für alle Betriebssysteme nach C:\Sourcen herunterladen
    1. Windows Offline: jre-8u40-windows-i586.exe
    2. Windows Offline (64-bit): jre-8u40-windows-x64.exe
  3. Mit dem Notepad die Datei C:\Sourcen\java_install.cfg mit folgendem Inhalt erstellen (siehe 20 Installing With a Configuration File)
    INSTALL_SILENT=Enable
    INSTALLDIR=C:\Program Files\Java\jre8
    STATIC=Disable
    AUTO_UPDATE=Disable
    WEB_JAVA=Enable
    WEB_JAVA_SECURITY_LEVEL=H
    WEB_ANALYTICS=Disable
    EULA=Disable
    REBOOT=Disable
    NOSTARTMENU=Enable
    SPONSORS=Disable
  4. Command Prompt (Admin) starten
  5. Nach C:\Sourcen wechseln
  6. Java RE mit folgendem Befehl installieren (der Pfad zur cfg-Datei muss immer komplett angegeben werden)
    jre-8u40-windows-i586.exe INSTALLCFG=C:\Sourcen\java_install.cfg
  7. Command Prompt (Admin) JAVA_RE_8-(33)
  8. Als Administrator funktioniert die Installation wie erwartet… JAVA_RE_8-(34)

Zum Simulieren des System-Kontos das Programm PsExec herunterladen

…aber, der ConfigMgr installiert Applications mit dem System-Konto des Computers. Um das zu simulieren, verwende ich das Programm PsExec aus den PsTools von Sysinternals. Also, Java wieder deinstallieren und als System installieren.

  1. PsExec von Download PsTools nach C:\Sourcen herunterladen und entpacken
  2. Command Prompt (Admin) starten
  3. Nach C:\Sourcen\PsTools wechseln
  4. Command Prompt als SYSTEM mit folgendem Befehl starten
    PsExec.exe -accepteula -i -s -d cmd.exe
  5. Command Prompt (Admin)JAVA_RE_8-(1)
  6. Im neuen Command Prompt (System) mit folgendem Befehl den Benutzer überprüfen
    whoami
  7. Command Prompt (System) JAVA_RE_8-(2)
  8. Nach C:\Sourcen wechseln
  9. Java RE mit folgendem Befehl installieren
    jre-8u40-windows-i586.exe INSTALLCFG=C:\Sourcen\java_install.cfg /L C:\Sourcen\install-java-re8u40.log
  10. Command Prompt (System) JAVA_RE_8-(3)
  11. Die Installation startet, bricht aber ab JAVA_RE_8-(5)
  12. Kein Java 🙁 JAVA_RE_8-(4)

Auf einem 64-bit Windows kann der Installer (jre-8u40-windows-i586.exe) offensichtlich Java nicht installieren. Das hängt anscheinend mit der Ordnerumleitung von Windows (SysWOW64) zusammen. Dafür gibt es seit einiger Zeit einen Eintrag bei Oracle (siehe JDK-7014194 : 32-bit JRE silent install fails on WINDOWS 2008 SERVER 64-bit under System account). Man muss also die msi-Datei aus dem Installer kopieren und damit Java RE installieren.

jre1.8.0_40.msi kopieren und Java installieren

  1. jre-8u40-windows-i586.exe doppelklicken, aber nicht fortfahren
  2. Die Datei jre1.8.0_40.msi von C:\Users\Administrator\AppData\LocalLow\Sun\Java\jre1.8.0_40 nach C:\Sourcen kopieren
  3. Java RE mit folgendem Befehl installieren
    msiexec.exe /i jre1.8.0_40.msi INSTALLCFG=C:\Sourcen\java_install.cfg /L C:\Sourcen\install-java-re8u40.log /qb!-
  4. Die Installation startet, bricht aber mit einer Fehlermeldung ab JAVA_RE_8-(7) JAVA_RE_8-(8)

Bei Start der Installation mittels msi-Datei wird in C:\Program Files (x86)\Java\jre8 die Datei Installer.exe erstellt, welche die Installation durchführt. Die Datei kann aber auf die Datei java.settings.cfg nicht zugreifen. Diese Datei dürfte von jre-8u40-windows-i586.exe erstellt werden, nicht aber mittels msi. Die Datei java.settings.cfg muss also manuell erstellt werden.

java.setting.cfg erstellen und Java installieren

  1. Notepad starten
  2. Eine leere Datei nach C:\ProgramData\Oracle\Java\java.settings.cfg speichern JAVA_RE_8-(9)
  3. Java RE mit folgendem Befehl installieren
    msiexec.exe /i jre1.8.0_40.msi INSTALLCFG=C:\Sourcen\java_install.cfg /L C:\Sourcen\install-java-re8u40.log /qb!-
  4. Die Installation startet und … läuft durch! JAVA_RE_8-(10)
  5. Die Log-Datei JAVA_RE_8-(12)
  6. Die Datei java.settings.cfg JAVA_RE_8-(11)
  7. Der Programme-Ordner JAVA_RE_8-(14)

Leider werden in dieser Version die Einstellungen STATIC=Disable und INSTALLDIR=C:\Program Files\Java\jre8 nicht übernommen! JAVA_RE_8-(13) Nicht nur, dass der Installationspfad nicht stimmt, es wird auch eine statische Installation durchgeführt. Statisch heißt in diesem Fall, dass  Java in einem Pfad mit der Versionsnummer (jre1.8.0_40) installiert wird, damit bei einem Update mehrere Versionen nebeneinander existieren können. Das ist speziell für Entwickler hilfreich, auf einem Desktop-Rechner brauche und will ich das aber nicht. Muss doch für jede Java-Version auch eine Windows Firewall-Ausnahme erstellt werden. Nach etwas Recherche habe ich herausgefunden, dass zuminstest der Pfad mittels mst-Datei gesetzt werden kann. Also den Orca MSI-Editor herunterladen und installieren.

Mit Orca die Datei jre8.mst erstellen und Java installieren

  1. Orca starten
  2. Die Datei jre1.8.0_40.msi öffnen
  3. Transform > New Transform JAVA_RE_8-(15)
  4. Auf der linken Seite auf den Table Directory klicken
  5. INSTALLDIR auf jre8 ändern JAVA_RE_8-(16)
  6. Bei dieser Gelegenheit gleich auf der linken Seite auf Property klicken
  7. Folgende Werte anpassen
    1. AUTOUPDATECHECK = 0
    2. JAVAUPDATE = 0 JAVA_RE_8-(17)
  8. Transform > Generate Transform > C:\Sourcen\jre8.mst > Speichern JAVA_RE_8-(18)
  9. Orca schließen
  10. Java RE mit folgendem Befehl installieren
    msiexec.exe /i jre1.8.0_40.msi INSTALLCFG=C:\Sourcen\java_install.cfg TRANSFORMS=jre8.mst /L C:\Sourcen\install-java-re8u40.log /qb!-
  11. Command Prompt (System) JAVA_RE_8-(20)
  12. Die Installation wird gestartet und läuft durch JAVA_RE_8-(21)
  13. Die Einstellungen in der mst-Datei und in der java_install.cfg-Datei wurden übernommen JAVA_RE_8-(22)
  14. z.B. die Einstellung WEB_JAVA_SECURITY_LEVEL=H JAVA_RE_8-(23) JAVA_RE_8-(24)

Die Installation des 32-bit Java funktioniert jetzt auf meinem 64-bit Windows unter dem System-Konto. 🙂

Java konfigurieren

  1. Die Datei DeploymentRuleSet.jar erstellen
  2. Die Datei deployment.config mit folgendem Inhalt erstellen (siehe 21 Deployment Configuration File and Properties)
    deployment.system.config = file:///C:/Windows/Sun/Java/Deployment/deployment.properties
    deployment.system.config.mandatory = true
  3. Die Datei deployment.properties mit folgendem Inhalt erstellen (siehe 21 Deployment Configuration File and Properties)
    deployment.javaws.autodownload=NEVER
    deployment.javaws.autodownload.locked
    deployment.expiration.check.enabled=FALSE
    deployment.expiration.decision=NEVER
    deployment.expiration.decision.suppression=TRUE
    deployment.security.level=HIGH
    deployment.security.level.locked
    deployment.security.mixcode=HIDE_RUN
    deployment.security.mixcode.locked
    deployment.javaws.associations=3
  4. Alle Dateien nach C:\Windows\Sun\Java\Deployment kopieren JAVA_RE_8-(29)
  5. Die Einstellungen…JAVA_RE_8-(31) JAVA_RE_8-(32)
  6. DeploymentRuleSet.jar JAVA_RE_8-(30)

Installation mit AutoIt automatisieren

  1. Für die ConfigMgr-Application habe ich folgendes AutoIt-Script erstellt und nur für x86 kompiliert (siehe Ein einfaches Netzwerk, Teil 14a)
    #Region ;**** Directives created by AutoIt3Wrapper_GUI ****
    #AutoIt3Wrapper_UseX64=n
    #EndRegion ;**** Directives created by AutoIt3Wrapper_GUI ****
    ;//------------------------------------------------------------------------------------------
    ;//
    ;// Name:			Einfaches-Netzwerk
    ;// Author:		Dietmar Haimann
    ;// Version:		8 Update 40
    ;// Description:	          Installiert Oracle Java RE
    ;//
    ;//------------------------------------------------------------------------------------------
    
    ;//------------------------------------------------------------------------------------------
    ;// AutoIt TrayIcon verstecken
    ;//------------------------------------------------------------------------------------------
    
    Opt("TrayIconHide", 1)
    
    FileCopy("java.settings.cfg", @AppDataCommonDir & "\Oracle\Java\", 9)
    FileCopy("java_install.cfg", "C:\Temp\", 9)
    Sleep(2000)
    
    ;//Versionsnummer
    Local $JRE_Version = "jre8"
    Local $Update_Version = "1.8.0_40"
    Local $Install_Args = "INSTALLCFG=C:\Temp\java_install.cfg"
    
    If FileExists("C:\Temp\Install_" & $JRE_Version & "_x86.log") Then FileDelete("C:\Temp\Install_" & $JRE_Version & "_x86.log")
    If FileExists("C:\Temp\Install_" & $JRE_Version & "_x64.log") Then FileDelete("C:\Temp\Install_" & $JRE_Version & "_x64.log")
    
    ;// Installation auf 32-bit OS
    If @OSArch = "X86" Then
    	RunWait("msiexec.exe /i x86\jre" & $Update_Version & ".msi " & $Install_Args & " TRANSFORMS=x86\" & $JRE_Version & ".mst /L C:\Temp\Install_" & $JRE_Version & "_x86.log /qn")
    EndIf
    
    ;// Installation auf 64-bit OS
    If @OSArch = "X64" Then
    	RunWait("msiexec.exe /i x86\jre" & $Update_Version & ".msi " & $Install_Args & " TRANSFORMS=x86\" & $JRE_Version & ".mst /L C:\Temp\Install_" & $JRE_Version & "_x86.log /qn")
    	RunWait("msiexec.exe /i x64\jre" & $Update_Version & ".msi " & $Install_Args & " TRANSFORMS=x64\" & $JRE_Version & ".mst /L C:\Temp\Install_" & $JRE_Version & "_x64.log /qn")
    EndIf
    
    ;// (Sicherheits-)Einstellungen
    If FileExists(@ProgramFilesDir & "\Java\" & $JRE_Version) Then
    	FileCopy("java.*", @ProgramFilesDir & "\Java\" & $JRE_Version &"\lib\security\", 9)
    EndIf
    
    FileCopy("deployment*.*", @WindowsDir & "\Sun\Java\Deployment\" ,9)

Ich hoffe, dass Oracle in der nächsten Version diese Probleme behebt. Was für ein Aufwand! 🙁 Unter Java RE 7 war die Installation kein Problem. Sollte ich was falsch verstanden haben oder sonst was falsch machen, bitte lasst es mich wissen und hinterlasst einen Kommentar! Danke!

3 Gedanken zu „Oracle Java 8 Update 40 unter System-Konto installieren und konfigurieren

  1. Hallo, ich suche vergeblich eine Möglichkeit Java automatisch im Hintergrund und ohne Benutzeraktion aktualisieren zu lassen (so wie man es bei Flash auch kann). Das Ganze unter einem Win7-Benutzerkonto ohne Adminrechte. Gibt es auch hier mittlerweile eine einfach umzusetzende Lösung? Über eine Rückinfo wäre ich sehr dankbar.

  2. Leider, da weiß ich keine Lösung. Ich verteile Java-Updates als Softwarepaket mittels Microsoft ConfigMgr, welches die Benutzer bewusst installieren, weil alle Java-Prozesse und Browser beendet sein müssen. Da habe ich noch keine „schöne“ Lösung dafür gefunden. Leider.

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert