Я настраиваю систему, чтобы поддерживать Java в нашем офисе в актуальном состоянии. У всех есть разные версии Java, многие из них старые и небезопасные, а некоторые начиная с 1.4. У меня есть сервер System Center Essentials, который может выдвигать и молча запускать MSI-файл, и я уже проверил, что он может установить последнюю версию Java. Но старые версии (например, 1.4) не удаляются установщиком, поэтому мне нужно удалить их. Все работают под управлением Windows XP.
Удачное совпадение заключается в том, что Sun только что приобрел Oracle, а Oracle теперь изменил все экземпляры Sun на Oracle в Java. Поэтому мне не нужно беспокоиться об удалении последней версии Java, потому что я могу просто выполнить поиск и удалить все программы Sun Java.
В сообщении на форуме я нашел следующий пакетный скрипт, который выглядел многообещающе:
@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
Однако, когда я запускаю скрипт, я получаю следующий вывод:
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.
А потом, кажется, зависает, и я Ctrl-C, чтобы остановить его.
Прочитав сценарий, я не все понимаю, но не знаю, почему он пытается запустить части ключей реестра в виде программ. Что не так с пакетным скриптом? Как я могу это исправить, чтобы я мог как-то превратить его в MSI и развернуть его для всех, чтобы очистить этот офис?
Или, в качестве альтернативы, вы можете предложить лучшее решение или существующий файл MSI, чтобы делать то, что мне нужно? Я просто хочу убедиться, что все старые версии Java отключены от всех компьютеров, поскольку я слышал об эксплойтах, которые приводят к загрузке веб-страниц с использованием старых версий Java, и я хочу их избежать.