如何以编程方式确定Visual C++运行时8.0是否已安装?

问题描述:

我有一个InstallShield安装,它使用依赖于Visual C++ Runtime 8.0 SP1的自定义操作。在过去,我能够使用Microsoft提供的合并模块和Visual Studio来安装运行时。基于Visual C++ Runtime 8.0 sp1并行安装在Vista上的工作方式,直到安装的提交顺序才能使用运行时。如何以编程方式确定Visual C++运行时8.0是否已安装?

这意味着我必须将我的自定义操作的执行移动到提交顺序(不合意,因为如果出现错误,安装过程不能在此顺序中回滚)或在安装之前安装Visual C++运行时使用InstallShield先决条件。

我宁愿安装Visual C++ Runtime作为先决条件,但InstallShield不提供此项的先决条件,所以我必须自己写。我能弄清楚如何配置先决条件来安装运行时,但我不知道如何确定它是否已经安装。是否有我可以检查以确定此问题的注册表项或文件版本?

+0

对于任何试图检测Visual C++ 2010运行时的人,可以在这里找到很好的说明: http://blogs.msdn.com/b/astebner/archive/2010/05/05/10008146.aspx – ephere 2010-08-24 12:30:55

我找到描述检测Visual C++ Runtime 8.0Visual C++ Runtime 8.1的博客文章。基本上,您可以使用MSI自动化界面查找每个运行时的产品代码。

你也可以去找HKEY_LOCAL_MACHINE \ SOFTWARE \微软\的Windows \ CurrentVersion \卸载\ [产品代码]其中[产品代码]是你想要检测运行的产品代码(例如{7299052b- 02a4-4627-81f2-1818da5d550d}是8.0 sp1运行时的x86版本的产品代码)。

这些方法仅用于检测是否安装了运行时可再发行组件包;即使这些方法没有指出(例如,如果它被安装为合并模块而不是使用可再发行组件),运行时也可能会被安装,但是在这种情况下安装可再发行组件包不应该损害任何东西。