Java Runtime Enviroment 1.8_25

Moderators: MVogt, moderators

MarcW
Posts: 283
Joined: 09. Jan 2008, 08:57
Contact:

Re: Java Runtime Enviroment 1.8_25

Post by MarcW » 27. May 2015, 16:07

@ Anton:

Wie wurde bei diesem Script das Problem mit den javapath-Variablen gelöst?

Da hänge ich gerade fest.

Gruß Marc

AntonD
Posts: 76
Joined: 14. Mar 2013, 11:04
Contact:

Re: Java Runtime Enviroment 1.8_25

Post by AntonD » 27. May 2015, 16:14

Hallo Marc,

in dem von mir genannten Link findest du unter dem Punkt "Mit Orca die Datei jre8.mst erstellen und Java installieren" eine Anleitung wie du den Pfad ändern kannst.

Grüße
Anton

MarcW
Posts: 283
Joined: 09. Jan 2008, 08:57
Contact:

Re: Java Runtime Enviroment 1.8_25

Post by MarcW » 28. May 2015, 12:27

Bei mir werden bei der Installation über Empirum die Path Variablen und die Links in C:\Programdata\Oracle\Java\javapath nicht angelegt.
Daher bringt java -version im CMD kein Ergebnis.
Java selbst kann ich konfigurieren.

Wenn ich es über die Anleitung mit den PStools installiere, habe ich die Path Variablen im CMD Fenster des Systems enthalten, im User CMD sind sie NICHT drin.
Trage ich sie dann händisch nach, gehts.

Die Links werden bei der PSTools Installation ebenfalls angelegt.

Warum bei der Empiruminstallation nicht?
Ist doch auch eine "System"-User Installation.

seipf
Posts: 101
Joined: 13. Sep 2013, 12:00
Contact:

Re: Java Runtime Enviroment 1.8_25

Post by seipf » 10. Jul 2015, 14:22

Hi,
AntonD wrote: Hier einmal ein Auszug aus meinem Paket für die Version 1.8_45.

Grüße
Anton

Code: Select all

[InstallMSI]
AddMeter -1
1:%SRC%\Setupfiles\java.settings.cfg,%ProgramData%\Oracle\Java\,CLIENT MACHINE USEFILENAME,0
Call MsiExec /I "%SRC%\SetupFiles\jre1.8.0_45.msi" INSTALLCFG="%SRC%\SetupFiles\java_install.cfg" TRANSFORMS="%SRC%\SetupFiles\jre8.mst"  REBOOT=REALLYSUPPRESS ARPSYSTEMCOMPONENT=1 /qn /Li "%MSILogFile%"
If %ErrorLevel% == "3010" Then "RebootRequired" EndIf
If DoesRegKeyExist ("HKLM,SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\{26A24AE4-039D-4CA4-87B4-2F83218045F0},UnInstallString") == "0" & DoesRegKeyExist ("HKLM,SOFTWARE\WOW6432Node\Microsoft\Windows\CurrentVersion\Uninstall\{26A24AE4-039D-4CA4-87B4-2F83218045F0},UnInstallString") == "0" Then "AbortMSIInst" EndIf
Del "%MSILogFile%"
danke AntonD für den Auszug aus deinem Paket, dass hat mir sehr geholfen :D .

@MarcW:
Ich hatte das Problem zweimal auf meiner Test-VM, aber ich denke das war bedingt durch den Snapshot Restore.
Ist es denn bei dir noch vorhanden? Dein Post ist ja schon ein wenig her.

seipf
Posts: 101
Joined: 13. Sep 2013, 12:00
Contact:

Re: Java Runtime Enviroment 1.8_25

Post by seipf » 13. Jul 2015, 08:32

Hallo zusammen,

ich muss mich nochmal korrigieren. Ich habe bei den ersten Client-Installationen festgestellt, dass das Problem von MarcW auch bei uns teilweise auftritt.
Bei 2 von 6 PCs sind keine Symbollinks im Verzeichnis "C:\Programdata\Oracle\Java\javapath" erstellt worden :? .
Bei 4 der 6 PCs sind diese dagegen korrekt erstellt.
Woran kann das liegen?
MarcW wrote:Bei mir werden bei der Installation über Empirum die Path Variablen und die Links in C:\Programdata\Oracle\Java\javapath nicht angelegt.
Daher bringt java -version im CMD kein Ergebnis.
Java selbst kann ich konfigurieren.

Wenn ich es über die Anleitung mit den PStools installiere, habe ich die Path Variablen im CMD Fenster des Systems enthalten, im User CMD sind sie NICHT drin.
Trage ich sie dann händisch nach, gehts.

Die Links werden bei der PSTools Installation ebenfalls angelegt.

Warum bei der Empiruminstallation nicht?
Ist doch auch eine "System"-User Installation.

seipf
Posts: 101
Joined: 13. Sep 2013, 12:00
Contact:

Re: Java Runtime Enviroment 1.8_25

Post by seipf » 14. Jul 2015, 14:47

Hallo nochmal,

ich habe die Ursache zwar nicht gefunden, aber folgenden Code im Paket zusätzlich hinzugefügt.

