PDA

Показать полную графическую версию : Как с помощью командой строки удалить приложение из системы


Страниц : [1] 2

Guman
30-09-2013, 10:27
Допустим у нас есть приложение, которое было установлено через 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
)
)
)

помогите разобраться...

Guman
30-09-2013, 10:33
Вот рабочие идеи он они требуют точного ввода именны но так меня не устраивает

запускай командную строку(пуск – выполнить – cmd) и вводи следующее:

wmic product get name

после нажатия энтера ты получишь список, установленных на твоём компе программ, запомни имя нужной программы и вводи дальше:

wmic product where name=’имя программы’ call uninstall

жмёшь ввод и вуаля

нужно исправить код с шапки кто может помочь

sunnykey
30-09-2013, 12:50
http://forum.oszone.net/thread-263738.html

Guman
30-09-2013, 14:54
ни чего полезного там не увидел..
Может поподробнее расскажешь сам??

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()
И больше ничего не надо.

Iska
30-09-2013, 15:19
Добавлю только, что и «wmic.exe» понимает оператор «LIKE».

Guman
30-09-2013, 15:41
Iska Вроде же хорошо понимаешь в этом.. помоги пож..

Iska
30-09-2013, 15:52
названия которых начинается с «Windows Live ID Sign-in Assistant» »
wmic.exe Product where "Name LIKE 'Windows Live ID Sign-in Assistant%%'" call Uninstall

Guman
30-09-2013, 16:28
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ГИС%%'

но что сделать с полученной информацие как заставить удалить?? а в идеале все одной строкой было бы

Iska
30-09-2013, 18:17
Насчет '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» было запущено с административными привилегиями?

Guman
01-10-2013, 07:59
Iska Класс . Заработало..
Осталось к общему виду привести...
Запуск через админа исправил картину-)

Только вот как в аддонах это под админкой это исполнить в голове не умешаеться-((

вот например
RunProgram="wmic.exe Product where "Name LIKE '%%2ГИС%%'" call Uninstall"
AutoInstall="wmic.exe Product where "Name LIKE '%%2ГИС%%'" call Uninstall"

как запустить все это дело через админку.. чтоб в итоге при установке аддона не возникало проблемм

Iska
01-10-2013, 12:41
Не знаю, что такое «админка».

Guman
01-10-2013, 13:08
Командная строка/«wmic.exe» было запущено с административными привилегиями?
я про это имел ввиду

Iska
01-10-2013, 13:38
Права дочерними процессами наследуются. Возможно ли запустить аддон с административными привилегиями?

Guman
01-10-2013, 14:18
ну смотри в windows 7 запустить аддон с тихой установкой.. она же не будет выполнять эту команду правыльно , привилегий не хватит . по этому надо как то саму эту строчку внутри аддона запускать с правами администратора, вот как правильно сделать не понимаю... этот маленкий кусочек кода потом при созданый новых аддонов очень много раз будет помогать...

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

Iska
01-10-2013, 17:43
ну смотри в windows 7 запустить аддон с тихой установкой.. »
Коллега, я бы посмотрел, но у меня из всей Windows NT 6.x только Server 2008 R2. Равно не пользую аддоны. Так что, Вам и карты в руки.

lcnet
11-10-2019, 16:55
Приветствую!

Похожая ситуация, но с другой ошибкой

запускаю из 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

Iska
12-10-2019, 10:28
Нельзя запустить более одного процесса инсталляции/деинсталляции единовременно: MsiExec.exe and InstMsi.exe Error Messages - Windows applications | Microsoft Docs (https://docs.microsoft.com/en-us/windows/win32/msi/error-codes).

lcnet
14-10-2019, 08:50
Iska, Спасибо!
Плохо искал, видимо.
Хотя странно, задал запрос "wmi error code"...

Iska
14-10-2019, 17:19
lcnet, я так полагаю, что под критерий where попадает больше одного экземпляра класса Win32_Product. Хотя, конечно, не факт.




© OSzone.net 2001-2012