(495) 925-0049, ITShop интернет-магазин 229-0436, Учебный Центр 925-0049
  Главная страница Карта сайта Контакты
Поиск
Вход
Регистрация
Рассылки сайта
 
 
 
 
 

Путь к автоматизации удаления Java (JDK и JRE) в Windows

Источник: habrahabr
denixx

Здравствуйте.
Где-то полгода-год назад я помогал человеку с проблемой: он хотел автоматически удалить всё, что относится к Java, с компьютера под управлением Windows.
Для начала я поискал, есть ли у установщика какой-то ключ, который поможет это сделать.
Уже не помню точно, кажется я таки отыскал его, но функционал был сломан, инсталлятор не выполнял нужной функции.
Дополнительными вариантами я нагуглил всяческие VB-решения, или требующие .NET, как JavaRa.
В конце концов я наткнулся на обсуждение, в котором нашёл одну заветную строчку с полезной командой wmic, и в итоге решение проблемы выродилось в очень небольшой батник, который использует только средства системы, чтобы выполнить то, для чего написаны длиннющие скрипты.
Команда является частью WMI, и присутствует в Windows 2000 и выше.

@echo off echo Making list of installed Java packages... Please wait. wmic product where "name like 'Java%%'" get IdentifyingNumber > "%TEMP%\deleteAllJava_1.txt" type "%TEMP%\deleteAllJava_1.txt" / findstr {........-....-....-....-............} > "%TEMP%\deleteAllJava_2.txt" if exist "%TEMP%\deleteAllJava_1.txt" del "%TEMP%\deleteAllJava_1.txt" echo Done. Changing directory... set VAR="%CD%" cd %TEMP% echo Done. Deleting Java packages... for /f "tokens=*" %%a in (deleteAllJava_2.txt) do ( echo Deleting package: %%a msiexec /x %%a /norestart /qb-! ) cd %VAR% echo Making list of installed Java 5 packages... Please wait. wmic product where "name like 'J2SE%%'" get IdentifyingNumber > "%TEMP%\deleteAllJava_1.txt" type "%TEMP%\deleteAllJava_1.txt" / findstr {........-....-....-....-............} > "%TEMP%\deleteAllJava_2.txt" if exist "%TEMP%\deleteAllJava_1.txt" del "%TEMP%\deleteAllJava_1.txt" echo Done. Changing directory... set VAR="%CD%" cd %TEMP% echo Done. Deleting Java packages... for /f "tokens=*" %%a in (deleteAllJava_2.txt) do ( echo Deleting package: %%a msiexec /x %%a /norestart /qb-! ) if exist "%TEMP%\deleteAllJava_2.txt" del "%TEMP%\deleteAllJava_2.txt" echo Done. Changing directory back... cd %VAR% echo Process completed sucessfully...
Думаю, немного пояснений не помешает:
Первая часть удаляет все инсталляции, начинающиеся с "Java" (Java 6 и выше), вторая часть - "J2SE" (Java 5).
Не помню, справляется ли оно с Java 4, но я не думаю, что будет проблемой модифицировать батник.
В каждой части формируется файл %TEMP%\deleteAllJava_1.txt, в нём будут строчки с идентификаторами продукта. Затем с помощью findstr отсеиваются только сами идентификаторы, лишнее убирается. В результате появляется файл %TEMP%\deleteAllJava_2.txt, а первый удаляется. Далее при помощи for перебором строк из второго файла запускается команда на удаление продуктов по идентификатору (msiexec с ключом /x).
Плюс ко всему, запуск батника необходимо производить с правами администратора, тогда запрос UAC будет произведён лишь один раз при запуске, а не каждый раз при деинсталляции пакета.
Стоит заметить, что в случае, если ещё какое-либо приложение будет начинаться со слов Java или J2SE, то оно тоже попадёт под нож, поэтому я буду признателен, если вы расскажете, как стоит исправить этот скрипт, чтобы он не ломал дров.
Также приветствуются полезные замечания по работе скрипта, потому что я не считаю себя мастером в деле написания .bat-файлов. ;)
Спасибо, успешного использования!

UPD1: Более элегантное решение, но удаляет только тогда, когда команда запускается от администратора. Вариант выше, запущенный не от админа будет по крайней мере запрашивать у пользователя разрешение (при включенном UAC), правда, на каждый установленный продукт.
@echo off echo Removing installed packages of Java 5+... Please wait. wmic product where "name like 'Java%%' or name like 'J2SE%%'" call uninstall /nointeractive echo Process completed sucessfully...

Ссылки по теме


 Распечатать »
 Правила публикации »
  Написать редактору 
 Рекомендовать » Дата публикации: 18.11.2013 
 

Магазин программного обеспечения   WWW.ITSHOP.RU
Microsoft Office 365 Бизнес. Подписка на 1 рабочее место на 1 год
Microsoft Office 365 Персональный 32-bit/x64. 1 ПК/MAC + 1 Планшет + 1 Телефон. Все языки. Подписка на 1 год.
Microsoft 365 Business Standard (corporate)
Microsoft Windows Professional 10, Электронный ключ
Microsoft 365 Apps for business (corporate)
 
Другие предложения...
 
Курсы обучения   WWW.ITSHOP.RU
 
Другие предложения...
 
Магазин сертификационных экзаменов   WWW.ITSHOP.RU
 
Другие предложения...
 
3D Принтеры | 3D Печать   WWW.ITSHOP.RU
 
Другие предложения...
 
Новости по теме
 
Рассылки Subscribe.ru
Информационные технологии: CASE, RAD, ERP, OLAP
Безопасность компьютерных сетей и защита информации
Новости ITShop.ru - ПО, книги, документация, курсы обучения
Программирование на Microsoft Access
CASE-технологии
Компьютерные книги. Рецензии и отзывы
Мастерская программиста
 
Статьи по теме
 
Новинки каталога Download
 
Исходники
 
Документация
 
 



    
rambler's top100 Rambler's Top100