Java 32bit EXE auf 64bit Windows verteilen schlägt fehl

Bisher habe ich die jeweils neueste Version von Java immer gemäss dieser Anleitung verteilt. Dabei hat man aus der EXE Datei die MSI Datei extrahiert (und dann mit Orca angepasst). Dieses Vorgehen wird aber schon länger nicht mehr von Oracle unterstützt, daher wollte ich bei der neuen Version den von Oracle empfohlenen Weg einschlagen.

image_thumb

Gemäss Oracle kann man die exe Dateil silent installieren. Alternativ bieten sie auch weiterhin ein MSI an, das aber nur kostenpflichtig erhältlich ist:

image_thumb4

Vielleicht wär das ja zahlbar und sicher praktisch. Eine Suche war dann aber ziemlich ernüchternd… (CHF9,500.00 – CHF11,668.00)

image_thumb5

Also versuchte ich die EXE Datei, die man von www.java.com herunterlädt, gemäss der Beschreibung von Oracle silent zu installieren.

image

Statt mit dem kostenlosen Download zu beginnen, wählt man alle Java-Downloads und dann die gewünschte Offline Installation aus. Da wir mit dem 32bit Internet-Explorer arbeiten, sollte auch die Java Installation für 32bit ausgewählt werden, unabhängig davon, ob ein 64bit Windows installiert wurde.

image

Um die Installation zu steuern, kann man ein ”Configuration File” mitgeben oder Optionen für die “Command-Line” Installation anfügen. Die Optionen sind die gleichen, die man auch für das “Configuration File” benutzen kann und finden sich hier.

Dies ergibt dann für meine Bedürfnisse folgende Installation:

jre-8u25-windows-i586.exe AUTO_UPDATE=Disable /s

image

Ein Problem dabei ist, dass die alte Version (in meinem Fall Java 7 Update 67) nicht deinstalliert wird.

image

Um diese Version zu deinstallieren, kann man den Befehl

msiexec /x {26A24AE4-039D-4CA4-87B4-2F03217067FF} /qn

verwenden. Bei der neuen Version von SCCM (ab 2012) kann man auch angeben, dass die alte Version gelöscht werden soll, wenn man die neue installiert.

Leider funktioniert diese Vorgehensweise nicht auf 64bit Computern für die 32bit Javaversion (obwohl das der von Oracle empfohlene Weg für eine silent Installation ist), wenn der Befehl über den System Account ausgeführt wird (wie meistens bei Softwareverteilung).

Die EXE Datei extrahiert zuerst ein MSI. Wenn man das als lokaler Administrator durchführt, wird das MSI in c:\users\<username>\appdata\locallow\sun\java\jre<versionsnummer> extrahiert und dann ausgeführt. Wenn der Systemaccount die EXE Datei ausführt, wird die 32bit Version in c:\windows\syswow64\config\systemprofile\appdata\locallow\sun\java\… entpackt, die 64bit Version in c:\windows\system32\… (ist zwar nicht ganz logisch mit 32 und 64, ist aber so…).

image

Der Windows Installer von einem 64bit Windows ist aber auch eine 64bit Anwendung und sucht die Datei nachher im 64bit Ordner c:\windows\system32\… wo er sie nicht finden kann, was dann mit einem Fehlercode 1619 quittiert wird, den man normalerweise gar nicht zu Gesicht bekommt, weil SCCM (oder andere Deploymentlösungen) die Installation silent mit dem System-Account durchführen…

image

Nochmals kurz zusammengefasst …

  • Oracle empfiehlt eine silent Installation mit der EXE oder mit dem kostenpflichtigen MSI für etwa CHF 10’0000.-
  • Wählt man die Installation mit der EXE Datei, kann man ein 32bit Java nur auf ein 64bit Windows installieren, wenn der Benutzer zwar lokale Adminrechte hat, aber nicht der System-Account ist.
  • Und schon ist man in der Sackgasse… Danke für die Empfehlung, Oracle.

Es gibt Wege, wie man auch das hinbiegen könnte (wie dieser, der einen Ordner vorab erstellt und dann einen Junction Point benutzt, um dem System vorzugaukeln, dass der Ordner “system32” der gleiche ist wie “syswow64”. Aber ich gehe doch lieber den alten Weg über das extrahierte MSI, der von Oracle nicht mehr unterstützt wird…

Böse, wer dahinter Kalkül von Oracle vermuten würde, das teure MSI zu verkaufen Zwinkerndes Smiley

2 Gedanken zu „Java 32bit EXE auf 64bit Windows verteilen schlägt fehl

    1. ictschule Autor

      Hallo Bernhard
      Vielen Dank für den Link.
      Ich habe die Version auch wieder wie früher über das angepasste MSI verteilt (https://ictschule.wordpress.com/2011/11/06/java-verteilen/). Wenn es verschiedene Wege gibt, etwas zu erreichen, bevorzuge ich meist denjenigen, der „supported“ ist. Das war der Grund, den Weg über die angepasste EXE-Datei zu versuchen, was dann ja recht frustrierend war. Da die Dokumentation dazu bereits begonnen war, habe ich sie fertiggestellt. Vielleicht hält sie ja so die eine oder den anderen davon ab, den gleichen Weg zu beschreiten und Zeit zu verschwenden…
      Gruss, Christian

      Antwort

Hinterlasse einen Kommentar