Sto installando un sistema per mantenere aggiornato Java nel nostro ufficio. Ognuno ha tutte le diverse versioni di Java, molte delle quali vecchie e insicure, e alcune risalenti al 1.4. Ho un server System Center Essentials che può eseguire il pushout e l'esecuzione silenziosa di un file .msi e ho già testato che può installare l'ultima versione di Java. Ma le vecchie versioni (come la 1.4) non vengono rimosse dal programma di installazione, quindi devo disinstallarle. Tutti eseguono Windows XP.
La netta coincidenza è che Sun è stata appena acquistata da Oracle e Oracle ha ora cambiato tutte le istanze di "Sun" in "Oracle" in Java. Quindi, posso comodamente non dovermi preoccupare di disinstallare l'ultimo Java, perché posso solo fare una ricerca e disinstallare tutti i programmi Sun Java.
Ho trovato il seguente script batch in un post sul forum che sembrava promettente:
@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
Tuttavia, quando eseguo lo script, ottengo il seguente output:
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.
E poi sembra bloccarsi e io ctrl-c per fermarlo.
Leggendo lo script, non capisco tutto, ma non so perché stia cercando di eseguire pezzi di chiavi di registro come programmi. Cosa c'è di sbagliato nello script batch? Come posso ripararlo, in modo da poter passare in qualche modo trasformandolo in un MSI e distribuendolo a tutti per ripulire questo ufficio?
O in alternativa, puoi suggerire una soluzione migliore o un file MSI esistente per fare ciò di cui ho bisogno? Voglio solo assicurarmi di rimuovere tutte le vecchie versioni di Java dai computer di tutti, dal momento che ho sentito parlare di exploit che causano il caricamento di pagine Web utilizzando vecchie versioni di Java e voglio evitarle.