【问题标题】:How can I programmatically determine if the Visual C++ Runtime 8.0 is installed?如何以编程方式确定是否安装了 Visual C++ Runtime 8.0?
【发布时间】:2009-02-19 17:11:38
【问题描述】:

我有一个 InstallShield 安装,它使用依赖于 Visual C++ Runtime 8.0 sp1 的自定义操作。过去,我可以使用 Microsoft 提供的合并模块和 Visual Studio 来安装运行时。根据 Visual C++ Runtime 8.0 sp1 并行安装在 Vista 上的工作方式,在安装的提交序列之前无法使用运行时。

这意味着我必须要么将我的自定义操作的执行移至提交序列(不受欢迎,因为如果出现问题,安装无法在此序列期间回滚),要么在我安装之前安装 Visual C++ 运行时使用InstallShield 先决条件。

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

【问题讨论】:

标签: visual-c++ installation runtime installshield prerequisites


【解决方案1】:

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

您还可以查找 HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\[ProductCode] 其中 [ProductCode] 是您尝试检测的运行时的产品代码(例如. {7299052b-02a4-4627-81f2-1818da5d550d} 是 x86 版本 8.0 sp1 运行时的产品代码。

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-02-14
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多