Удаление MSI-файла из командной строки без использования msiexec
-
19-08-2019 - |
Вопрос
msiexec
является ли программное обеспечение командной строки, которое устанавливает МСИ программа.Но я обнаружил, что вы можете установить MSI-файл из командной строки, просто введя имя MSI-файла в командной строке.
Но для того, чтобы удалить MSI-файл, похоже, вам нужно вызвать msiexec
запрограммируйте и придайте ему /x
или /uninstall
.
Как я могу удалить MSI из командной строки без использования msiexec
рутина?
Решение
Краткий ответ: вы не можете. Используйте MSIEXEC / x
Длинный ответ. Когда вы запускаете файл MSI непосредственно из командной строки, все, что происходит, - это то, что он запускает MSIEXEC для вас. Эта связь хранится в реестре. Вы можете увидеть список ассоциаций (в проводнике Windows), перейдя в Инструменты / Параметры папки / Типы файлов.
Например, вы можете запустить файл .DOC из командной строки, и WordPad или WinWord откроет его для вас.
Если вы загляните в реестр в разделе HKEY_CLASSES_ROOT\.msi
, то увидите, что файлы .MSI связаны с ProgID " Msi.Package " ;. Если вы загляните в HKEY_CLASSES_ROOT\Msi.Package\shell\Open\command
, то увидите командную строку, которую Windows фактически использует, когда вы & Quot; запускаете & Quot; файл .MSI.
Другие советы
Существует много способов удалить пакет MSI.Это предназначено в качестве "ссылки".
Подводя итог вы можете удалить его с помощью: msiexec.exe, ARP, WMI, PowerShell, Системы развертывания , такие как SCCM, VBScript / Автоматизация COM, DTF, или через скрытая папка кэша Windows, и несколько других вариантов, представленных ниже.
Первые несколько абзацев содержат важные сведения о MSI, затем следуют 14 разделов с различными способами удаления MSI-файла.Puh.
"Лепет, Перебранка": Разделы 1, 2 и 3 являются ли обычные подходы к удалению (и, следовательно, рекомендуется).
Personally I use option 3 or 5 from section 3
(оба варианта с протоколированием, но вариант 5 также выполняется бесшумно ).Если вы очень занят, пропустите всю болтовню и выберите один из них - он выполнит свою работу.
Если у вас есть проблемы с полным удалением и ищете альтернативу устаревшему MsiZap.exe и / или Утилита очистки Установщика Windows (MSICUU2.exe), вы можете попробовать новый Инструмент для исправления ошибок от Microsoft (или международная страница).По-видимому, может сработать и при других проблемах с установкой.
Если вы думаете, МСИ и Установщик Windows возможно, вам захочется почитать о том, что это доставляет больше хлопот, чем того стоит корпоративные преимущества использования файлов MSI.
Установочный скрипт MSI настройки обычно поставляются в виде setup.exe файл.Чтобы узнать больше о параметрах, используемых для удаления таких настроек, пожалуйста, ознакомьтесь с этими ссылками: setup.exe справочный лист в формате PDF, Setup.exe и Update.exe Параметры командной строки.
Некоторые файлы MSI устанавливаются как часть пачки с помощью такого механизма, как Гореть (WiX Toolkit) или Пакет InstallShield Suite Проекты.Это может привести к удалению, немного отличающемуся от того, что показано ниже.Вот пример для проектов InstallShield Suite.
Имейте в виду, что запущенная деинсталляция молча или интерактивно может привести к разным результатам (!).Для получения довольно пространного описания того, почему это так, пожалуйста, прочтите этот пост: Удаление из панели управления отличается от удаления из .msi
Если при попытке удаления у вас неожиданно попросят исходный установочный носитель, пожалуйста, прочтите этот ответ: Почему MSI требует исходный файл .msi для продолжения удаления? и, возможно, также в разделе 12 ниже приведены некоторые важные технические детали.
Если у вас есть CCleaner или аналогичные установленные инструменты очистки, возможно, перейти к раздел 11.
Если удаление завершается полным сбоем (запуск невозможен), смотрите разделы 12 и 13 ниже для потенциального способа "отменить" установка с использованием восстановление системы и / или инструменты для очистки.
1. Using the original MSI
- Если у вас есть доступ к оригинальному MSI, используемому для установки, вы можете просто щелкните правой кнопкой мыши это в Проводник Windows и выберите Удалить.
- Вы также можете удалить его через командную строку, как описано в разделе 3.
2. Using the old ARP Applet OR new Windows 8/10 Settings Interface
Просто должен упомянуть обычный подход (ы), хотя он очевиден
ARP
=Add / Remove Programs Applet
(appwiz.cpl
)Windows 10 Settings Interface
=> Новая оболочка для той же операции
ARP:
- Вперед начать → бежать → appwiz.cpl → ВОЙТИ для того, чтобы открыть апплет установка и удаление программ (или нажать кнопку Установка и удаление программ на панели управления)
- Щелчок "Удалить" для продукта, который вы хотите удалить
Интерфейс настроек (Windows 8/10):
- Используйте новый графический интерфейс настроек в Windows 8/10
- Клавиша Windows + Коснитесь Я =>
Apps & Features
.Выберите запись и удалите. - Некоторые сообщения об ошибках при вызове деинсталляции таким способом.Пожалуйста, добавляйте комментарии ниже, если увидите.
- Попробуйте также ответить на этот вопрос
- Общий намек:попробуйте отключить антивирус и повторите попытку.
3. Using msiexec.exe command line (directly or via a batch file)
- Вы можете удалить его с помощью командная строка (cmd.exe), пакетный файл или или даже изнутри исполняемого файла в виде операция оболочки.
- Вы делаете это, передавая идентификатор продукта (проверьте ниже, как найти это GUID) или путь к исходному MSI-файлу, если таковой имеется, к 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 = run uninstall sequence /QN = run completely silently /L*V "C:\msilog.log"= verbose logging at path specified {11111111-1111-1111-1111-11111111111X} = product guid of app to uninstall REBOOT=R = prevent unexpected reboot of computer
Опять же, как найти guid продукта:Как я могу найти GUID продукта установленной программы установки MSI? (для удаления, если у вас нет исходного MSI, который нужно указать в команде удаления).
Верхний наконечник:Если вы создадите файл журнала для удаления, вы сможете найти проблемы в журнале с помощью поиск "значения 3".Это особенно полезно для подробных файлов, потому что они такие, ну, в общем, подробные :-).
Как найти GUID продукта для установленного MSI?
- Есть несколько способов, мой рекомендуемый способ - использовать Powershell: Как я могу найти GUID продукта установленной программы установки MSI?
- Несколько других способов, описанных здесь (реестр, локальная папка кэша и т.д.): Найти GUID Из MSI-файла
Дополнительная информация о регистрации на сайте installsite.org: Как мне создать файл журнала моей установки? - отличный обзор различных опций, а также особенностей ведения журнала InstallShield.
- Msiexec (параметры командной строки) - обзор командной строки для msiexec.exe От MSDN.Вот версия Technet.
4. Using the cached MSI database in the super hidden cache folder
- MSI удаляет все cabs (более старые версии Windows) и кэширует каждый установленный MSI в супер-скрытой системной папке по адресу %Системный корень%\Установщик (вам нужно показать скрытые файлы, чтобы увидеть это).
- Примечание:Эта папка, скрытая от посторонних глаз, теперь обрабатывается по-другому в Windows 7 и более поздних версиях. Файлы MSI теперь кэшируются в натуральную величину.Прочитайте связанную ветку для получения более подробной информации - рекомендуется прочитать всем, кто находит этот ответ и возится с опасными настройками Windows.
- Всем MSI-файлам здесь будет присвоено случайное имя (шестнадцатеричный формат), но вы можете получить информацию о каждом MSI, показав строку состояния проводника Windows (Вид -> Строка состояния), а затем выбрав MSI.Итоговый поток из MSI будет виден в нижней части окна проводника Windows.Или, как указывает Кристофер Галпин, включите столбец "Комментарии" в проводнике Windows и выберите MSI-файл (смотрите эту статью о том, как это сделать).
- Как только вы найдете нужный MSI, просто щелкните его правой кнопкой мыши и перейдите к удалению.
- Вы также можете использовать PowerShell, чтобы показать полный путь к локально кэшированному пакету вместе с названием продукта.Это самый простой вариант, на мой взгляд.
- Чтобы запустить PowerShell: удерживая нажатой клавишу Windows, нажмите R, отпустите клавишу Windows, введите "powershell" и нажмите OK.Тогда разверните окно PowerShell по максимуму и выполните приведенную ниже команду:
get-wmiobject Win32_Product | Format-Table Name, LocalPackage -AutoSize
- Также смотрите этот ответ: Как я могу найти GUID продукта установленной программы установки MSI?
5. Using
PowerShell
- Есть аналогичный, но более полный сценарий PowerShell доступен в MSDN.Это позволяет запускать деинсталляцию на нескольких компьютерах.
Запись добавлена Even Mien:
$app = Get-WmiObject -Class Win32_Product -Filter "Name = 'YOUR_APP'" $app.Uninstall()
Этот подход будет работать, но доступ к WMI-классу Win32_Product вызовет проверка согласованности программного обеспечения который является очень медленно и в особых обстоятельствах это может привести к запуску самовосстановления MSI.Смотрите эту статью: Сценарий удаления Powershell - Настоящая головная боль
- Я сам это не тестировал, но, похоже, $app.Uninstall() может запускать строку UninstallString, зарегистрированную в настройках реестра апплета ARP.Это означает, что в некоторых случаях он может запускать modify вместо uninstall.
- Ознакомьтесь с этим разделом для получения более подробной информации и способов удаления с помощью Powershell: Как я могу удалить приложение с помощью PowerShell?
6. Using the .NET DTF Class Library
(часть инструментарий WiX)
- Эта опция включена для разработчиков, приступающих к развертыванию и MSI - это не совсем практично в качестве "быстрого решения".Для этого требуется, чтобы вы скачали инструментарий WiX - бесплатный фреймворк для создания MSI-файлов, скомпилированный из исходных файлов XML.
- Краткий обзор WiX и его "истории": Установщик Windows и создание WiX.И вот как WiX отличается от других инструментов развертывания (коммерческих) - (сильные и слабые стороны - надеюсь, как можно более объективные).
- DTF (Deployment Tools Foundation) распространяется как часть WiX, как описано здесь: Доступен ли исходный код для Deployment Tools Foundation?.
- DTF - это, по сути, .NET-оболочка для Win32 Windows Installer API.Это устраняет всякую необходимость в COM-взаимодействии при работе с установщиком Windows с помощью автоматизации и представляет собой не что иное, как Драгоценный камень .NET - пожалуй, самая простая в использовании.Библиотека NET, которую я когда-либо видел.Настоятельно рекомендуется - отлично подходит даже для обучения студентов C#.
- Следующее Источник от эксперта MSI Кристофер Пейнтер используя C # и DTF.Майкрософт.Развертывание.WindowsInstaller является одной из сборок DTF. Смотрите другие сборки, описанные здесь на serverfault.com:
using Microsoft.Deployment.WindowsInstaller;
public static void Uninstall( string productCode)
{
Installer.ConfigureProduct(productCode, 0, InstallState.Absent, "REBOOT=\"R\"");
}
- Альтернатива пыльнику от Тома Блоджета: Проверка успешной деинсталляции
- Более подробная информация о msiexec.exe против автоматизация вкл .: serverfault.com.
7. Using the
Windows Installer Automation API
- Вот обсуждение этого варианта сообществом: Пример сообщества API автоматизации установщика Windows
- Доступ к API можно получить через автоматизация сценариев и вызовы API на C ++ (мой пост на serverfault.com)
Следующий источник адаптирован от MSI expert Кристофер Пейнтер используя VBScript:
Set installer = CreateObject("WindowsInstaller.Installer") installer.InstallProduct "product.msi", "REMOVE=ALL REBOOT=ReallySuppress" Set installer = Nothing
Вот еще один VBScript для удаления с помощью GUID от Symantec: http://www.symantec.com/connect/downloads/uninstall-application-using-guid-registry
Удаление с помощью кода обновления и конфигурационного продукта.
8. Using a
Windows Installer major upgrade
- Серьезное обновление программы установки Windows может произойти как часть установки другого файла MSI.
- Основное обновление выполняется путем определения сопутствующих продуктов в каталоге MSI. "Таблица обновления".Затем эти связанные настройки обрабатываются, как указано в таблице.Как правило, это означает, что они удалены, но вместо этого можно прервать основную настройку (обычно используется для обнаружения более высоких версий вашего собственного приложения, присутствующих в коробке).
9. Using Deployment Systems / Remote Administration Systems
- SCCM, Единый Центр CA, Tivoli от IBM, Альтирис Пакет управления клиентами и несколько других
- Эти инструменты обеспечивают расширенное управление клиентским ПК, включая установку и удаление файлов MSI
- Эти инструменты, по-видимому, используют комбинацию msiexec.exe, автоматизации, WMI, и т.д...и даже их собственный способ вызова установок и деинсталляции.
- По моему опыту, эти инструменты обладают большой "индивидуальностью", и вам нужно адаптироваться к их различным способам ведения дел.
10. Using WMI - Windows Management Instrumentation
- Добавляю просто для полноты картины.Это так не рекомендуется использовать этот подход, поскольку он очень медленно
- A проверка согласованности программного обеспечения срабатывает каждый раз Win32_Product ( Вин32_Продукт ) вызывается при каждой установке
- Проверка согласованности заключается в следующем невероятно медленный, и это это также может привести к восстановлению программного обеспечения.Смотрите эту статью: Сценарий удаления Powershell - Настоящая головная боль
- Еще хуже, некоторые люди сообщают, что их журналы событий заполняются записями MsiInstaller EventID 1035 - по-видимому, вызвано запросами WMI к классу Win32_Product (лично я такого никогда не видел).
- Тот Самый WMICodeCreator.exe инструмент создания кода можно использовать для экспериментов
- Установка может быть вызвана через
Win32_Product.Install
- Удаление может быть вызвано через
Win32_Product.Uninstall
- Установка может быть вызвана через
- Образец MSDN: Метод удаления класса Win32_Product
11. Using a third-party tool such as
ccleaner
or similar
- Несколько приложений Windows имеют собственный интерфейс для удаления не только пакетов MSI, но и устаревших установщиков.
- Я не хочу давать здесь каких-либо конкретных рекомендаций по инструментам (особенно коммерческим), но хорошо известные CCleaner имеет такой интерфейс удаления (и у него есть бесплатная версия).Я должен также добавить, что недавно этот инструмент подвергся вредоносной атаке.
- Я думаю, мы все должны помнить, что даже безобидное программное обеспечение может быть заражено вредоносным ПО в местах его загрузки (FTP-атака).
- Я использую virustotal.com чтобы проверить мои загрузки, а также Системный Обозреватель процессов для проверки запущенных процессов после установки - вместе с обычным программным обеспечением безопасности (в зависимости от того, что доступно).
- При таком подходе обычно обнаруживается удивительное количество программ "серой зоны" (панели инструментов, смайлики, рекламное ПО и т.д.), А также несколько ложных срабатываний (они также могут вызвать проблемы, поскольку программы безопасности блокируют доступ к ним или помещают их в карантин, создавая много шума).И, конечно же, настоящая вредоносная программа.
- Некоторые советы по использованию Process Explorer можно найти здесь - серия твитов - этот инструмент Process Explorer подключается к VirusTotal.com чтобы проверить все запущенные процессы в интерактивном режиме, все, что вам нужно, - это несколько шагов настройки.
- Я должен отметить, что Process Explorer выдает проверку подписи файла, но никакой эвристики - насколько я понимаю (никакой проверки на подозрительные операции, просто проверка с более чем 60 наборами безопасности для помеченных файлов).Вам нужен обычный инструмент безопасности для интерактивной, онлайн-эвристической защиты.
- Как бы то ни было, я думаю, что некоторые программы безопасности граничат с тем, что вызывают больше ложноположительных проблем, чем вредоносное ПО наносит ущерба.Знаменитые последние слова в эпоху вымогательства...
- Это достаточно большое отступление - я просто не хочу видеть, как люди скачивают вредоносное ПО.Делайте свое virustotal.com проверь хотя бы.
- Удаление, подобное этому, должно работать нормально.Я думаю, что эти инструменты портят слишком много вещей, когда вы пробуете их "функции очистки".Используйте с осторожностью.Если вы используете только функцию удаления, все должно быть в порядке.
12. Using a cleanup tool such as
msizap
or similar
msizap
- Для полноты картины
msizap.exeследует упомянуть, хотя это и так устаревший, неподдерживаемый и устаревший.Его не следует использовать ни в каких более новых версиях Windows - Этот инструмент командной строки (
msizap.exe) также был доступен графический интерфейс (MSICUU2.exe).Оба инструмента устарели. - Предполагаемое использование этих инструментов заключалось в том, чтобы удалите неудачные деинсталляции:
- Как правило, для того редкого случая, когда кэшированный MSI-файл со случайным именем ошибочно отсутствует и удалить не удается по этой причине при запросе исходного MSI.Это редкая проблема, но я видел ее сам.Всего лишь несколько потенциальных причин: Перешел к этому ответу.
- Ключевые слова:вмешательство в восстановление системы, плохие приложения для очистки, msiexec.exe сбой, отключение питания, вмешательство в программное обеспечение безопасности, ошибки при разработке MSI для отладки (идентичные коды пакетов и т.д.), вмешательство пользователей и взлом (что здесь?экономить место?) и т.д...
- Он также может быть использован для блокировки любой установки MSI, хотя это явно нежелательно.
- Дополнительная информация: Почему MSI требует исходный файл .msi для продолжения удаления?
Этот новый инструмент поддержки(этот инструмент теперь также устарел) можно попробовать в последних версиях Windows, если у вас есть несуществующие пакеты MSI, требующие удаления.- Некоторые предложили использовать инструмент, на который ссылается здесь saschabeaumont: Удаление без использования MSI-файла.Если вы попробуете это и это сработает, пожалуйста, обязательно сообщите нам об этом.
- Если у вас есть доступ к оригинальному MSI, который фактически использовался для установки продукта, вы можете использовать его для запуска удаления.Это должен быть именно тот MSI, который был использован, а не просто похожий.
13. Using
system restore
("installation undo" - last resort IMHO)
- Строго говоря , это не способ "удалить" но для того , чтобы "отменить- последняя установка или несколько установок, если уж на то пошло.
- Восстановление через точку восстановления возвращает систему в исходное состояние. предыдущее состояние установки (вы можете найти демо-версии этого видео на YouTube или аналогичном сайте).
- Обратите внимание, что эта функция может быть отключена полностью или частично - ее можно отключить навсегда для всего компьютера или индивидуально для каждой установки.
- Я видел новые, неразрешимые проблемы с установкой, возникающие в результате восстановления системы, но обычно все работает нормально.Очевидно, что вы используете эту функцию не для развлечения.Это последнее средство, и его лучше всего использовать для откат новых драйверов или настройки, которые только что были установлены и, как было обнаружено, вызывают немедленные проблемы (синий экран, перезагрузки, нестабильность и т.д.).
- Чем дольше вы будете возвращаться назад, тем больше переделок вы создадите для себя и тем выше будет риск.Большинство систем имеют всего несколько точек восстановления, и, по-моему, большинство из них рассчитаны всего на месяц или два.
- Имейте в виду, что восстановление системы может повлиять Обновления Windows затем это должно быть применено повторно, как и многие другие системные настройки.Помимо чисто неприятных моментов, это также может привести к повторному появлению проблем с безопасностью, и вы можете захотеть выполнить специальную проверку безопасности в целевых полях с помощью Базовый анализатор безопасности Microsoft или аналогичные инструменты.
- Поскольку я упомянул о восстановлении системы, полагаю, я должен упомянуть последняя известная хорошая функция настройки.Эта функция не имеет ничего общего с удалением или восстановлением системы, но это последняя конфигурация загрузки, которая сработала или привела к запуску системы.Его можно использовать для возобновления работы вашей системы, если она загорается синим цветом или останавливается во время загрузки.Это часто происходит после установки драйвера.
14. Windows Installer Functions (C++)
Для полноты картины, я думаю, мы должны упомянуть суть всего этого - "от начала до конца": функции API установщика Win32 для Windows.Вероятно, это функции, используемые большинством, если не всеми другими подходами, перечисленными выше "под капотом".В основном они используются приложениями или решениями, непосредственно связанными с MSI как технологией.
Существует ответ на serverfault.com, который может представлять интерес как краткое описание различных программных подходов к удалению (Функции COM-автоматизации, .NET, установщика Win32).
Ниже вы найдете фрагмент кода на C ++, показывающий, как удалить Orca, 10.1.17134.12
по коду продукта, используя вызов Функция MsiConfigureProductEx.Чтобы удалить другой продукт, замените GUID, указанный для prodcode
с тем, что подходит для вашего продукта.Чтобы найти код продукта, смотрите Этот ответ: Как я могу найти GUID продукта установленной программы установки MSI?
Удаление произойдет в режиме полного графического интерфейса.Чтобы работать в автоматическом режиме или в каком-либо другом графическом режиме (сокращенный, базовый и т.д.), пожалуйста, ознакомьтесь с: Функция MsiSetInternalUI.
#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 года:
- Создайте новое "Консольное приложение Windows" из Visual C++ => Рабочий стол Windows.
- Скопируйте и вставьте приведенный выше код в ваш основной CPP-файл (заменив все, что там есть).
Это должно быть так, чтобы можно было запустить код.Может быть, установить точку останова, собрать и запустить.
Остерегайтесь изменений в шаблонах по умолчанию в VS2017 и странных ошибок, которые могут привести: Существует слишком много ошибок, чтобы движок IntelliSense функционировал корректно.- ОБНОВЛЕНИЕ За сентябрь 2018 года:Шаблоны снова изменились.Я больше не вижу вышеуказанной проблемы.
- Ссылка MSDN в коде содержит список возможных сообщений об ошибках, возвращаемых из msiexec.exe.
Также помните, что удаление может быть инициировано с помощью команды WMIC:
wmic product get name
- > В этом списке будут перечислены все установленные приложения.
wmic product where name='myappsname' call uninstall
- > это приведет к удалению приложения.
Расширение файла msi
сопоставлено с msiexec (аналогично, при вводе имени файла .txt в командной строке запускается обработчик файла Notepad / default .txt
для отображения файла).
Таким образом, ввод имени файла с расширением .msi действительно запускает msiexec с MSI-файлом в качестве аргумента и выполняет действие по умолчанию, install. По этой причине удаление требует, чтобы вы вызвали msiexec с параметром удаления, чтобы удалить его.
wmic product get name
Просто застрял cmd ... все еще мигает _ через пару минут
в HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall
, если вы можете найти папку с именем программного обеспечения, которое вы пытаетесь установить (а не с именем, указанным в ProductCode), UninstallString указывает на собственный деинсталлятор приложения C:\Program Files\Zune\ZuneSetup.exe /x
Я бы попробовал следующий синтаксис - он работает для меня.
msiexec /x filename.msi /q
Я предполагаю, что когда вы вводите int file.msi в командную строку, Windows автоматически вызывает msiexec file.msi для вас. Я предполагаю это, потому что когда вы печатаете в picture.png, он вызывает просмотрщик изображений по умолчанию.