我正在尝试使用升级代码检索已安装的msi的产品版本。 我尝试使用MsiGetProductInfo api,但它没有返回结果。
我在HKEY_LOCAL_MACHINE \ SOFTWARE \ MSFT \ Windows \ CurrentVersion \ Uninstall下找不到该应用程序。
但相反,我确实在Installer \ Products下的注册表中找到了我的应用程序。
我知道类似的问题有bben在这里问: Get Product Code of installed Msi
但有人有更好的方法。
谢谢
答案 0 :(得分:0)
我刚才有同样的问题。如果您有升级代码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");
}
麻烦的是,可能存在多个相关产品,因此您的处理方式取决于您。
编辑:如果您默认或错误地安装每个用户,那么如果您以不同于安装MSI的用户身份运行查询,则可能无法获得带有RelatedProducts的产品代码...即使安装是或多或少是公开的。