2011-01-17 04:15:36 +0000 2011-01-17 04:15:36 +0000
30
30

Бесшумная деинсталляция программ через CMD

Есть ли способ деинсталлировать программы без графического интерфейса и делать это через CMD?

Ответы (8)

26
26
26
2014-07-23 21:33:01 +0000

Вы можете вызвать правильный деинсталлятор, не зная GUID и т.д. с помощью WMIC.

Для просмотра списка имен программ, известных внутри Windows:

wmic product get name

Ищите название своего продукта. Вероятно, оно совпадает со списком, приведенным на панели управления “Программы и функции”, но не всегда.

Тогда вы можете использовать

wmic product where name="_my_product_name" call uninstall

для выполнения деинсталляции, которая в AFAIK должна быть тихой (это было по моему опыту, но попробуйте, прежде чем ставить ферму на это. Молчание может зависеть от того, как был построен ваш инсталлятор/деинсталлятор).

Смотрите здесь:

На сайте microsoft.com также есть справочная документация по WMIC.

19
19
19
2011-01-17 05:14:51 +0000

Каждая программа, правильно устанавливаемая в соответствии с рекомендациями Microsoft, делает запись в реестре в HKLM\Software\Microsoft\Windows\CurrentVersion\Uninstall. Обычно ключом для программы будет ее GUID, или же имя программы. Внутри этого ключа будет запись под названием UninstallString. Она содержит команду, которую необходимо выполнить для деинсталляции программы.

Если вы уже заранее знаете, что будете деинсталлировать, то достаточно просто поместить это в ваш пакетный файл. Однако, это становится сложным, когда вы пытаетесь автоматизировать этот процесс. Вы можете использовать команду reg для получения данных из реестра, но она возвращает много текста вокруг действительного значения заданного ключа, что усложняет ее использование. Вы можете поэкспериментировать с использованием VBscript или PowerShell, так как они имеют лучшие возможности для получения данных из реестра в переменную.

7
7
7
2015-12-29 14:56:33 +0000

Если у вас установлен PowerShell 3 (или выше), вы можете выпустить вызов WMI, чтобы получить все программы с именем определенной вещи (или ‘like’ a certain thing, для выполнения поиска по подстановочным знакам), а затем вызвать метод Uninstall для каждой из них:

(Get-WmiObject -Query "SELECT * FROM Win32_Product WHERE Name like '%Partial Name%'").uninstall()

5
5
5
2011-01-17 04:24:49 +0000

Если вы знаете, где находится установочный файл MSI, вы можете его использовать:

Msiexec /удаление Application.msi /quiet

5
5
5
2011-01-17 04:23:12 +0000

Если программа использует Windows Installer, можно воспользоваться одной из следующих команд:

msiexec /q /x <ProductCodeGuid>
msiexec /q /x <PathToMsi>

Однако, скорее всего, у вас нет ни кода продукта, ни оригинального MSI-файла, используемого для установки.

Кроме этого, не существует общей команды деинсталляции, так как программа установки, которая не использует Windows Installer, “неизвестна” операционной системой. Они могут предоставить свой собственный исполняемый файл для деинсталляции, но включает ли этот исполняемый файл способ запуска без графического интерфейса, зависит от конкретного программного пакета.

1
1
1
2018-06-30 22:14:12 +0000

Проверьте это, это использование пакета найти UninstallString ключ реестра программного обеспечения, а затем удалить программное обеспечение тихо, что является much более надежным по сравнению с wmic Я нашел [ https://community.spiceworks.com/topic/2143980-deploy-or-upgrade-java-8-via-shutdown-script-remove-old-javas ]0x3 и 0x2 и 0x2 и 0x1 &

1
1
1
2015-03-18 17:36:56 +0000

Скрипт VBScript поможет вам деинсталлировать нужную программу.

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

Просто введите имя приложения в сценарий и запустите его с правами администратора; он удалит приложение. Но это будет работать только для оконных приложений; для автономных установок или приложений, которые не делают запись в строке деинсталляции реестра, скрипт не будет работать.

Таким образом, в этом случае вам придется найти другой способ деинсталляции приложения.

Код:

On error resume Next

Dim strName, WshShell, oReg, keyname

Const HKEY_LOCAL_MACHINE = &H80000002
strComputer = "."

'=============================================
'Change the value here with DisplayName's value
strName = " "
'=============================================
Set WshShell = CreateObject("WScript.Shell")
Set oReg=GetObject("winmgmts:{impersonationLevel=impersonate}!\" & strComputer & "\root\default:StdRegProv")
strKeyPath = "SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall"
oReg.EnumKey HKEY_LOCAL_MACHINE, strKeyPath, arrSubKeys
For Each subkey In arrSubKeys
    keyname = ""
       keyname = wshshell.RegRead("HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\" & subkey & "\DisplayName")
    If keyname = strName then
        i = subkey
    End If
Next

If i Then

    WshShell.Run "MSIEXEC.EXE /X " & i & " /QN", 1, True
End If

Set WshShell = Nothing
set ObjReg = Nothing

WScript.Quit
0
0
0
2017-06-08 01:49:09 +0000

Правильный ответ приведен выше, но при установке Windows X64 вам также нужно будет проверить:

HKLM\SOFTWARE\WOW6432Node\Microsoft\Windows\CurrentVersion\Uninstall\

Похожие вопросы

3
19
10
28
5