Установка Java JRE с удалением всех предыдущих версий

java_logoПри обновлении 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

 

Добавить комментарий