考虑以下情况 -
假设您正在编写需要使用特定Windows应用程序的应用程序。具体来说,它是一个安装各种API工具的应用程序,旨在将应用程序集成到其他一些Microsoft软件或服务中。
现在,让我们做一些其他的假设,如下:
使用C#,是否有标准化的方法来检查是否已安装应用程序。具体来说,是否有一些WMI调用或注册表查询在执行时返回某种形式的唯一标识符意图以表示唯一表示已安装应用程序的值,而不管应用程序安装名称或版本?
关于检查已安装软件的SO或网络上的其他地方的每个问题建议通过查找名称来检查软件是否已安装。这样做但是,我们的软件是一种全球工具,可用于具有各种文化背景的机器。我们发现,即使在我们提供安装文件之后,这种天真的检查也无法正常工作,因为Microsoft Installer中的本地化设置正在为不同的设备重新设置应用程序上的应用程序,非 - 英语语言环境。
是否有正式的#34;解决这个问题?如果您正在检查的特定工具的开发人员是否已正确设置其安装程序以正确配置这些ID值,那么是否存在关于如何检查此类软件的文档化方法?
顺便说一下,我们实际上需要检查几个Microsoft工具。我不想列出一份清单,因为我希望有一种适度的直接方法来解决这种对多种不同工具的需求。
答案 0 :(得分:2)
以下两个相关答案可以帮助您:
Finding installed applications
基本上您需要了解两个GUID值:ProductCode和UpgradeCode。
ProductCode标识所使用的确切安装包,并且对于每个版本应该完全不同(假设安装程序已正确编程)。
UpgradeCode识别整个产品本身,不应在版本之间进行更改(同样,假设安装程序已正确编程)。这是你需要寻找的。 p>
您可能想要检查的一件事是开发人员是否对产品的不同语言版本使用了不同的UpgradeCodes。