Estou configurando um sistema para manter o Java em nosso escritório atualizado. Todo mundo tem todas as versões diferentes do Java, muitas delas antigas e inseguras, e algumas datam da versão 1.4. Eu tenho um servidor System Center Essentials que pode enviar e executar silenciosamente um arquivo .msi e já testei que ele pode instalar o Java mais recente. Mas versões antigas (como a 1.4) não são removidas pelo instalador, por isso preciso desinstalá-las. Todo mundo está executando o Windows XP.
A pura coincidência é que a Sun acabou de ser comprada pela Oracle e a Oracle agora mudou todas as instâncias do "Sun" para "Oracle" em Java. Portanto, convenientemente não preciso me preocupar em desinstalar o Java mais recente, porque posso apenas pesquisar e desinstalar todos os programas Java da Sun.
Encontrei o seguinte script em lote em uma postagem do fórum que parecia promissora:
@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
No entanto, quando executo o script, obtenho a seguinte saída:
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 então parece travar e eu ctrl-c para interrompê-lo.
Lendo o script, não entendo tudo, mas não sei por que ele está tentando executar pedaços de chaves do Registro como programas. O que há de errado com o script em lote? Como posso corrigi-lo, para que eu possa, de alguma forma, transformá-lo em um MSI e implantá-lo em todos para limpar este escritório?
Ou, como alternativa, você pode sugerir uma solução melhor ou um arquivo MSI existente para fazer o que eu preciso? Eu só quero ter certeza de obter todas as versões antigas do Java dos computadores de todos, já que ouvi falar de explorações que causam o carregamento de páginas da Web usando versões antigas do Java e quero evitá-las.
fonte
Respostas:
A seguir, é o que usamos, funciona muito bem como um script de inicialização:
fonte
Esta linha irá desinstalar todas as versões do JAVA:
produto wmic em que "nomes como 'Java %% %%'" chamam uninstall / nointeractive
fonte
Trecho de: http://www.java.com/en/download/faq/remove_olderversions.xml
Encontrei o seguinte VBScript que, em teoria, remove corretamente as versões anteriores do Java. Melhor ler de baixo para cima , já que outros o aprimoraram com perfeição:
http://www.appdeploy.com/messageboards/tm.asp?m=29809
fonte
Verifique este comando simples, mas muito útil:
roubado daqui
fonte
Há algum código vbscript aqui que você deve poder implantar via Diretiva de Grupo sem um msi.
fonte
A resposta verificada mais votada tem alguns problemas. Os CLSIDs da série 6.0 estão incorretos com base nos meus testes.
Aqui estão os CLSIDs que encontrei para trabalhar para cada série do JRE. Substitua xx pelas versões desejadas que você deseja remover. Use com /server//a/187552/172014
Eu recomendo adicionar / norestart after / q também para o caso de os MSIs JRE da série 1.4.2 quererem uma reinicialização.
fonte
Você ainda pode realizar o script em lote. Eu uso o seguinte script;
Você pode adaptar / modificar a maneira que você deseja atender às suas necessidades. ;-)
fonte
Isso funcionou para mim. Ele desinstala todas as versões do Java (32 e 64 bits) anteriores à versão mais recente (que é a v8.0.66 no momento da redação).
fonte