Ich richte ein System ein, um Java in unserem Büro auf dem neuesten Stand zu halten. Jeder hat alle verschiedenen Versionen von Java, von denen viele alt und unsicher sind und einige bis 1.4 zurückreichen. Ich habe einen System Center Essentials-Server, der eine MSI-Datei herausschieben und unbeaufsichtigt ausführen kann, und ich habe bereits getestet, dass er das neueste Java installieren kann. Aber alte Versionen (wie 1.4) werden vom Installationsprogramm nicht entfernt, daher muss ich sie deinstallieren. Auf jedem läuft Windows XP.
Der nette Zufall ist, dass Sun gerade von Oracle gekauft wurde und Oracle nun alle Instanzen von "Sun" in "Oracle" in Java geändert hat. Ich muss mich also bequemerweise nicht um die Deinstallation des neuesten Java kümmern, da ich einfach eine Suche durchführen und alle deinstallieren kann Sun Java-Programme kann.
Ich fand das folgende Batch-Skript in einem Forumsbeitrag, der vielversprechend aussah:
@echo off & cls
Rem List all Installation subkeys from uninstall key.
echo Searching Registry for Java Installs
for /f %%I in ('reg query HKLM\SOFTWARE\microsoft\windows\currentversion\uninstall') do echo %%I | find "{" > nul && call :All-Installations %%I
echo Search Complete..
goto :EOF
:All-Installations
Rem Filter out all but the Sun Installations
for /f "tokens=2*" %%T in ('reg query %1 /v Publisher 2^> nul') do echo %%U | find "Sun" > nul && call :Sun-Installations %1
goto :EOF
:Sun-Installations
Rem Filter out all but the Sun-Java Installations. Note the tilda + n, which drops all the subkeys from the path
for /f "tokens=2*" %%T in ('reg query %1 /v DisplayName 2^> nul') do echo . Uninstalling - %%U: | find "Java" && call :Sun-Java-Installs %~n1
goto :EOF
:Sun-Java-Installs
Rem Run Uninstaller for the installation
MsiExec.exe /x%1 /qb
echo . Uninstall Complete, Resuming Search..
goto :EOF
Wenn ich das Skript ausführe, erhalte ich jedoch die folgende Ausgabe:
Searching Registry for Java Installs
'DEV_24x6' is not recognized as an internal or external command,
operable program or batch file.
'SUBSYS_542214F1' is not recognized as an internal or external command,
operable program or batch file.
Und dann scheint es zu hängen und ich drücke Strg-C, um es zu stoppen.
Beim Lesen des Skripts verstehe ich nicht alles, aber ich weiß nicht, warum versucht wird, Teile von Registrierungsschlüsseln als Programme auszuführen. Was ist los mit dem Batch-Skript? Wie kann ich das Problem beheben, damit ich es irgendwie in ein MSI verwandeln und für alle bereitstellen kann, um dieses Büro aufzuräumen?
Oder können Sie alternativ eine bessere Lösung oder eine vorhandene MSI-Datei vorschlagen, um das zu tun, was ich brauche? Ich möchte nur sicherstellen, dass alle alten Java-Versionen von allen Computern entfernt werden, da ich von Exploits gehört habe, die dazu führen, dass Webseiten mit alten Java-Versionen geladen werden, und ich möchte diese vermeiden.
quelle
Antworten:
Folgendes verwenden wir, das sich hervorragend als Startskript eignet:
quelle
Diese Zeile deinstalliert alle Versionen von JAVA:
wmic Produkt, bei dem "Name wie 'Java %% %%'" uninstall / nointeractive aufruft
quelle
Auszug aus: http://www.java.com/de/download/faq/remove_olderversions.xml
Ich habe das folgende VBScript gefunden, das theoretisch frühere Versionen von Java ordnungsgemäß entfernt. Am besten von unten nach oben lesen , da andere es perfekt optimiert haben:
http://www.appdeploy.com/messageboards/tm.asp?m=29809
quelle
Überprüfen Sie diesen einfachen, aber sehr nützlichen Befehl:
von hier gestohlen
quelle
Es gibt einige VBScript - Code hier , dass Sie in der Lage sein sollte , über Gruppenrichtlinien ohne msi einzusetzen.
quelle
Die am besten bewertete verifizierte Antwort weist einige Probleme auf. Die CLSIDs der 6.0-Serie sind aufgrund meiner Tests falsch.
Hier sind die CLSIDs, die ich für jede JRE-Serie gefunden habe. Ersetzen Sie xx durch die gewünschten Versionen, die Sie entfernen möchten. Bitte verwenden Sie mit /server//a/187552/172014
Ich empfehle, / norestart auch nach / q hinzuzufügen, falls die JRE-MSIs der 1.4.2-Serie einen Neustart wünschen.
quelle
Sie können das Batch-Skript weiterhin verwenden. Ich benutze das folgende Skript;
Sie können die gewünschte Art und Weise an Ihre Bedürfnisse anpassen / ändern. ;-);
quelle
Das hat bei mir funktioniert. Es deinstalliert alle Java-Versionen (32-Bit und 64-Bit) vor der neuesten Version (die zum Zeitpunkt des Schreibens Version 8.0.66 ist).
quelle