2015-07-28 5 views
0

Я хотел бы удалить несколько программ с помощью пакетной обработки и дождаться завершения каждой программы до удаления другой. Проблема в том, что некоторые из этих деинсталляторов не вызывают другие программы и не находятся в диспетчере задач, поэтому START/WAIT не будет работать. Любые идеи были бы полезны.Подождите, пока деинсталлятор завершит работу с пакетом

+0

Если эти программы были установлены внутренне через пакет .msi, тогда, возможно, можно будет использовать 'start/wait MsiExec.exe/X {5481F163-B9E5-30A8-8441- 4DBBB87D6AA2} 'например. Точный код продукта можно найти с помощью 'reg query'. – wOxxOm

+0

это не так. Это пользовательские деинсталляторы, в которых деинсталлятор даже не находится в диспетчере задач во время удаления. Я не уверен, какие программы он вызывает. – Wajo357

+0

1. Строка удаления должна присутствовать в 'HKEY_LOCAL_MACHINE \ SOFTWARE \ Microsoft \ Windows \ CurrentVersion \ Uninstall' или' HKEY_LOCAL_MACHINE \ SOFTWARE \ Wow6432Node \ Microsoft \ Windows \ CurrentVersion \ Uninstall'. 2. Процесс должен быть видимым на вкладке «процессы» в диспетчере задач. – wOxxOm

ответ

0

Предполагая, что вы используете Windows, и что эти программы были установлены с .msi пакетами,

удаления программы в пакетном файле так легко, как с помощью MSIEXEC. Полная документация на использовании MSIEXEC можно найти на Microsoft Technet

Чтобы найти GUID из установки, что вы хотите удалить, просто использовать WMIC в командной строке:

wmic product get > C:\InstalledProgramsList.txt 

Затем перейдите к C: \ InstalledProgramsList. txt и используйте ctrl + F, чтобы найти нужный продукт и соответствующий GUID

+0

Спасибо за ваш быстрый ответ. 2 вещи: я не вижу в ссылке, где я могу подождать, пока установка не будет выполнена, прежде чем продолжить. Кроме того, мои программы имеют 64 бит, используя установщик, который не регистрируется в WMIC. – Wajo357

+0

@ Wajo357 Если вы создадите пакетный скрипт для Windows с msiexec, каждая команда будет запускаться последовательно, когда предыдущая команда будет завершена. Кроме того, 'wmic product get' должен работать для всех приложений x64 и x86, установленных как' .msi packages' –

+0

@ Wajo357 А я вижу, что вы работаете с пользовательским установщиком. Попробуйте выполнить поиск через: HKEY_LOCAL_MACHINE \ SOFTWARE \ Microsoft \ Windows \ CurrentVersion \ Uninstall' ИЛИ 'HKEY_CLASSES_ROOT \ Installer \ Products' –

0

Ok. Кажется, я понял. Это код, который я использую, где я создал подпрограмму, которая ждет завершения задачи.

:waitforuninstallation 
timeout /T 1 /NOBREAK >nul 
tasklist /FI "IMAGENAME eq %1" 2>NUL | find /I /N "%1">NUL 
if %ERRORLEVEL% EQU 0 goto waitforuninstallation 
exit /b 

Это может быть вызвана с помощью:

call :waitforuninstallation PROGRAMNAME.exe 

Где ProgramName это задача, которая выполняется в диспетчере задач. Редактирование: сделана подпрограмма нести аргумент

Смежные вопросы