Code: Select all

#Set:JavaPathCheck, DONTDELETE MACHINE

[Set:JavaPathCheck]
If DoesFileExist ("%CommonAppdata%\Oracle\Java\javapath\java.exe") <> "1" Then "Set:JavaChanges" EndIf

[Set:JavaChanges]
;Symbollinks werden erzeugt
Callhidden "%SRC%\Tools\psexec.exe" -accepteula -s cmd.exe /c mklink "%CommonAppdata%\Oracle\Java\javapath\java.exe" "%programfiles%\Java\jre1.8.0_45\bin\java.exe"
Callhidden "%SRC%\Tools\psexec.exe" -accepteula -s cmd.exe /c mklink "%CommonAppdata%\Oracle\Java\javapath\javaw.exe" "%programfiles%\Java\jre1.8.0_45\bin\javaw.exe"
Callhidden "%SRC%\Tools\psexec.exe" -accepteula -s cmd.exe /c mklink "%CommonAppdata%\Oracle\Java\javapath\javaws.exe" "%programfiles%\Java\jre1.8.0_45\bin\javaws.exe"
#Autoexec.bat:JavaPath

[Autoexec.bat:JavaPath]
;Umgebungsvariable wird gesetzt (vorne (links) im Pfad hinzugefügt)
PATH <%CommonAppdata%\Oracle\Java\javapath
Wenn Java (Oracle) meint es könnte machen was es will, dann kann ich das auch :wink:

@Frank Dethlefsen: Danke für den Code zum Erstellen der Symbolic Links :) .

DCosta
Posts: 10
Joined: 20. Mar 2013, 09:33
Contact:

Re: Java Runtime Enviroment 1.8_25

Post by DCosta » 22. Jul 2015, 09:51

Vielen Dank für diesen Thread.

Ich wäre niemals auf die Idee gekommen dass System keine Berechtigung hat symbolische Links zu erzeugen :shock:
Eure Lösung hat mir sehr geholfen.

Java ist echt eine Plage und Oracle scheint es nur noch schlimmer zu machen.
Empirum Version 15.1 Patch 9

Vittorio
Posts: 101
Joined: 03. Sep 2015, 08:26
Contact:

Re: Java Runtime Enviroment 1.8_25

Post by Vittorio » 15. Sep 2016, 10:09

Hallo zusammen, vielen Dank für die Lösung! Ich habe die Lösung für den Installationsteil ohne PSTools angewendet.

Es reicht aus, dass JavaPathCheck mit dem Flag CLIENT DONTDELETE aufgerufen wird. Dann muss man den Teil

Code: Select all

"C:\Tools\PsExec" -accepteula -s
entfernen, damit nur der Rest bleibt.

Also, die Verknüpfungen werden bei der Installation erzeugt. In meinem Fall installiere ich parallele Versionen von Java (einfach Parameter REMOVEOUTOFDATEJRES=0 setzen, anstatt =1).

Wenn man diese Deinstallation lokal manuell durchführen würde (mit msiexec /x {guid} oder durch systemsteurung, ich paketiere die letzte Version, also die 8.0.101), wird die neueste Version deinstalliert und somit auch die Verknüpfungen, die man bei der Installation erstellt hat (und das ist normal) und kurz davor die Deinstallation beendet wird, werden die Verknüpfungen der nach der Deinstallation größten Version automatisch erzeugt.

Also praktisch: Ich habe auf meinem Testrechner nur die Version 8.0.91 und möchte die Version 8.0.101 parallel installieren. Die Installation klappt und die Verknüpfungen der Version 8.0.101 werden unter

Code: Select all

C:\ProgramData\Oracle\Java\javapath
erstellt.

Ich führe jetzt eine manuelle Deinstallation aus (mit msiexec /x {GUID}). Der Ordner der Version 8.0.101 verschwindet von

Code: Select all

%PROGRAMFILES%\Java
und somit auch die Verknüpfungen unter

Code: Select all

C:\ProgramData\Oracle\Java\javapath
. Unmittelbar darauf, kurz bevor der MSI-Installer geschlossen wird, werden automatisch die Verknüpfungen für die Version 8.0.91 unter javapath erzeugt und wenn man dann java -version in CMD ausführt, klappt es.

Ok, jetzt möchte ich aber die Deinstallation mit Matrix42 und nicth mehr manuell durchführen.

Mein Vorgehen ist wie folgt.

Bei der Installation möchte ich zuerst überprüfen, ob die Version auf dem Rechner >= die Empirumversion ist. Wenn ja -> Installationsabbruch, ansonsten wird JRE installiert.

Ich führe dann eine Batch-Datei aus, die das Ergebnis des CMD-Befehls "java -version" einliest und es in eine TXT-Datei speichert. Dann führe ich ein PS-Skript aus, das den Inhalt der erzeugten TXT-Datei einliest und filtriert, damit ich dann zwei Keys in die Registry anlegen kann.

Der erste Key hat als Wert den Wert von JRE aber mit einer anderen Formatierung (in diesem Fall 8.0.91, also "jre1." fallen weg und "_" wird durch "." ersetzt). Diese "Formatierung" findet man unter

Code: Select all

