При обновлении Java желательно предварительно удалить все предыдущие версии. Ранее использовался командный файл, содержащий десятки строк кода. С примером такого решения вы можете ознакомиться в статье Обновление Adobe Reader с удалением старых версий средствами ConfigMgr.
Сегодня мой друг Дмитрий предложил невероятно красивое решение по удалению всех предыдущих версий Java длиною всего парой строк.
Создаём папку и помещаем в неё актуальные инсталляционные файлы Java JRE для x86 и x64 платформ.
Создаем текстовый файл с сожержанием, приведённым ниже, и сохраняем его в эту же папку с названием install_java.cmd:
@ECHO OFF REM Закрыть все процессы, которые могут помещать обновлению net stop JavaQuickStarterService taskkill /F /IM iexplore.exe /T taskkill /F /IM jqs.exe /T taskkill /F /IM jucheck.exe /T taskkill /F /IM javaw.exe /T REM ============ Удаление Java ============ REM Сохранение в файл идентификаторов (GUID) установленных пакетов Java в формате установщика Windows Installer SET Query=name like 'Java 8%%' OR name like 'Java 7%%' OR name like 'Java(TM) 6%%' OR name like 'J2SE Runtime Environment%%' OR name like 'Java 2 Runtime Environment%%' OR name like 'Java Auto Updater%%' wmic product where "%Query%" get IdentifyingNumber > "%TEMP%\delJava_1.txt" REM Сохранение только GUID пакетов во второй файл TYPE "%TEMP%\delJava_1.txt" | FINDSTR {........-....-....-....-............} > "%TEMP%\delJava_2.txt" REM Цикл удаления пакетов FOR /f "tokens=*" %%a IN (%TEMP%\delJava_2.txt) DO (msiexec /x %%a /norestart /qn) REM Удаление временных файлов IF EXIST "%TEMP%\delJava_1.txt" DEL "%TEMP%\delJava_1.txt" IF EXIST "%TEMP%\delJava_2.txt" DEL "%TEMP%\delJava_2.txt" REM Тихая установка Java jre-7u51-windows-i586.exe /s IF DEFINED ProgramW6432 ( jre-7u51-windows-x64.exe /s )
Прошу заметить, что данный скрипт удаляет только Java версии 1.4 и старше. До версии 1.4 Sun использовала InstallShield и данный метод не подходит.
Например, команда удаления Java(TM) 2 Runtime Environment, Standard Edition 1.3.1_20 из командной строки выглядит так:
RunDll32 C:\PROGRA~1\COMMON~1\INSTAL~1\engine\6\INTEL3~1\Ctor.dll,LaunchSetup "C:\Program Files\InstallShield Installation Information\{68249B7B-B714-11D7-88E8-0050DA21757E}\Setup.exe" -uninst