使用安装产品的升级代码获取产品版本

我正在尝试使用升级代码检索已安装的msi的产品版本。 我尝试使用MsiGetProductInfo api,但它不会返回结果。

我在HKEY_LOCAL_MACHINE \ SOFTWARE \ MSFT \ Windows \ CurrentVersion \ Uninstall下找不到应用程序。

但相反,我发现我的应用程序在安装程序\产品下的registry中的其他地方。

我知道类似的问题bben在这里问: 得到安装Msi的产品代码

但是有没有人有更好的方式来做到这一点。

谢谢

我刚刚有几乎相同的问题。 如果你有升级代码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安装…即使安装是或多或少上市。