C:\Program Files\Java
und ich werde die Variable bei der Deinstallation benötigen.

Der zweite Key hat als Wert "jre%Version%" ohne Anführungszeichen natürlich (in diesem Fall "jre1.8.0_91").

Der Wert des ersten Keys wird in Empirum eingelesen und in eine Variable gespeichert mit der %Version% des Pakets verglichen. Gleichzeitig wird auch der Wert in der Registry gelöscht, da ich den Wert des Keys schon eingelesen und in eine Variable importiert habe.

Der zweite Key (also in diesem Fall "jre1.8.0_91" bleibt).

Bei der Deinstallation importiere ich den Wert des zweiten Keys (der wurde nicht gelöscht) und speichere den in eine Variable. Danach mache ich dasselbe (also ich ermittle die installierte Version, aber diesesmal, um zu überprüfen, ob die installierte Version noch vorhanden ist und wenn ja, ob es sich um dieselbe Version handelt.

Falls es kein JRE oder einfach eine andere Version gibt -> Installationsabbruch mit Exit, da der Benutzer jre selbst manuell deinstalliert/eine neue Version installiert hat).

Falls JRE noch da wäre und dieselbe Version wie %Version% installiert wurde, führe ich eine Deinstallation aus und muss die Verknüpfungen der in jenem Moment größten Version wieder setzen (wir reden jetzt der Version 8.0.91, da die 8.0.101 gerade deinstalliert wurde).

Und jetzt kommt mein Problem: ich kann diese Deinstallation nicht durchführen.

Ich habe verschiedene Lösungen ausprobiert.

1)Erste Lösung: mit DONTDELETE CLIENT (%JavaVersionOld% ist der Wert des zweiten Keys, also "jre1.8.0_91")

Code: Select all

[Product]
...
...
#JavaPathCheckUninstall,DELETE CLIENT
...

[JavaChangesUninstall]
-PATH <%CommonAppdata%\Oracle\Java\javapath
Umgebungsvariable wird gesetzt (vorne (links) im Pfad hinzugefügt)
-Callhidden cmd /c mklink "C:\ProgramData\Oracle\Java\javapath\javaws.exe" "%PROGRAMFILES%\Java\%JavaVersionOld%\bin\javaws.exe"
-Callhidden cmd /c mklink "C:\ProgramData\Oracle\Java\javapath\javaw.exe" "%PROGRAMFILES%\Java\%JavaVersionOld%\bin\javaw.exe"
-Callhidden cmd /c mklink "C:\ProgramData\Oracle\Java\javapath\java.exe" "%PROGRAMFILES%\Java\%JavaVersionOld%\bin\java.exe"
;Symbollinks werden erzeugt

[JavaPathCheckUninstall]
If DoesFileExist ("C:\ProgramData\Oracle\Java\javapath\java.exe") <> "1" Then "JavaChangesUninstall" EndIf
Es passiert einfach nichts, also die Verknüpfungen werden nicht erzeugt (mit dem Package Editor wird der Abschnitt nicht einmal berücksichtigt, also der Abschnitt wird übersprungen). Ich habe auch das Wort "CLIENT" weggelassen, leider ohne Erfolg (im Package Editor wird aber der Abschnitt berücksichtigt).

2) Zweite Lösung: mit PSTools

Je nach %PROCESSOR_ARCHITECTURE% (x86/x64) nutze ich ein anderes Tool, also entweder PsTools64.exe oder PsTools.exe und ich führe die Befehle genau am ende. Das Problem ist, dass das Tool nicht einmal geht, wenn ich es lokal ausführe. Ich habe wie emfphlen das Tool mit

Code: Select all

-accepteula -s
aufgerufen (beide Tools befinden sich in einem Ordner, der auf dem Zielclient unter C:\Tools kopiert wird) und es geht nicht. Wenn ich den ganzen Befehl, also

Code: Select all

C:\Tools\PsExec64 -accepteula -s cmd /c mklink "C:\ProgramData\Oracle\Java\javapath\javaws.exe" "%PROGRAMFILES%\Java\jre1-8-0_91\bin\javaws.exe"
in CMD ausführe, dann geht nicht, da ich eine Meldung in CMD bekomme ("Connecting with PsExec service on Computername") und nach einigen Sekunden "Der Netzwerkpfad wurde nicht gefunden". Wenn ich aber den Parameter "-s" weglasse, geht es. Wenn ich dann die Deinstallation nicht mehr manuell, sonder durch Empirum ohne "-s" Parameter verteilen lasse, geht es auch nicht, es werden keine Verknüpfungen erzeugt.

Warum geht der Abschnitt, der mit DELETE CLIENT markiert wird, nicht? Wie kann ich diese Verknüpfungen erstellen?

Danke!

Vittorio
Posts: 101
Joined: 03. Sep 2015, 08:26
Contact:

Re: Java Runtime Enviroment 1.8_25

Post by Vittorio » 19. Sep 2016, 13:51

Hallo, ich habe noch keine Lösung gefunden, könnte mir jmd vlt helfen?

Post Reply

Return to “Software Management”

Who is online

Users browsing this forum: No registered users and 2 guests