【问题标题】:Get Product Version using upgrade code for a product installed使用已安装产品的升级代码获取产品版本
【发布时间】:2011-11-13 06:35:31
【问题描述】:

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

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

但相反,我确实在 Installer\Products 下的注册表中的其他位置找到了我的应用程序。

我知道 bben 在这里问过类似的问题: Get Product Code of installed Msi

但是有人有更好的方法吗?

谢谢

【问题讨论】:

标签: c# windows winapi


【解决方案1】:

我刚才遇到了几乎相同的问题。如果你有升级代码 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 的用户不同的用户身份运行查询,则您可能无法使用相关产品获得产品代码...即使安装是或多或少公开。

【讨论】:

  • 嗨,格雷格,我确实解决了这个问题。我使用了 MsiEnumeratedproducts 解决了我的问题。
猜你喜欢
  • 1970-01-01
  • 2014-11-15
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-12-14
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多