Как я могу указать GUID установленной программы в Windows? Кроме того, проще ли найти GUID, если у меня есть файл MSI?
Я просматриваю файл MSI с помощью Orca, но не знаю, где искать GUID.
Спасибо!
Как я могу указать GUID установленной программы в Windows? Кроме того, проще ли найти GUID, если у меня есть файл MSI?
Я просматриваю файл MSI с помощью Orca, но не знаю, где искать GUID.
Спасибо!
Три основных GUID базы данных установщика Windows: Код пакета, ProductCode и UpgradeCode. Первый хранится в сводном потоке информации (меню "Вид" в Orca), а остальные хранятся в таблице "Свойства". (Другие формы баз данных, такие как модули слияния и патчи, имеют похожие GUID в аналогичных местах, такие как GUID модуля слияния или GUID кода патча, каждый из которых хранится одинаково с кодом пакета.)
Чтобы найти их на машине, вы можете посмотреть в разделе "Удалить", где часто используется ProductCode. Или еще лучше, если вы хотите перечислить, что в настоящее время установлено на машине, вы можете вызвать MsiEnumProducts.
Существует несколько способов найти GUID продукта для установленных пакетов. Пожалуйста, выберите вариант номер 3.
Наиболее распространенными являются:
- 32-BIT SECTION:
HKLM\Software\Microsoft\Windows\CurrentVersion\Uninstall
HKCU\Software\Microsoft\Windows\CurrentVersion\Uninstall (per user section)
- 64-BIT SECTION:
HKLM\Software\Wow6432Node\Microsoft\Windows\CurrentVersion\Uninstall
- MERGED SECTION (supposedly all of the above merged together, I have not verified):
HKCR\Installer\Products
Если то, что вы пытаетесь сделать, это удалить соответствующий продукт, см. этот комплексный деинсталлированный ответ MSI: Удаление MSI файла из командной строки без использования msiexec
Если вам удобнее использовать VBScript вместо Powershell, попробуйте этот ответ от Фила Уилсона: как узнать, какие продукты установлены - новый продукт уже установлены окна MSI
Обычно (хотя и не универсально), если часть программного обеспечения использует установку на основе MSI, идентификатор GUID можно найти в записи "Удалить". Обычно это будет либо имя ключа, либо будет отображаться в UninstallString и/или UninstallPath. Иногда жизнь проста, и есть значение ProductGuid.
Удалить записи можно здесь:
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall
В 64-битной версии Windows есть два таких ключа: один для 64-битного программного обеспечения и второй для 32-разрядного программного обеспечения:
HKEY_LOCAL_MACHINE\SOFTWARE\WOW6432Node\Microsoft\Windows\CurrentVersion\Uninstall
Мое решение состоит в том, что я написал небольшое консольное приложение, которое возвращает ProductCode любого файла MSI (имя передается как программный аргумент). Я делаю это, читая guid из самого файла .msi. В основном я открываю этот файл msi как строку и ищу текст, начинающийся с "ProductCode", получая его индекс и беря 38-значные символы до этой позиции индекса. Вот скриншот: