Короткий ответ: Вы не можете. Используйте ответ MSIEXEC/x
Long: То, когда Вы выполняете файл MSI непосредственно в командной строке, все, что это происходит, - то, что это выполняет MSIEXEC для Вас. Эта ассоциация хранится в реестре. Вы видите список ассоциаций (в Windows Explorer) идущий в Инструменты / Опции Папки / Типы файлов.
, Например, можно выполнить.DOC файл из командной строки, и WordPad или WinWord откроют ее для Вас.
, Если Вы смотрите в реестре под HKEY_CLASSES_ROOT\.msi
, Вы будете видеть, что.MSI файлы связаны с ProgID "Msi. Пакет". Если Вы посмотрите в HKEY_CLASSES_ROOT\Msi.Package\shell\Open\command
, Вы будете видеть командную строку, которую на самом деле использует Windows, когда Вы "выполняете".MSI файл.
msi
расширение файла отображается на msiexec (тот же способ ввести .txt имя файла на командной строке запускает обработчик файлов Блокнота/значения по умолчанию .txt
для отображения файла).
Таким образом ввод в имени файла с .msi расширением действительно выполняет msiexec с файлом MSI как аргумент и принимает меры по умолчанию, установку. По этой причине удаление требует, чтобы Вы для вызова msiexec с удалением переключились для неостанавливания его.
Я предполагаю, что при вводе интервала file.msi в командную строку Windows автоматически называет msiexec file.msi для Вас. Я принимаю это, потому что, когда Вы вводите в picture.png, он поднимает средство просмотра изображения по умолчанию.
Я попробовал бы следующий синтаксис - он работает на меня.
msiexec /x filename.msi /q
There are many ways to uninstall an MSI package. This is intended as a "reference".
In summary you can uninstall via: msiexec.exe, ARP, WMI, PowerShell, Deployment Systems such as SCCM, VBScript / COM Automation, DTF, or via hidden Windows cache folder, and a few other options presented below.
The first few paragraphs provide important MSI tidbits, then there are 14 sections with different ways to uninstall an MSI file. Puh.
"Babble, Babble - Over": Sections 1, 2 and 3 are the normal uninstall approaches (and hence recommended).
Personally I use option 3 or 5 from section 3
(both options with logging, but option 5 runs silently также). Если вы очень заняты , пропустите всю болтовню и выберите одну из них - он выполнит свою работу.
Если у вас проблемы с удалением вообще и вы ищете альтернативу устаревшей MsiZap.exe и / или Windows Installer CleanUp Utility ( MSICUU2.exe ), вы можете попробовать новый инструмент FixIt от Microsoft ( или международную страницу ). Очевидно, может работать и для других проблем с установкой.
Если вы считаете, что MSI и Установщик Windows больше проблем, чем оно того стоит, то вы можете прочитать о корпоративном преимущества использования файлов MSI .
Установочный скрипт MSI обычно поставляется в виде файла setup.exe . Чтобы узнать больше о параметрах, используемых для удаления таких настроек, перейдите по этим ссылкам: setup.exe pdf справочный лист , Setup. exe и Параметры командной строки Update.exe .
Некоторые файлы MSI устанавливаются как часть пакетов с помощью такого механизма, как Burn (WiX Toolkit) или InstallShield Suite проекты. Это может немного отличать удаление от того, что показано ниже. Вот пример для проектов InstallShield Suite .
Имейте в виду, что выполнение удаления в автоматическом режиме или в интерактивном режиме может привести к другим результатам (!) . Для довольно подробного описания того, почему это так, прочтите этот пост: Удаление из панели управления отличается от удаления из .msi
. Если при попытке удаления у вас неожиданно появится запрос на исходный установочный носитель, пожалуйста прочтите этот ответ: Почему MSI требует оригинал. msi, чтобы продолжить удаление? и, возможно, также раздел 12 ниже для некоторых важных технических деталей.
Если у вас установлены CCleaner или аналогичные инструменты очистки, возможно, перейдите к раздел 11 .
Если удаление полностью завершилось сбоем (запуск невозможен), см. Разделы 12 и 13 ниже , где описан потенциальный способ « отменить » установку с помощью восстановления системы. и / или инструменты для очистки.
Использование исходного MSI
Использование старого апплета ARP ИЛИ нового интерфейса настроек Windows 8/10
Просто нужно упомянуть нормальный подход (а), хотя он очевиден
ARP
= Апплет «Установка и удаление программ»
( appwiz.cpl
) Интерфейс настроек Windows 10
=> Новая оболочка для той же операции ARP :
Интерфейс настроек (Windows 8/10):
Приложения и функции
. Выберите запись и удалите. Использование командной строки msiexec.exe (напрямую или с помощью командного файла)
Для всех командных строк ниже вы можете добавить / qn
к ] запустить удаление в автоматическом режиме . Вот как выполняется удаление при запуске из апплета добавления / удаления.
Вариант 1: Базовое интерактивное удаление (доступ к исходному файлу MSI):
msiexec.exe / x "c: \ filename.msi"
Вариант 2: Базовое интерактивное удаление с помощью GUID продукта (нет доступа к исходному файлу MSI - вот как найти GUID продукта - та же ссылка, что и ниже):
msiexec.exe / x {11111111-1111-1111-1111-11111111111X}
Вариант 3. Интерактивное удаление с подробным файлом журнала :
msiexec.exe / x "c: \ filename.msi" / L * V "C: \ msilog.log"
msiexec.exe / x {11111111-1111-1111-1111-11111111111X} / L * V "C: \ msilog.log"
Вариант 4: Интерактивное удаление с очищенным подробным файлом журнала ( подробным, сбросить в журнал параметр - запись журнала выполняется непрерывно, может быть очень медленным):
msiexec.exe / x "c: \ filename.msi" / L * V! "C: \ msilog.log"
msiexec.exe / x {11111111-1111-1111-1111-11111111111X} / L * V! "C: \ msilog.log"
Параметр сброса в журнал замедляет процесс удаления , поскольку файл журнала записывается непрерывно, а не партиями. Это гарантирует, что буфер журнала не будет потерян в случае сбоя установки.
Другими словами, включите эту опцию, если ваша установка дает сбой и в подробном файле журнала нет полезной информации. Удалите восклицательный знак, чтобы отключить опцию сброса в журнал, и удаление будет намного быстрее. Вы по-прежнему получаете подробное ведение журнала, но, как указано, часть буфера журнала может быть потеряна.
Вариант 5 (рекомендуется): Тихая деинсталляция с подробным файлом журнала - подавить перезагрузки (без сброса в журнал - см. Предыдущий вариант, что это означает ):
msiexec.exe / x "c: \ filename.msi" / QN / L * V "C: \ msilog.log" REBOOT = R
msiexec.exe / x {11111111-1111-1111-1111-11111111111X} / QN / L * V "C: \ msilog.log" REBOOT = R
Краткое объяснение параметров (так как я рекомендую этот вариант):
/ X = запустить последовательность удаления
/ QN = работать без звука
/ L * V "C: \ msilog.log" = подробное ведение журнала по указанному пути
{11111111-1111-1111-1111-11111111111X} = руководство по продукту приложения для удаления
REBOOT = R = предотвратить неожиданную перезагрузку компьютера
Опять же, как найти руководство по продукту: Как я могу найти GUID продукта установленной установки MSI? (для удаления, если у вас нет исходного MSI, который нужно указать в команде удаления).
Главный совет : Если вы создайте файл журнала для удаления, вы можете найти проблемы в журнале, выполнив поиск «значение 3» . Это особенно полезно для подробных файлов, потому что они такие, ну, многословные: -).
Как найти GUID продукта для установленного MSI ?
Дополнительная информация о входе на installsite.org : Как мне создать файл журнала моей установки ? - отличный обзор различных параметров, а также особенности ведения журнала InstallShield.
Использование кэшированной базы данных MSI в папке суперскрытого кэша
get-wmiobject Win32_Product | Format-Table Name, LocalPackage -AutoSize
Использование
PowerShell
Запись добавлена Эвеном Мьеном:
$ app = Get-WmiObject -Class Win32_Product -Filter "Name = 'YOUR_APP'" Затем разверните окно PowerShell и выполните следующую команду:
get-wmiobject Win32_Product | Format-Table Name, LocalPackage -AutoSize
Использование
PowerShell
Запись добавлена Эвеном Мьеном:
$ app = Get-WmiObject -Class Win32_Product -Filter "Name = 'YOUR_APP'" Затем разверните окно PowerShell и выполните следующую команду:
get-wmiobject Win32_Product | Format-Table Name, LocalPackage -AutoSize
Использование
PowerShell
Запись добавлена Эвеном Мьеном:
$ app = Get-WmiObject -Class Win32_Product -Filter "Name = 'YOUR_APP'"
$ app.Uninstall ()
Этот подход будет работать, но доступ к WMI-классу Win32_Product вызовет проверку согласованности программного обеспечения , которая очень медленная и в особых случаях может вызвать самовосстановление MSI. срабатывает. См. Эту статью: Сценарий удаления Powershell - настоящая головная боль
Использование. NET DTF Class Library
(часть инструментария WiX ) using Microsoft.Deployment.WindowsInstaller;
public static void Uninstall( string productCode)
{
Installer.ConfigureProduct(productCode, 0, InstallState.Absent, "REBOOT=\"R\"");
}
Вот еще один сценарий VBScript для удаления по GUID от Symantec: http://www.symantec.com/connect/downloads/uninstall-application-using-guid-registry
Использование
основного обновления установщика Windows
Использование систем развертывания / систем удаленного администрирования
Использование WMI - инструментарий управления Windows
Win32_Product.Install
Win32_Product.Uninstall
Using a third-party tool such as
ccleaner
or similar
Using a cleanup tool such as
msizap
or similar
Использование
восстановления системы
(«отмена установки» - последнее средство ИМХО)
Функции установщика Windows (C ++)
Для полноты, я думаю, мы должны упомянуть суть всего этого - простой способ: функции Win32 Windows Installer API . Вероятно, это функции, которые используются большинством, если не все другие подходы, перечисленные выше, «под капотом». Они в основном используются приложениями или решениями, имеющими дело непосредственно с MSI как с технологией.
На serverfault.com есть ответ, который может быть интересен как сводка различных программных подходов к удалению (COM Автоматизация, .NET, функции установщика Win32).
Ниже вы найдете фрагмент кода C ++, показывающий, как удалить Orca, 10.1.17134.12
по коду продукта с помощью вызова функции MsiConfigureProductEx . Чтобы удалить другой продукт, замените GUID, указанный для prodcode
, на идентификатор вашего продукта. Чтобы найти код продукта, см. Этот ответ: Как я могу найти GUID продукта для установленной установки MSI?
Удаление будет происходить в режиме полного графического интерфейса. Для работы в автоматическом режиме или в другом режиме графического интерфейса пользователя (сокращенном, базовом и т. Д.) См.: MsiSetInternalUI function .
#include "pch.h"
#define WIN32_LEAN_AND_MEAN //Minimize includes from Windows.h
#include <windows.h>
#include <msi.h> // Windows Installer
#include <tchar.h>
#pragma comment(lib, "msi.lib") // To make code link
int main()
{
const TCHAR noreboot[] = _T("REBOOT=ReallySuppress");
const TCHAR prodcode[39] = _T("{D7B80ABC-1950-37B8-F851-C3783EED9C93}"); // Orca, 10.1.17134.12
UINT res = MsiConfigureProductEx(prodcode, INSTALLLEVEL_DEFAULT, INSTALLSTATE_ABSENT, noreboot);
return res; // Error Codes: https://msdn.microsoft.com/en-us/library/windows/desktop/aa376931(v=vs.85).aspx
}
Фрагмент был создан и протестирован с последней версией ] Visual Studio 2017 по состоянию на сентябрь 2018 г .:
Это должно быть для запуска кода. Возможно, установите точку останова, выполните сборку и запуск.
Также помните, что удаление может быть инициировано с использованием команды WMIC:
WMIC Product Get Name
-> Это перечисляет имена всех установленных приложений
WMIC Откуда name = 'myAppsname' call unnstall
-> Это удалит приложение.