【问题标题】:VCRedist - how can I tell if it's been run?VCRedist - 我如何判断它是否已运行?
【发布时间】:2009-02-24 19:08:05
【问题描述】:

我有一个旧的 VC++ 应用程序,我们已移植到 VS2005。我们现有的用户需要获取 VC++2005 DLL,所以我的应用程序将 vcredist_x86.exe 放在他们的机器上并运行它。我检查了 HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\SideBySide\Installations\ 下的注册表项,它是 x86_Microsoft.VC80.MFC blah blah 8.0.50727.762 blah blah ... 但是...看来这在 Vista 上不存在。什么是正确的检查条目以确保 vcredist 运行完成,这样我就不必再次运行它?

谢谢!

【问题讨论】:

    标签: c++


    【解决方案1】:

    我从未找到任何明确的信息,尽管您可以在用户 windirwinsxs 文件夹中查找正确的文件夹和文件。

    我已经让我们的应用程序安装程序在安装时安静地运行它,如果它已经存在就不会造成任何问题。

    【讨论】:

      【解决方案2】:

      所以我的应用正在放置 vcredist_x86.exe 在他们的机器上和 运行它。

      这是一种非常不规范的做法。
      通常并行包会自动添加到“检测到的依赖项”下的安装程序对象的依赖项中

      【讨论】:

      • 我不确定你的意思。看,我有一个在 VC++ 6.0 中构建的旧应用程序,我们正在运行 vcredist 以准备我们现有的安装以接收对 VC2005 构建的二进制文件的升级,这将通过我们自己的升级降级到用户的机器上机制。
      • 啊,在这种情况下,运行安装程序确实无关紧要。在升级过程中仍然运行 exe 听起来不太正确。
      【解决方案3】:

      保持简单:只需将 redist 设置作为批处理文件的一部分运行,该批处理文件在完成后会写入一些注册表值(这样您就可以检查而不是运行两次)或将一些文件写入已知位置。

      是的,这样如果您在过去某个时候自己运行 vcredist,那么您的第一次安装将是多余的,但我想这不会有什么坏处,也没什么大不了的。

      除此之外(我意识到它并不漂亮)我怀疑您必须检查 2005 redist 软件包中的每个文件是否都在那里(没有被任何机会删除或损坏),这是无论如何,redist 设置应该做什么。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2019-01-25
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2021-06-23
        • 1970-01-01
        相关资源
        最近更新 更多