Показать полную графическую версию : Как с помощью командой строки удалить приложение из системы
Допустим у нас есть приложение, которое было установлено через MSI. И мы знаете только имя приложения (в данном случае, только первую часть названия). Для использования команды MSIEXEC требуется, чтобы вы знали GUID, но все программы имеют разные GUID, более того, даже разные версии программы могут иметь различный GUID. Решение нашел в интернете. Это маленький кусочек кода который перебирает ключи реестра, чтобы получить этот самый GUID, у которого DisplayName начинается с определенного имени.
Ниже приведен пример, который удаляет все установленные приложения, названия которых начинается с «Windows Live ID Sign-in Assistant»
Но почему то она не работает.. помогите разобраться..(Пробовал в Windows 8, может проблема в этом)
for /f "tokens=7 delims=\" %%i in ('reg query HKLM\Software\Microsoft\Windows\CurrentVersion\Uninstall ^| FIND "{"') do (
for /f "tokens=2,*" %%j in ('reg query HKLM\Software\Microsoft\Windows\CurrentVersion\Uninstall\%%i /v DisplayName') do (
set dn=%%k
if "!dn:~0,33!"=="Windows Live ID Sign-in Assistant" (
echo Uninstalling Windows Live ID Sign-in Assistant
msiexec /promptrestart /qb /x %%i /L+*v %TEMP%\wlidsvc.log
if %ERRORLEVEL% NEQ 0 echo Uninstallation failed. Check the log %TEMP%\wlidsvc.log
)
)
)
помогите разобраться...
Вот рабочие идеи он они требуют точного ввода именны но так меня не устраивает
запускай командную строку(пуск – выполнить – cmd) и вводи следующее:
wmic product get name
после нажатия энтера ты получишь список, установленных на твоём компе программ, запомни имя нужной программы и вводи дальше:
wmic product where name=’имя программы’ call uninstall
жмёшь ввод и вуаля
нужно исправить код с шапки кто может помочь
sunnykey
30-09-2013, 12:50
http://forum.oszone.net/thread-263738.html
ни чего полезного там не увидел..
Может поподробнее расскажешь сам??
sunnykey
30-09-2013, 15:16
ни чего полезного там не увидел..
Может поподробнее расскажешь сам?? »
Зачем перебирать реестр? Тот же эффект даст использования WMI. Берём мой пример из ссылки и подгоняем под ваши условия:
#Powershell script.
#Don't forget unlock script executing by
#using command "Set-ExecutionPolicy RemoteSigned" or "Set-ExecutionPolicy Unrestricted"
#Save this file with ".ps1" extension
$app=Get-WmiObject -Class win32_product | Where-Object {$_.Name -like "*Windows Live ID Sign-in Assistant*"}
$app.Uninstall()
И больше ничего не надо.
Добавлю только, что и «wmic.exe» понимает оператор «LIKE».
Iska Вроде же хорошо понимаешь в этом.. помоги пож..
названия которых начинается с «Windows Live ID Sign-in Assistant» »
wmic.exe Product where "Name LIKE 'Windows Live ID Sign-in Assistant%%'" call Uninstall
Iska один момент , для уточнения...
Она сканировать будет DisplayName?
Вот цель в чем.
запись в реестре HKLM\Software\Microsoft\Windows\CurrentVersion\Uninstall\{7F646B03-B4B1-4784-83FF-947CA1059BA0}\DisplayName
так вот {7F646B03-B4B1-4784-83FF-947CA1059BA0} невозможно всегда определиться так как он при новой версии может меняться...
а вот DisplayName можно как то вычислить...
но проблема в другом.. не знаю получиться или нет..
вот смотрите две записи DisplayName
\{7F646B03-B4B1-4784-83FF-947CA1059BA0}\DisplayName ---> Данные 2ГИС г.Якутск 01.09.2013
и
\{79B8B143-2948-468B-A139-CC6D1CFE146E}\DisplayName ---> 2ГИС 3.13.9.0
как видите много лишнего, в DisplayName , в одном дата присуствует а в другом версия.
очень надеюсь что после запуске ключа
wmic.exe Product where "Name LIKE '2ГИС%%'" call Uninstall
Она деинсталирует оба продукта да и не только оба , все продукты в котором присутствует 2ГИС
было бы класс.
Пошел пробовать.. спасибо за помощь. Посмотрим Цель Моих хотелок будет выполнено
--------------------------------------------------------------------------------
--------------------------------------------------------------------------------
--------------------------------------------------------------------------------
в итоге вышло следующее и ни че не удалилось-((
Microsoft Windows [Version 6.2.9200]
(c) Корпорация Майкрософт, 2012. Все права защищены.
C:\Users\Windows 8>wmic.exe Product where "Name LIKE '2ГИС%%'" call Uninstall
Идет выполнение (\\GUMAN\ROOT\CIMV2:Win32_Product.IdentifyingNumber="{79B8B143-2948-468B-A139-CC6D1CFE146E}",Name="2ГИС 3.13.9.0",Version="3.13.9.0")->Uninstall
()
Метод успешно вызван.
Параметры вывода:
instance of __PARAMETERS
{
ReturnValue = 1603;
};
Насчет '2ГИС%%' додумался переименовать в '%%2ГИС%%'
но что сделать с полученной информацие как заставить удалить?? а в идеале все одной строкой было бы
Насчет '2ГИС%%' додумался переименовать в '%%2ГИС%%' »
Верно.
но что сделать с полученной информацие как заставить удалить?? »
Это и есть удаление. Значение «ReturnValue = 1603», насколько я понимаю, говорит об ошибке, произошедшей при попытке вызвать метод «Uninstall»: Uninstall method of the Win32_Product class (Windows) (http://msdn.microsoft.com/en-us/library/aa393941(v=vs.85).aspx). Командная строка/«wmic.exe» было запущено с административными привилегиями?
Iska Класс . Заработало..
Осталось к общему виду привести...
Запуск через админа исправил картину-)
Только вот как в аддонах это под админкой это исполнить в голове не умешаеться-((
вот например
RunProgram="wmic.exe Product where "Name LIKE '%%2ГИС%%'" call Uninstall"
AutoInstall="wmic.exe Product where "Name LIKE '%%2ГИС%%'" call Uninstall"
как запустить все это дело через админку.. чтоб в итоге при установке аддона не возникало проблемм
Не знаю, что такое «админка».
Командная строка/«wmic.exe» было запущено с административными привилегиями?
я про это имел ввиду
Права дочерними процессами наследуются. Возможно ли запустить аддон с административными привилегиями?
ну смотри в windows 7 запустить аддон с тихой установкой.. она же не будет выполнять эту команду правыльно , привилегий не хватит . по этому надо как то саму эту строчку внутри аддона запускать с правами администратора, вот как правильно сделать не понимаю... этот маленкий кусочек кода потом при созданый новых аддонов очень много раз будет помогать...
Цель такова..
Получается запускается аддон с тихим ключем, а дальше внутри сработает эта команда с правами администратора. он удалит старую версию программы и установить новую.
ну смотри в windows 7 запустить аддон с тихой установкой.. »
Коллега, я бы посмотрел, но у меня из всей Windows NT 6.x только Server 2008 R2. Равно не пользую аддоны. Так что, Вам и карты в руки.
Приветствую!
Похожая ситуация, но с другой ошибкой
запускаю из CMD под админскими правами, все работает
Запуская батник с админскими правами и нифига, выдает ошибку 1618
Кто-то знает что за фигня?
код
wmic /node:localhost /PRIVILEGES:ENABLE product where "name like '%%1C:Предприятие 8%%'" call uninstall /nointeractive
pause
wmic /node:localhost /PRIVILEGES:ENABLE product where "name like '%%1C:Enterprise 8%%'" call uninstall /nointeractive
Нельзя запустить более одного процесса инсталляции/деинсталляции единовременно: MsiExec.exe and InstMsi.exe Error Messages - Windows applications | Microsoft Docs (https://docs.microsoft.com/en-us/windows/win32/msi/error-codes).
Iska, Спасибо!
Плохо искал, видимо.
Хотя странно, задал запрос "wmi error code"...
lcnet, я так полагаю, что под критерий where попадает больше одного экземпляра класса Win32_Product. Хотя, конечно, не факт.
© OSzone.net 2001-2012
vBulletin v3.6.4, Copyright ©2000-2025, Jelsoft Enterprises Ltd.