This project has moved and is read-only. For the latest updates, please go here.

Deinstallationsprobleme bei JAVA

Topics: Configuration Issue
Aug 10, 2016 at 4:01 PM
Edited Aug 10, 2016 at 4:12 PM
Aus gegebenen Anlass werfe ich mal wieder das Problem in die Runde das gerade abgelaufene JAVA Updates bei Verteilung der .msi via WPP nicht deinstalliert werden wenn eine neue Version erscheint.
Die erste Frage wäre: Wieso ist das so, schließlich kommt das bei der normalen Installation nicht vor. Wäre gut das herauszubekommen, denn alle separaten Deinstall Lösungen sind eigentlich nur arbeitsaufwendige Workarounds.

Da es mehrere Möglichkeiten bei JAVA gibt- ich benutzt den Weg die .msi zu extrahieren und ein modifiziertes .mst zu generieren was ich in WPP dann mit auf dem Weg gebe.

Mein alte Lösungsansatz Nr1 war immer das ich die abgelaufen Updates von "Genehmigt" auf " Zur Deinstallation genehmigt" gesetzt habe. Leider läuft dieses Update was dann ausgeführt wird seit einiger Zeit ins leere, JAVA bleibt installiert obwohl das Update durchläuft.

Lösungsvorschlag Nr2 war CustomUpdate/Deinstall MSI Produkt, dann hab ich mir den MSI Code von einer ClientInstallation ausgelesen und ein entsprechendes Update erzeugt. Das funktioniert irgendwie nicht immer. Außerdem ist das Aufwendig in der Erstellung und Pflege, ich hab auch noch 64bit JAVA.

Lösungvorschlag Nr3 war der Hinweis aus einem Posting, das man, sofern man seine Optionen in der CommandLine bei WPP einträgt, REMOVEOLDERJRES=1 eintragen kann. Find ich nicht schlecht, nur das ich lieber ein transformtes .mst File benutze.

Also hab ich in der msi nach REMOVEOLDJRES gesucht und bin im Table INSTALLEXECUTESEQUENCE fündig geworden, wo das zwei mal auftaucht. Einmal bei FINDRELATEDPRODUCTS und einmal bei REMOVEXSISTINGPRODUCTS. In beiden Fällen ist es Standardmäßig mit 1 belegt, trotzdem wird die alte Installation nicht entfernt. Kann mir das einer erklären?

Und es gibt noch ein paar Krücken ( install&uninstall.exe oder so) die alten Javas zu entfernen, aber eigentlich würde ich lieber herausbekommen was das ganze Problem eigentlich verursacht.

Ich verwende normalerweise keine Regeln bei .msi Installationen und bin damit immer gut und problemlos gefahren, frage mich aber ob es in diesem Fall von Bedeutung sein könnte.

by Pö
Aug 10, 2016 at 4:50 PM
Hast Du denn schon mal REMOVEXSISTINGPRODUCTS = 0 getestet? Wenn nein, dann hol das nach.

Ansonsten benutze ich die von dir als 'Krücke' bezeichnete Uninstall2Install.exe und bin damit bestens gerüstet. :P
Aug 11, 2016 at 8:16 AM
Hallo Windfried!,

REMOVEXSISTINGPRODUCTS, wo soll ich das in der .msi setzen?
Im Table ActionText taucht das auf, da sind ihm Templates zugewiesen, ich denke nicht das es dort ist.
Im Table InstallExecuteSequence gibt es auch REMOVEXSISTINGPRODUCTS, allerdings gibt es dort kein "Value" sondern ein "Condition", und das lautet: REMOVEOLDERJRES=1, womit sich der Kreis schließt. Ich habe nicht das Gefühl das ich da einfach eine 0 reinschreiben sollte.

Oder sollte ich im Property Table eine entsprechende Zeile einfügen? Sowas geht auch wie ich bei Libre gelernt habe :-)

Ich mein wenn es absolut nicht anders geht Wechsel ich halt von .msi mit .mst File auf .msi mit CommandLineParametern, so viele sind das ja nicht bei JAVA, aber den Unterschied sehe ich irgendwie nicht. Das sollte doch praktisch das Gleiche sein.

