Получить версию продукта, используя код обновления для установленного продукта - PullRequest
2 голосов
/ 08 сентября 2011

Я пытаюсь получить версию продукта установленного MSI, используя код обновления.Я пытался использовать API MsiGetProductInfo, но он не возвращает мне результат.

Я не смог найти приложение в разделе HKEY_LOCAL_MACHINE \ SOFTWARE \ MSFT \ Windows \ CurrentVersion \ Uninstall.

Но вместо этогодействительно нашел мое приложение где-то еще в реестре в папке Installer \ Products.

Я знаю, что bben задал похожий вопрос: Получить код продукта установленного Msi

, но неу кого-то есть лучший способ сделать это.

Спасибо

1 Ответ

0 голосов
/ 14 октября 2011

У меня была почти такая же проблема только сейчас. Если у вас есть GUID кода обновления, вы можете сделать это:

WindowsInstaller.Installer installer =
   Activator.CreateInstance(/* left as an exercise for the reader */);
foreach (string productCode in installer.get_RelatedProducts("your-upgradecode-guid")) {
   string productVersion = installer.get_ProductInfo(productCode, "VersionString");
}

Проблема в том, что может быть несколько сопутствующих товаров, так что, как вы справляетесь, зависит только от вас.

РЕДАКТИРОВАТЬ: Если вы устанавливаете для пользователя по умолчанию или по ошибке, вы можете не получить код продукта с RelatedProducts, если вы выполняете запрос от имени другого пользователя, для которого был установлен MSI ... даже если установка была более или менее публично.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...