我一直在尝试查询Window(XP和Vista)以查看我们的软件包的任何版本是否随UpgradeCode一起安装(在这种情况下,UpgradeCode是从版本到版本的唯一静态GUID)。我试图用WMI和WindowInstaller.Installer对象做这个但是没有成功。我必须从C#编写这个查询。感谢您提供的任何帮助或指导。
答案 0 :(得分:1)
您需要使用MSI.DLL中的MsiEnumRelatedProducts函数。此链接描述了如何使用它:
http://msdn.microsoft.com/en-us/library/aa370103(VS.85).aspx
它是一个非托管DLL,因此您需要DLLImport它。我在VB.net中使用它来检查代码。
关键是多个已安装的软件包可以拥有相同的升级代码。如果对此的第一次调用返回一个包代码,那么您可以再次跳过检查并采取相应的行动。