Estoy configurando un sistema para mantener actualizado Java en nuestra oficina. Todos tienen diferentes versiones de Java, muchas de ellas antiguas e inseguras, y algunas datan de 1.4. Tengo un servidor System Center Essentials que puede expulsar y ejecutar silenciosamente un archivo .msi, y ya he probado que puede instalar la última versión de Java. Pero las versiones antiguas (como la 1.4) no son eliminadas por el instalador, así que necesito desinstalarlas. Todos ejecutan Windows XP.
La pura coincidencia es que Oracle acaba de comprar Sun y Oracle ahora ha cambiado todas las instancias de "Sun" a "Oracle" en Java. Por lo tanto, convenientemente no tengo que preocuparme por desinstalar la última versión de Java, porque solo puedo hacer una búsqueda y desinstalar todos los programas de Sun Java.
Encontré el siguiente script por lotes en una publicación del foro que parecía prometedor:
@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
Sin embargo, cuando ejecuto el script, obtengo el siguiente resultado:
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.
Y luego parece que se cuelga y ctrl-c para detenerlo.
Al leer el script, no entiendo todo, pero no sé por qué está tratando de ejecutar piezas de claves de registro como programas. ¿Qué hay de malo con el script por lotes? ¿Cómo puedo solucionarlo, de modo que pueda pasar a convertirlo en un MSI y desplegarlo para que todos puedan limpiar esta oficina?
O, alternativamente, ¿puede sugerir una mejor solución o un archivo MSI existente para hacer lo que necesito? Solo quiero asegurarme de quitar todas las versiones antiguas de Java de las computadoras de todos, ya que he oído hablar de exploits que hacen que las páginas web se carguen con versiones antiguas de Java y quiero evitarlas.
fuente
Respuestas:
Lo siguiente es lo que usamos, funciona muy bien como un script de inicio:
fuente
Esta línea desinstalará todas las versiones de JAVA:
producto wmic donde "nombre como 'Java %% %%' 'llama desinstalar / nointeractive
fuente
Extracto de: http://www.java.com/en/download/faq/remove_olderversions.xml
Encontré el siguiente VBScript que, en teoría, elimina correctamente las versiones anteriores de Java. Lo mejor es leer de abajo hacia arriba , ya que otros lo han ajustado a la perfección:
http://www.appdeploy.com/messageboards/tm.asp?m=29809
fuente
Marque este comando simple pero muy útil:
robado de aquí
fuente
Hay algo de código VBScript aquí que usted debe ser capaz de desplegar a través de la directiva de grupo sin una msi.
fuente
La respuesta verificada más votada tiene algunos problemas. Los CLSID de la serie 6.0 son incorrectos según mis pruebas.
Aquí están los CLSID que he encontrado que funcionan para cada serie JRE. Reemplace xx por las versiones deseadas que desea eliminar. Úselo con /server//a/187552/172014
Recomiendo agregar / norestart después de / q también en caso de que los MSI JRE de la serie 1.4.2 quieran reiniciarse.
fuente
Aún puedes lograrlo usando el script Batch. Yo uso el siguiente script;
Puede adaptar / modificar la forma en que desee satisfacer sus necesidades. ;-)
fuente
Esto funcionó para mí. Desinstala todas las versiones de Java (32 bits y 64 bits) anteriores a la última versión (que es v8.0.66 en el momento de la escritura).
fuente