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.
Inhaltsverzeichnis
Java mit einem Administrator-Konto installieren
- Als Administrator an CLIENT1 anmelden
- Folgende Dateien von Java-Downloads für alle Betriebssysteme nach C:\Sourcen herunterladen
- Windows Offline: jre-8u40-windows-i586.exe
- Windows Offline (64-bit): jre-8u40-windows-x64.exe
- 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
- Command Prompt (Admin) starten
- Nach C:\Sourcen wechseln
- 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
- Command Prompt (Admin)
- Als Administrator funktioniert die Installation wie erwartet…
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.
- PsExec von Download PsTools nach C:\Sourcen herunterladen und entpacken
- Command Prompt (Admin) starten
- Nach C:\Sourcen\PsTools wechseln
- Command Prompt als SYSTEM mit folgendem Befehl starten
PsExec.exe -accepteula -i -s -d cmd.exe
- Command Prompt (Admin)
- Im neuen Command Prompt (System) mit folgendem Befehl den Benutzer überprüfen
whoami
- Command Prompt (System)
- Nach C:\Sourcen wechseln
- Java RE mit folgendem Befehl installieren
jre-8u40-windows-i586.exe INSTALLCFG=C:\Sourcen\java_install.cfg /L C:\Sourcen\install-java-re8u40.log
- Command Prompt (System)
- Die Installation startet, bricht aber ab
- Kein Java 🙁
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
- jre-8u40-windows-i586.exe doppelklicken, aber nicht fortfahren
- Die Datei jre1.8.0_40.msi von C:\Users\Administrator\AppData\LocalLow\Sun\Java\jre1.8.0_40 nach C:\Sourcen kopieren
- 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!-
- Die Installation startet, bricht aber mit einer Fehlermeldung ab
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
- Notepad starten
- Eine leere Datei nach C:\ProgramData\Oracle\Java\java.settings.cfg speichern
- 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!-
- Die Installation startet und … läuft durch!
- Die Log-Datei
- Die Datei java.settings.cfg
- Der Programme-Ordner
Leider werden in dieser Version die Einstellungen STATIC=Disable und INSTALLDIR=C:\Program Files\Java\jre8 nicht übernommen! 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
- Orca starten
- Die Datei jre1.8.0_40.msi öffnen
- Transform > New Transform
- Auf der linken Seite auf den Table Directory klicken
- INSTALLDIR auf jre8 ändern
- Bei dieser Gelegenheit gleich auf der linken Seite auf Property klicken
- Folgende Werte anpassen
- Transform > Generate Transform > C:\Sourcen\jre8.mst > Speichern
- Orca schließen
- 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!-
- Command Prompt (System)
- Die Installation wird gestartet und läuft durch
- Die Einstellungen in der mst-Datei und in der java_install.cfg-Datei wurden übernommen
- z.B. die Einstellung WEB_JAVA_SECURITY_LEVEL=H
Die Installation des 32-bit Java funktioniert jetzt auf meinem 64-bit Windows unter dem System-Konto. 🙂
Java konfigurieren
- Die Datei DeploymentRuleSet.jar erstellen
- 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
- 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
- Alle Dateien nach C:\Windows\Sun\Java\Deployment kopieren
- Die Einstellungen…
- DeploymentRuleSet.jar
Installation mit AutoIt automatisieren
- 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!
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.
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.
Schaut hier mal nach, zwecks GPO Verteilung. Bin ich auch grad dran am Basteln.
https://maddog2050.wordpress.com/2015/09/09/gpo-deploying-java-8-update-60