Как найти GUID продукта установленной установки MSI?
Мне нужно найти GUID продукта на установить файл MSI для выполнения обслуживания, такого как исправление, удаление, а также для целей аудита.
1 ответов
Короткая Версия
информация ниже значительно выросла с течением времени и, возможно, стала немного слишком сложной. как быстро получить коды продуктов? (четыре подхода):
1. Используйте Powershell "One-liner"
прокрутите вниз для скриншота и шаг за шагом. Отказ от ответственности также ниже - незначительные или умеренные риски, в зависимости от того, кто вы спрашиваете. Мне подходит. Любой самостоятельного ремонта срабатывает с помощью этой опции как правило, можно отменить. The проверка целостности пакета triggered добавляет некоторый журнал событий "шум", хотя. Примечание! IdentifyingNumber
is the ProductCode
(особенность WMI).
get-wmiobject Win32_Product | Format-Table IdentifyingNumber, Name, LocalPackage -AutoSize
быстрый запуск Powershell: hold клавиша Windows, нажмите R, введите "powershell" и нажмите Enter
2. Использовать VBScript
описано ниже в разделе "альтернативные инструменты" (раздел 3). Этот параметр может быть безопасное чем Powershell по причинам, подробно описанным ниже. В сущности это (много)быстрее и не способен запускать MSI self-repair, так как он не проходит через WMI (он обращается к MSI COM API напрямую - на скорость). однако он более задействован, чем параметр Powershell (несколько строк кода).
3. Регистратура Поиск
некоторые клянутся, глядя вещи в реестре. Не мой рекомендуемый подход - мне нравится проходить через правильные API (или другими словами: вызовы функций ОС). Всегда есть странные исключения, учитываемые только внутренними компонентами API-реализации:
HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall
HKLM\SOFTWARE\WOW6432Node\Microsoft\Windows\CurrentVersion\Uninstall
HKCU\Software\Microsoft\Windows\CurrentVersion\Uninstall
4. Исходный файл MSI / Wix Source
вы можете найти Product Code
in the Property table
любого файла MSI (и любого другого свойства). Однако GUID может быть (редко) переопределен преобразованием, применяемым во время установки, и, следовательно, не соответствует GUID, под которым зарегистрирован продукт (подход 1 и 2 выше сообщит реальный код продукта - который зарегистрирован в Windows - в таких редких сценариях).
вам нужен инструмент для просмотра файлов MSI. См. в нижней части следующего ответа список бесплатных инструменты, которые вы можете скачать (или см. быстрый вариант ниже): как я могу сравнить содержимое двух (или более) файлов MSI?
обновление: для удобства и потребность в скорости :-), скачать SuperOrca без промедления и суеты от это прямая - скачать hotlink - инструмент достаточно хорош, чтобы выполнить работу - установить, открыть MSI и перейти прямо к таблица свойств и найти ProductCode
строки (пожалуйста, всегда проверяйте вирус прямой-скачать hotlink-очевидно - вы можете использовать virustotal.com для этого-онлайн-сканирование с использованием десятков антивирусных и вредоносных программ для сканирования того, что вы загружаете).
и ниже вы найдете оригинальный ответ, который "органично" в много деталей.
может ознакомиться с "удаление пакетов MSI" раздел ниже, если это задача, которую вам нужно выполнять.
Получить Коды Продукта
обновление: Если Вам также нужно Обновить код, проверьте этот ответ: как найти код обновления для установленного файла MSI? (извлекает связанные коды продукта, коды подъема & названия продукта внутри вывод таблицы - аналогичен приведенному ниже).
- не удается использовать PowerShell? В Разделе "Альтернатива Инструменты " раздел ниже.
- хотите удалить? см. раздел "удаление пакетов MSI" ниже.
пожар Powershell (удерживая клавишу Windows, нажмите R, отпустите клавишу Windows, введите "powershell" и нажмите OK) и выполните приведенную ниже команду, чтобы получить список установленных пакетов MSI код продукции вместе с путь к пакету локального кэша и товар имя (разверните окно PowerShell, чтобы избежать усеченных имен).
перед запуском этой командной строки, пожалуйста, прочитайте отказ от ответственности ниже (ничего опасного, просто некоторые потенциальные неприятности). Раздел 3 в разделе "альтернативные инструменты" показывает альтернативный не-WMI способ получить ту же информацию с помощью VBScript. Если вы пытаетесь удалить пакет, ниже приведен раздел с некоторым образцом msiexec.команды исполняемые строки:
get-wmiobject Win32_Product | Format-Table IdentifyingNumber, Name, LocalPackage -AutoSize
на выход должны будьте похожи на это:
внимание! по какой-то странной причине "ProductCode" называется "IdentifyingNumber" в WMI. Другими словами - на картинке над номером is код продукта.
Если вам нужно запустите этот запрос удаленно против множества удаленных компьютеров в разделе " Получить Коды Продуктов С Пульта Дистанционного Управления Компьютер!--41--> раздел" ниже.
отказ от ответственности (важно, пожалуйста, прочитайте перед выполнением команды!): Из-за странного дизайна Microsoft любой вызов WMI
Win32_Product
(как и команда PowerShell ниже) вызовет проверка пакет недвижимости. Кроме того, что медленно, это может в редких случаях запустите саморемонт MSI. Это может быть небольшой пакет или что-то огромная, как Visual Studio. В большинстве случаев этого не происходит - но есть риск. не запускайте эту команду прямо перед важным встреча - это не опасно (это для чтения), но это может приводят к длительному ремонту в очень редких случаях (я думаю, вы можете отменить self-repair также-если активно не предотвращен рассматриваемым пакетом, но он перезапустится, если вы вызовете Win32_Product снова и это будет продолжаться, пока вы не позволите закончить саморемонт - иногда это может продолжаться, даже если вы это позволите конец:как определить, что вызывает повторный саморемонт установщика Windows?).и просто для записи: некоторые люди сообщают, что их журналы событий заполняются записями Msiinstaller EventID 1035 (см. ответ начальника кода) - по-видимому, вызвано запросами WMI к классу Win32_Product (лично я никогда этого не видел). Это не непосредственно связано с командой Powershell, предложенной выше, это в контексте общего использование класса Wim Win32_Product.
вы также можете получить результат в виде списка (вместо таблицы):
get-wmiobject -class Win32_Product
в этом случае вывод аналогичен этому:
Получить Коды Продуктов С Удаленного Компьютера
теоретически вы должны просто указать имя удаленного компьютера как часть самой команды. Вот та же команда, что и выше, настроенная для запуска на машине "RemoteMachine" ( добавить):
get-wmiobject Win32_Product -ComputerName RemoteMachine | Format-Table IdentifyingNumber, Name, LocalPackage -AutoSize
это может сработать, если вы работаете с правами администратора домена в соответствующем домене. В среде рабочей группы (небольшой офис / домашняя сеть), вероятно, необходимо добавить учетные данные пользователя непосредственно к вызовам WMI, чтобы заставить его работать.
кроме того, на удаленные подключения в WMI влияет (по крайней мере)Брандмауэр Windows, настройки DCOM и Контроль Учетных Записей Пользователей (UAC) (плюс любые дополнительные факторы, отличные от Microsoft-например реальные брандмауэры, сторонние программные брандмауэры, программное обеспечение безопасности различных видов, etc...). Будет ли она работать или нет зависит от вашей точной настройки.
обновление: An обширный раздел о удаленном запуске WMI можно найти в этом ответе:как найти код обновления для установленного файла MSI?. Появляется правило брандмауэра и подавление приглашения UAC через настройку реестра может заставить вещи работать в сетевой среде рабочей группы. Не рекомендуется изменять безопасность, но это сработало для меня.
Альтернативные Инструменты
PowerShell требуется .NET framework будет установлен (в настоящее время в версии 3.5.1 кажется? Октября 2017 года). Само приложение PowerShell также может отсутствовать С компьютера, даже если установлен .NET. Наконец, я считаю, что PowerShell может быть отключено или заблокировано различными системными политиками и привилегиями.
если это так, вы можете попробовать несколько других способов получить коды продукта. Моя предпочтительная альтернатива VBScript - оно быстр и гибок (но может также быть заблокирован на определенных машинах, и сценарии всегда немного более задействованы, чем использование инструментов).
-
С встроенный инструмент Windows WMI:
wbemtest.exe
.- запуск
wbemtest.exe
(удерживайте клавишу Windows, нажмите R, отпустите клавишу Windows, введите " wbemtest.exe" и нажмите OK). - клик подключиться а то OK (по умолчанию пространство имен root\cimv2) и нажмите "подключиться" снова.
- нажмите "запрос " и введите это команда WQL (вкус SQL):
SELECT IdentifyingNumber,Name,Version FROM Win32_Product
и нажмите "Использовать" (или эквивалент - инструмент будет локализован). - пример вывода скриншота (усеченный). Не самое приятное форматирование, но вы можете получить необходимые данные. IdentifyingNumber-это продукт MSI код:
- запуск
-
затем вы можете попробовать пользовательский, более полнофункциональный инструмент WMI, такой как
WMIExplorer.exe
- это не входит в Windows. Однако, это очень хороший инструмент,. Рекомендуемый.
- проверить его на: https://github.com/vinaypamnani/wmie2/releases
- запустите инструмент, нажмите Connect, дважды щелкните КОРЕНЬ\ПРОСТРАНСТВЕ ИМЕН CIMV2
- от "1: Basic, интерактивное удаление без регистрации (быстро и легко):
msiexec.exe /x {00000000-0000-0000-0000-00000000000C}
Быстрое Объяснение Параметров:
/X = run uninstall sequence {00000000-0000-0000-0000-00000000000C} = product code for product to uninstall
вы также можете включить (подробный) ведение журнала и работать в автоматическом режиме, если хотите, что приведет нас к опции 2:
2: бесшумное удаление с подробным журналированием (лучше для пакетных файлов):
msiexec.exe /x {00000000-0000-0000-0000-00000000000C} /QN /L*V "C:\My.log" REBOOT=ReallySuppress
Быстрое Объяснение Параметров:
/X = run uninstall sequence {00000000-0000-0000-0000-00000000000C} = product code for product to uninstall /QN = run completely silently /L*V "C:\My.log"= verbose logging at specified path REBOOT=ReallySuppress = avoid unexpected, sudden reboot
есть полный справочник для MSI uninstall здесь (различные способы удаления пакетов MSI): удаление MSI-файла из командной строки без использования msiexec. Существует множество различных способов удаления.
если вы не написание пакетного файла, пожалуйста, посмотрите на раздел 3 выше, связанный ответ для нескольких распространенных и стандартных вариантов командной строки удаления.
и быстрая ссылка на команду msiexec.exe (параметры командной строки) (обзор командной строки для msiexec.exe из MSDN). И версия Technet как хорошо.
получение других свойств / информации MSI (f.обновление ex Код)
обновление: пожалуйста, найдите новый ответ о том, как найти код обновления для установленных пакетов вместо того, чтобы вручную искать код в файлы MSI. Для установленные пакеты это намного надежнее. Если пакет не установленный, вам все равно нужно посмотреть в файле MSI (или исходном файле используется для компиляции MSI), чтобы найти код обновления. Оставив в старой части ниже:
если вы хотите получить UpgradeCode или другие свойства MSI, вы можете открыть кэшированную установку MSI для продукта из места, указанного в "LocalPackage " на изображении выше (что-то вроде:
C:\WINDOWS\Installerc080ae.msi
- это имя шестнадцатеричного файла, уникальное для каждой системы). Затем вы смотрите в "таблица свойств " для UpgradeCode (возможно, что UpgradeCode будет переопределен в transform-to убедитесь, что вы получили правильное значение, необходимое для получения кода программно из системы - я предоставлю сценарий для этого в ближайшее время. Однако,UpgradeCode, найденный в кэшированном MSI, как правило, правильный).чтобы открыть кэшированные файлы MSI, используйте косатка или другой упаковочный инструмент. Вот обсуждение различных инструментов (любой из них будет делать):какой продукт установки использовать? InstallShield, WiX, Мудрый, Расширенный Установки и т. д.. Если у вас нет такого инструмента установлен, ваш лучший выбор может быть попробовать Супер Косатка (он прост в использовании, но не широко протестирован мной).
обновление: вот новый ответ с информацией о различных свободных продуктов, которые вы можете использовать для просмотра файлов MSI: как я могу сравнить содержимое двух (или более) файлов MSI?
если у вас установлена Visual Studio, попробуйте поискать
Orca-x86_en-us.msi
- подProgram Files (x86)
- и установите его (это собственный, официальный MSI viewer и редактор Microsoft). Затем найдите Orca в меню Пуск. Go time in no time : -). Технически Orca устанавливается как часть Windows SDK (не Visual Studio), но Windows SDK поставляется в комплекте с установкой Visual Studio. если у вас не установлена Visual Studio, возможно вы знаете, кто делает? Просто попросите их найти этот MSI и отправить вам (это крошечный файл с половиной Мб) - должно занять несколько секунд. обновление: вам нужно несколько файлов CAB, а также MSI - они находятся в той же папке, где находится MSI. Если нет, вы всегда можете скачать Windows SDK (это бесплатно, но это большой - и все, что вы установите замедлит ваш компьютер). Я не уверен, какая часть SDK устанавливает ORCA MSI. Если вы это сделаете, просто отредактируйте и добавьте детали здесь.
- вот более Полная статья по вопросу удаления MSI: удаление MSI-файла из командной строки без использования msiexec
- вот аналогичная статья с дополнительные опции для получения информации MSI с помощью реестра или кэшированного msi:найти GUID из файла MSI?
Похожие темы (для справки и легкого доступа - я должен очистить этот список):
- как найти UpgradeCode и ProductCode установленного приложения в Windows 7
- как я могу найти код обновления для установленного приложения на C#?
- Wix: как удалить ранее установленное приложение, которое установлено с помощью другого установщика
- WiX-выполнение крупного обновления на установке нескольких экземпляров
- как узнать, какие продукты установлены-новый продукт уже установлен MSI windows (на VBScript)
- как удалить с msiexec, используя идентификатор продукта guid без .msi файл присутствует
- найти GUID пакета MSI