Я налаштовую систему, щоб підтримувати 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, і я хочу їх уникати.