2009-06-22 133 views
1

我一直在试图查询Window(XP和Vista)以查看是否有任何版本的我们的软件包与UpgradeCode一起安装(在这种情况下,UpgradeCode是唯一的从版本到版本的静态GUID)。我试图用WMI和WindowInstaller.Installer对象来做到这一点,但没有成功。我必须从C#编写这个查询。感谢您提供的任何帮助或指导。查询Windows是否安装了UpgradeCode应用程序

回答

1

您需要使用MSI.DLL中的MsiEnumRelatedProducts函数。此链接介绍如何使用它:

http://msdn.microsoft.com/en-us/library/aa370103(VS.85).aspx

它是一个非托管的DLL,所以你需要的DllImport它。我在VB.net中使用它来检查代码。

关键是多个安装包可以有相同的升级代码。如果第一次调用这个函数返回一个包代码,那么你可以跳过检查并相应地采取行动。

相关问题