Ich weiß das du Uninstall2Install.exe schon ein paar Mal empfohlen hast. Ich sehe es trotzdem etwas als notdürftige Ersatzlösung.
Weil:
Ideal - die Deinstallation funktioniert einfach
Optimal - die Deinstallation der alten Version läßt sich in der sowieso benutzten Config ( .msi ) steuern
Gut - die Deinstallation läßt sich als extra Update über das aufgestülpte Deployment regeln ( WPP ), muss aber manuell gemanagt werden
Befriedigend - Die Deploymentsoftware stellt ein Tool ( zusätzlicher Aufwand )um die Software wieder loszuwerden, mittels Extra Update (Custom Update WPP)
Ausreichend - man benötigt ein weiteres Programm um mit der Deploymentsoftware ein Update zu erzeugen was das Update deinstalliert. ( Uninstall2Install ) ARG!

So sortier ich das für mich zumindest, nichts für ungut!
Aug 11, 2016 at 8:29 AM
Du kannst natürlich REMOVEOLDERJRES=0 eintragen und die anderen Zeile löschen. Einfach mal ausprobieren und nicht so viel fragen.

Alternativ direkt beim Hersteller der Software nachfragen, was getan werden muss damit die alte Version auch korrekt deinstalliert wird.
https://java.com/en/download/faq/uninstaller_toolfaq.xml#browserinfo

Zuletzt, ich nutze das Tool um eine neue Version zu installieren, dabei werden alle vorherigen Versionen automatisch deinstalliert. Das hast Du schon gelesen, oder? Und das beste ist, wir brauchen ab sofort kein Java mehr, also wird der Mist bei uns jetzt rückstandsfrei deinstalliert.

Bevor ich mir die Arbeit mache, die du dir machst, nutze ich das Tool und lehne mich zurück, es macht die Arbeit für mich für die es gemacht worden ist. :)
Aug 11, 2016 at 9:49 AM
Hm? Tut mir leid, kann dir da nicht folgen.
Ich kann doch nicht planlos irgendwo was eintragen und irgendwelche Zeilen löschen. An anderer Stelle hieß es REMOVEOLDERJRES=1 würde alte Deinstallationen löschen wenn man die CommandLine benutzt.
Du empfiehlst jetzt zunächst REMOVEXSISTINGPRODUCTS = 0 , sagst aber nicht wo in der MSI das sein sollte, und als nächstes REMOVEOLDERJRES=0, aber wieder ohne Angabe des Tables.
Ich bin dir ja dankbar für deine Tipps, mehr Profiunterstützung kann man schließlich kaum erhalten, aber ein endloses Try & Error war das was ich vermeiden wollte.

Danke für den Link oben, das Tool kannte ich noch nicht, gut zu wissen das sowas auch noch bereit steht. Es hat aber keinen Bezug zu dem Problem des Handlings alter Installationen bei Versionsaktualisierung.
Aug 11, 2016 at 10:57 AM
Sorry, für mich war klar, Du weißt wo du was einzustellen hättest. Und nein, ich weiß es auch nicht weil ich mich damit noch nicht beschäftigt habe. Um genau dieses Try and Error zu vermeiden hab ich mir das Tool Uninstall2Install erstellt. Damit aktualisierte ich meine Java Runtime immer ganz problemlos. Hast Du denn mit dem Tool schon gearbeitet? Die EXE als Update im WPP einbinden, das MSI von Java und die aktualisierte REG-Datei hinzufügen, evtl. noch Regeln erstellen, veröffentlichen, fertig. Dauert 5-10 Minuten beim ersten Mal, anschließend geht es sicher noch schneller.
Aug 11, 2016 at 4:06 PM
Wenn ich die Ausführungen
http://docs.oracle.com/javase/8/docs/technotes/guides/install/windows_jre_install.html#uninstalling_the_jre_windows
richtig verstehe, ist der greift der Deinstaller für alte Versionen nicht wenn man mit einer Modifizierung arbeitet, insbesondere scheint er im .exe Installer verwurstelt zu sein.

Damit bleibt die Option: Verwendung des .exe Installers + Befehlszeilenparameter, etwa so:
INSTALL_SILENT=Enable AUTO_UPDATE=Disable WEB_ANALYTICS=Disable EULA=Disable REBOOT=Disable NOSTARTMENU=Enable WEB_JAVA=Enable WEB_JAVA_SECURITY_LEVEL=H SPONSORS=Disable REMOVEOLDERJRES=1

Funktionierte bei mir aber nicht.

Wenn ich den Ausführungen folge:
http://docs.oracle.com/javase/8/docs/technotes/guides/install/config.html#table_config_file_options

dann gibt es einen Befehl der da lautet
REMOVEOUTOFDATEJRE ,
also werde ich es demnächst damit und dem .EXE Installer probieren.