11 votos

Archivo de proceso por lotes para desinstalar todas las versiones de Java de Sun?

Estoy de establecer un sistema para mantener a Java en nuestras oficinas hasta la fecha. Todo el mundo tiene diferentes versiones de Java, muchos de ellos viejos e inseguros, y algunos se remontan tan lejos como 1.4. Tengo un System Center Essentials servidor que pueden empujar y silenciosamente ejecutar un .archivo msi, y he probado ya que se puede instalar la última versión de Java. Pero las versiones antiguas (como 1.4) no son eliminados por el instalador, así que tengo que desinstalar. Todo el mundo está ejecutando Windows XP.

La cuidada coincidencia es que el Sol acaba comprado por Oracle y Oracle ha cambiado ahora todas las instancias de "Sol" a "Oracle" en Java. Así que puede muy bien no tiene que preocuparse acerca de cómo desinstalar la última versión de Java, debido a que solo puedo hacer una búsqueda y desinstale todo el Sol de los programas de Java.

He encontrado la siguiente secuencia de comandos por lotes en un post 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, me sale 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 entonces parece que se bloquea y me ctrl-c para detenerlo.

La lectura a través de la secuencia de comandos, no lo entiendo todo, pero no sé por qué está tratando de ejecutar piezas claves del registro como de los programas. Lo que está mal con la secuencia de comandos por lotes? ¿Cómo puedo solucionarlo, por lo que me puede pasar alguna manera de convertirlo en un MSI y la implementación a todo el mundo para limpiar esta oficina?

O, alternativamente, puede sugerir una solución mejor o existentes archivo MSI para hacer lo que necesito? Sólo quiero para asegurarse de obtener todas las versiones antiguas de Java apagado de todos los equipos, ya que he oído hablar de los ataques que causan las páginas web para cargar el uso de versiones antiguas de Java y quiero evitar esos.

8voto

user154791 Puntos 71

Esta línea va a desinstalar todas las versiones de JAVA:

wmic producto donde "nombre like 'Java%% %%'" llamar a desinstalar /nointeractive

6voto

edusysadmin Puntos 493

La siguiente es lo que uso, funciona muy bien como una secuencia de comandos de inicio:

on error resume next

dim WshShell
dim RegKey
dim ScriptVerKey

Set WshShell = CreateObject("WScript.Shell")

'checks to see if registry key exists, if it does, the cleanup runs.
RegKey = "HKLM\SOFTWARE\EDU\Cleanup\"
ScriptVerKey = WshShell.RegRead(RegKey & "JAVAOldVer")

if ScriptVerKey <> "1" Then 
  Cleanup()
 Else 
  WScript.Quit
End If

Sub Cleanup()

' Uninstall Java 1.4.1.01
WshShell.Run "msiexec /x {1666FA7C-CB5F-11D6-A78C-00B0D079AF64} /q",1,True
' Uninstall Java 1.4.2.04
WshShell.Run "msiexec /x {7148F0A8-6813-11D6-A77B-00B0D0142040} /q",1,True
' Uninstall Java 5.0.2
WshShell.Run "msiexec /x {3248F0A8-6813-11D6-A77B-00B0D0150020} /q",1,True
' Uninstall Java 5.0.4
WshShell.Run "msiexec /x {3248F0A8-6813-11D6-A77B-00B0D0150040} /q",1,True
' Uninstall Java 5.0.5
WshShell.Run "msiexec /x {3248F0A8-6813-11D6-A77B-00B0D0150050} /q",1,True
' Uninstall Java 5.0.6
WshShell.Run "msiexec /x {3248F0A8-6813-11D6-A77B-00B0D0150060} /q",1,True
' Uninstall Java 5.0.7
WshShell.Run "msiexec /x {3248F0A8-6813-11D6-A77B-00B0D0150070} /q",1,True
' Uninstall Java 5.0.10
WshShell.Run "msiexec /x {3248F0A8-6813-11D6-A77B-00B0D0150100} /q",1,True
' Uninstall Java 5.0.11
WshShell.Run "msiexec /x {3248F0A8-6813-11D6-A77B-00B0D0150110} /q",1,True
' Uninstall Java 5.0.12
'WshShell.Run "msiexec /x {3248F0A8-6813-11D6-A77B-00B0D0150120} /q",1,True
' Uninstall Java 6.0.0
WshShell.Run "msiexec /x {3248F0A8-6813-11D6-A77B-00B0D0160000} /q",1,True
' Uninstall Java 6.0.1
WshShell.Run "msiexec /x {3248F0A8-6813-11D6-A77B-00B0D0160010} /q",1,True
' Uninstall Java 6.0.2
WshShell.Run "msiexec /x {3248F0A8-6813-11D6-A77B-00B0D0160020} /q",1,True
' Uninstall Java 6.0.5
WshShell.Run "msiexec /x {3248F0A8-6813-11D6-A77B-00B0D0160050} /q",1,True
' Uninstall Java 6.0.30 (020608)
WshShell.Run "msiexec /x {3248F0A8-6813-11D6-A77B-00B0D0160030} /q",1,True


'regkey below stops the script from running again
WshShell.RegWrite "HKLM\Software\EDU\", "Default"
WshShell.RegWrite "HKLM\Software\EDU\Cleanup\", "Default"
WshShell.RegWrite "HKLM\Software\EDU\Cleanup\JAVAOldVer", 1, "REG_SZ"

End Sub

1voto

Ukavi Puntos 116

Extracto de: http://www.java.com/en/download/faq/remove_olderversions.xml

A lo largo del tiempo, puede que tenga instalado varias versiones de Java para ejecutar disponible contenido Java. En el pasado, cada actualización de Java se ha instalado en separar los directorios de tu sistema. Sin embargo, Java actualizaciones ya están instalados en un único directorio.

Debo quitar versiones anteriores de Java? Recomendamos a los usuarios a quitar todas las versiones antiguas de Java de su sistema. Mantener viejo y no admitidos versiones de Java en su sistema presenta un grave riesgo de seguridad. La eliminación de las versiones anteriores de Java de el sistema se asegura de que Java las aplicaciones se ejecutarán con la mayoría de los up-to-fecha de la seguridad y el rendimiento mejoras en el sistema.

He encontrado el siguiente VBScript que, en teoría, elimina correctamente las versiones anteriores de Java. Mejor leer de abajo hacia arriba, ya que otros se han ajustado a la perfección:

http://www.appdeploy.com/messageboards/tm.asp?m=29809

1voto

devin Puntos 1614

Marque esta simple, pero muy útil comando:

wmic product where "name like 'Java(TM) 6%%'" call uninstall /nointeractive

robado de aquí

0voto

nedm Puntos 4392

Hay algún código de vbscript aquí que usted debe ser capaz de implementar a través de Directiva de Grupo sin un msi.

EnMiMaquinaFunciona.com

EnMiMaquinaFunciona es una comunidad de administradores de sistemas en la que puedes resolver tus problemas y dudas.
Puedes consultar las preguntas de otros sysadmin, hacer tus propias preguntas o resolver las de los demás.

Powered by: