Удаление MSI-файла из командной строки без использования msiexec
msiexec
является программой командной строки, которая устанавливает программу MSI. Но я обнаружил, что вы можете установить MSI-файл из командной строки, просто введя имя MSI-файла в командной строке.
Но для того, чтобы удалить файл MSI, кажется, вам нужно вызвать msiexec
запрограммировать и дать ему /x
или же /uninstall
,
Как я могу удалить MSI из командной строки, не используя msiexec
рутина?
8 ответов
Краткий ответ: вы не можете. Используйте MSIEXEC /x
Длинный ответ: когда вы запускаете MSI-файл непосредственно из командной строки, все, что происходит, это то, что он запускает MSIEXEC для вас. Эта связь хранится в реестре. Вы можете увидеть список ассоциаций (в Windows Explorer), перейдя в Инструменты / Параметры папки / Типы файлов.
Например, вы можете запустить файл.DOC из командной строки, и WordPad или WinWord откроет его для вас.
Если вы посмотрите в реестре под HKEY_CLASSES_ROOT\.msi
вы увидите, что файлы.MSI связаны с ProgID "Msi.Package". Если вы посмотрите в HKEY_CLASSES_ROOT\Msi.Package\shell\Open\command
вы увидите командную строку, которую Windows фактически использует при "запуске" MSI-файла.
Есть много способов удалить пакет MSI. Это задумано как "ссылка".
В итоге вы можете удалить с помощью: msiexec.exe, ARP, WMI, PowerShell, систем развертывания, таких как SCCM, VBScript / COM Automation, DTF или через скрытую папку кэша Windows, а также несколько других опций, представленных ниже.
Первые несколько параграфов содержат важные лакомые кусочки MSI, затем есть 14 разделов с различными способами удаления файла MSI. Puh.
Разделы 1, 2 и 3 - это обычные подходы к удалению (и, следовательно, рекомендуемые). Лично я использую вариант 3 или 5 из раздела 3 (оба варианта с ведением журнала, но вариант 5 также работает тихо). Если вы очень заняты, пропустите все разговоры и попробуйте один из них - он выполнит свою работу.
Если у вас есть проблемы с удалением вообще и вы ищете альтернативу устаревшей MsiZap.exe и / или утилита очистки установщика Windows ( MSICUU2.exe ), вы можете попробовать новый инструмент FixIt от Microsoft ( или на международной странице). Очевидно, может работать и для других проблем установки.
Если вы считаете, что MSI и Windows Installer доставляют больше хлопот, чем того стоит, вы можете прочитать о корпоративных преимуществах использования файлов 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 ниже для потенциального способа " отменить " установку с помощью инструментов восстановления и / или очистки системы.
1. Использование оригинального MSI
- Если у вас есть доступ к исходному MSI, который использовался для установки, вы можете просто щелкнуть его правой кнопкой мыши в Windows Explorer и выбрать " Удалить".
- Вы также можете удалить из командной строки, как описано в разделе 3.
2. Использование апплета ARP (Установка и удаление программ)
- Просто надо упомянуть нормальный подход, хотя это очевидно
- Перейдите в начало → выполнить → appwiz.cpl → ENTER, чтобы открыть апплет добавления / удаления программ (или нажмите "Добавить / удалить программы" на панели управления).
- Нажмите " Удалить " для продукта, который вы хотите удалить.
3. Использование командной строки msiexec.exe (напрямую или через командный файл)
- Вы можете удалить из командной строки (cmd.exe), пакетного файла или даже из исполняемого файла в качестве операции оболочки.
- Это можно сделать, передав GUID продукта (см. Ниже, как найти этот 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"
Опция flush to 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 продукта с установленной установкой MSI? (для деинсталляции, если у вас нет исходного MSI для указания в команде удаления).
Совет: если вы создаете файл журнала для удаления, вы можете найти проблемы в журнале, выполнив поиск "значение 3". Это особенно полезно для многословных файлов, потому что они очень многословны:-).
Как найти GUID продукта для установленного MSI?
- Есть несколько способов, я рекомендую использовать Powershell: Как найти GUID продукта установленной установки MSI?
- Несколько других способов, описанных здесь (реестр, папка локального кэша и т. Д.): Найти GUID из файла MSI
Дополнительная информация о входе в систему с сайта installsite.org: Как мне создать файл журнала моей установки? - отличный обзор различных опций, а также особенностей ведения журнала InstallShield.
- Msiexec (параметры командной строки) - обзор командной строки для msiexec.exe из MSDN. Вот версия Technet.
4. Использование кэшированной базы данных MSI в супер скрытой папке кэша
- MSI удаляет все кабины (более старые версии Windows) и кэширует каждый MSI, установленный в суперскрытой системной папке по адресу % SystemRoot% \ Installer (для ее просмотра необходимо показать скрытые файлы).
- NB. Эта скрытая за ужином папка теперь обрабатывается по-разному в Windows 7 и выше. MSI-файлы теперь кэшируются в полном размере. Прочитайте связанную ветку для получения дополнительной информации - рекомендуется прочитать всем, кто находит этот ответ и возится с опасными настройками Windows.
- Всем файлам MSI здесь будет назначено случайное имя (в шестнадцатеричном формате), но вы можете получить информацию о каждом MSI, показав строку состояния Windows Explorer (Вид -> Строка состояния) и затем выбрав 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. Использование 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. Это означает, что в некоторых случаях он может запускать модификацию вместо удаления.
- Ознакомьтесь с этой темой для получения дополнительной информации и способов удаления с помощью Powershell. Как удалить приложение с помощью PowerShell?
6. Использование библиотеки классов.NET DTF (часть инструментария WiX)
- Эта опция включена для разработчиков, приступающих к развертыванию и MSI - на самом деле это не практичное "быстрое исправление". Для этого требуется загрузить инструментарий WiX - бесплатную платформу для создания файлов MSI, скомпилированных из исходного файла (ов) XML.
- Краткий обзор WiX и его "истории": установщик Windows и создание WiX. А вот WiX контрастирует с другими инструментами развертывания (коммерческими) - (сильные и слабые стороны - надеюсь, насколько это возможно).
- DTF (Deployment Tools Foundation) распространяется как часть WiX, как описано здесь: Доступен ли исходный код для Deployment Tools Foundation?,
- DTF - это, по сути, оболочка.NET для Win32 Windows Installer API. Он устраняет все потребности в COM Interop при работе с установщиком Windows с помощью автоматизации и представляет собой не что иное, как жемчужину.NET - возможно, самую простую в использовании библиотеку.NET, которую я когда-либо видел. Настоятельно рекомендуется - отлично подходит даже для обучения студентов на C#.
- Следующий источник от эксперта MSI Кристофера Пейнтера с использованием C# и DTF. Microsoft.Deployment.WindowsInstaller является одной из сборок DTF. Смотрите другие сборки, описанные здесь на serverfault.com:
using Microsoft.Deployment.WindowsInstaller;
public static void Uninstall( string productCode)
{
Installer.ConfigureProduct(productCode, 0, InstallState.Absent, "REBOOT=\"R\"");
}
- Другая альтернатива от Tom Blodget: проверка на успешное удаление
- Больше информации о msiexec.exe и автоматизации на сайте: serverfault.com.
7. Использование API автоматизации установщика Windows
- Вот обсуждение этого параметра в сообществе: Пример сообщества API Windows Installer Automation
- Доступ к API можно получить через автоматизацию сценариев и вызовы API C++ (мой пост на serverfault.com)
Следующий источник адаптирован экспертом MSI Кристофером Пейнтером с использованием 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. Использование установщика Windows, серьезное обновление
- Крупное обновление установщика Windows может произойти как часть установки другого файла MSI.
- Основное обновление выполняется путем определения связанных продуктов в " Таблице обновлений " MSI. Эти связанные установки затем обрабатываются, как указано в таблице. Обычно это означает, что они удалены, но вместо этого можно также прервать основную настройку (обычно используется для обнаружения более высоких версий вашего собственного приложения, присутствующего на коробке).
9. Использование расширенной системы развертывания / системы удаленного администрирования
- SCCM, CA Unicenter, IBM Tivoli, Altiris Client Management Suite и ряд других
- Эти инструменты обеспечивают расширенное управление клиентским ПК, включая установку и удаление файлов MSI.
- Эти инструменты, кажется, используют комбинацию msiexec.exe, автоматизации, WMI и т. Д. И даже свой собственный способ вызывать установки и удаления.
- По моему опыту, эти инструменты обладают большой "индивидуальностью", и вам нужно адаптироваться к различным способам их выполнения.
10. Использование WMI - инструментарий управления Windows
- Добавляем только для полноты. Не рекомендуется использовать этот подход, так как он очень медленный
- Проверка целостности программного обеспечения запускается при каждом вызове Win32_Product для каждой установки.
- Проверка согласованности невероятно медленная и может также привести к восстановлению программного обеспечения. Смотрите эту статью: Сценарий удаления Powershell - реальная головная боль
- Хуже того, некоторые люди сообщают, что их журналы событий заполняются записями MsiInstaller EventID 1035 - по-видимому, вызванными запросами WMI к классу Win32_Product (лично я никогда не видел этого).
- Инструмент для создания кода WMICodeCreator.exe можно использовать для экспериментов.
- Установка может быть вызвана через
Win32_Product.Install
- Деинсталляция может быть вызвана через
Win32_Product.Uninstall
- Установка может быть вызвана через
- Пример MSDN: метод удаления класса Win32_Product
11. Использование стороннего инструмента, такого как ccleaner или аналогичный
- Некоторые приложения Windows имеют собственный интерфейс для удаления не только пакетов MSI, но и устаревших установщиков.
- Я не хочу давать здесь какие-либо конкретные рекомендации по инструменту (особенно коммерческие), но хорошо известный CCleaner имеет такой интерфейс удаления (и у него бесплатная версия). Я также должен добавить, что этот инструмент недавно подвергся атаке вредоносных программ.
- Я предполагаю, что мы все должны помнить, что даже безопасное программное обеспечение может быть заражено вредоносным ПО в местах их загрузки (атака FTP).
- Я использую virustotal.com для проверки своих загрузок, а также Sysinternals Process Explorer для проверки запущенных процессов после установки - вместе с обычным программным обеспечением безопасности (в зависимости от того, что доступно).
- При таком подходе обычно обнаруживается удивительное количество "серой области" программного обеспечения (панели инструментов, смайлики, рекламное ПО и т. Д.), А также несколько ложных срабатываний (они также могут вызвать проблемы, поскольку программное обеспечение безопасности блокирует их доступ или изолирует их, делая много пуха). И, конечно же, настоящее вредоносное ПО.
- Некоторые советы по использованию Process Explorer можно найти здесь - серию твитов - этот инструмент Process Explorer подключается к https://www.virustotal.com/ для интерактивной проверки всех запущенных процессов - все, что вам нужно, - это несколько шагов по настройке.
- Я должен отметить, что Process Explorer дает проверку подписи файла, но без эвристики - насколько я понимаю (без проверки на подозрительные операции, просто проверка с более чем 60 комплектами безопасности для помеченных файлов). Вам нужен обычный инструмент безопасности для интерактивной эвристической защиты в Интернете.
- Я думаю, что некоторые программы для обеспечения безопасности граничат с тем, что вызывают больше ложноположительных проблем, чем вредоносные программы. Знаменитые последние слова в эпоху выкупа...
- Это достаточно большое отступление - я просто не хочу, чтобы люди загружали вредоносное ПО. Сделайте проверку на https://www.virustotal.com/ хотя бы.
- Такое удаление должно работать нормально. Я думаю, что эти инструменты слишком много мешают, когда вы пробуете их "функции очистки". Используйте с осторожностью. Если вы используете только функцию удаления, вы должны быть в порядке.
12. С помощью инструмента очистки, такого как MSIZap или похожие
- Для полноты
MsiZap.exeследует упомянуть, хотя он устарел, не поддерживается и устарел. Это не должно использоваться на любых более новых версиях Windows - Это инструмент командной строки (
MsiZap.exe) также был доступен графический интерфейс (MSICUU2.exe). Оба инструмента устарели. - Предполагалось использовать эти инструменты для очистки неудачных деинсталляций:
- Как правило, для редкого случая, когда кэшированный MSI со случайным именем ошибочно отсутствует и по этой причине происходит сбой при удалении при запросе исходного MSI
- Это редкая проблема, но я видел это сам. Всего несколько потенциальных причин:
- Помехи в восстановлении системы? Восстановление предыдущего образа системы случайно удаляет кэшированный файл MSI?
- Плохо разработанные приложения для очистки удаляют то, что не должны?
- Проблемы дизайна MSI или сбой в msiexec.exe в конце установки во время окончательной регистрации продукта? Я считаю, что это маловероятно, поскольку кэширование выполняется до начала установки, но я сталкивался с такими проблемами при разработке файлов MSI.
- Внезапное отключение электроэнергии? Также несколько маловероятно из-за встроенной защиты в установщике Windows, но внезапная потеря питания всегда может привести к неожиданным результатам.
- Антивирус или другое программное обеспечение безопасности удаляет или блокирует доступ к кэшированному файлу MSI?
- Если вы разрабатываете MSI и продолжаете тестовую переустановку, вы можете вызвать эту проблему, повторно используя один и тот же код пакета между сборками (MSI рассматривает разные файлы MSI как один и тот же файл по определению, если код пакета одинаков - в результате возникают всевозможные странные проблемы), Это очень особый случай, обычно наблюдаемый только на компьютерах, используемых для разработки или контроля качества.
- Пользователь или администратор вручную удаляет файлы MSI из папки кэша, чтобы сохранить или создать доступное дисковое пространство или просто поработать с настройками Windows. Папка "супер скрыта" и труднодоступна, но все еще можно найти ее и удалить из нее файлы.
- Конечно, есть и другие возможные причины, но список уже стал слишком длинным и громоздким.
- Это редкая проблема, но я видел это сам. Всего несколько потенциальных причин:
- Также для других типов неудачных деинсталляций
- Его также можно использовать для установки любой установки MSI, хотя это явно не рекомендуется.
- Дополнительная информация: Почему MSI требует исходный MSI-файл для удаления?
- Как правило, для редкого случая, когда кэшированный MSI со случайным именем ошибочно отсутствует и по этой причине происходит сбой при удалении при запросе исходного MSI
Этот новый инструмент поддержки(этот инструмент теперь также устарел) можно попробовать в последних версиях Windows, если у вас есть несуществующие пакеты MSI, требующие удаления.- Некоторые предлагают использовать инструмент, на который ссылается saschabeaumont: удаление без MSI-файла. Если вы попробуете, и это сработает, пожалуйста, сообщите нам об этом.
- Если у вас есть доступ к исходному MSI, который фактически использовался для установки продукта, вы можете использовать его для запуска удаления. Это должен быть точный MSI, который был использован, а не просто похожий.
13. Использование восстановления системы ("установка отменена" - в крайнем случае ИМХО)
- Строго говоря, это не способ " удалить ", а " отменить " последнюю установку или несколько установок в этом отношении.
- Восстановление через точку восстановления возвращает систему к предыдущему состоянию установки (вы можете найти демонстрационные ролики об этом на YouTube или аналогичном сайте).
- Обратите внимание, что эта функция может быть отключена полностью или частично - ее можно отключить навсегда для всей машины или по отдельности для каждой установки.
- Я видел новые, неразрешимые проблемы установки, возникающие в результате восстановления системы, но обычно все работает нормально. Очевидно, не используйте эту функцию для развлечения. Это последнее средство, и его лучше всего использовать для отката новых драйверов или установок, которые только что были установлены и которые вызывают немедленные проблемы ( синий экран, перезагрузка, нестабильность и т. Д.).
- Чем дольше вы вернетесь назад, тем больше переделок вы создадите для себя, и тем выше будет риск. Большинство систем имеют только несколько точек восстановления, и большинство из них растягивается на месяц или два, я полагаю.
- Помните, что восстановление системы может повлиять на обновления Windows, которые затем должны быть применены повторно, а также на многие другие системные параметры. Помимо чистой досады, это также может привести к появлению проблем с безопасностью, и вам может потребоваться выполнить определенную проверку безопасности на целевых окнах с помощью http://en.wikipedia.org/wiki/Microsoft_Baseline_Security_Analyzer или аналогичных инструментов.
- Поскольку я упоминал о восстановлении системы, полагаю, мне следует упомянуть функцию "Последняя удачная конфигурация". Эта функция не имеет ничего общего с удалением или восстановлением системы, но это последняя конфигурация загрузки, которая сработала или привела к работающей системе. Он может быть использован для возобновления работы вашей системы, если во время загрузки она отключится или остановится. Это часто происходит после установки драйвера.
14. Функции установщика Windows (C++)
Для полноты я думаю, что мы должны упомянуть суть всего этого - простой способ: функции Win32 Windows Installer API. Это, вероятно, функции, используемые большинством, если не всеми другими подходами, перечисленными выше "под капотом". Они в основном используются приложениями или решениями, имеющими непосредственное отношение к MSI как технологии.
На serverfault.com есть ответ, который может представлять интерес для краткого изложения различных программных подходов к удалению (функции установки COM Automation, .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 в командной строке запускается блокнот /default .txt
обработчик файла для отображения файла).
Таким образом, ввод имени файла с расширением.msi действительно запускает msiexec с MSI-файлом в качестве аргумента и выполняет действие по умолчанию, install. По этой причине удаление требует, чтобы вы вызвали msiexec с параметром удаления, чтобы удалить его.
Я бы попробовал следующий синтаксис - он работает для меня.
msiexec /x filename.msi /q
wmic product get name
Просто застревает cmd... все еще мигает _ через пару минут
в HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall
, если вы можете найти папку с именем программного обеспечения, которое вы пытаетесь установить (а не имя с именем ProductCode), UninstallString указывает на собственный деинсталлятор приложения C:\Program Files\Zune\ZuneSetup.exe /x
ОП сказал «без использования msiexec». В настоящее время winget (стандартно для современных 10 и 11) может устанавливаться и удаляться из командной строки. Проверьте это.
Я предполагаю, что когда вы вводите int file.msi в командную строку, Windows автоматически вызывает для вас msiexec file.msi. Я предполагаю это, потому что, когда вы вводите файл picture.png, он вызывает просмотрщик изображений по умолчанию.