【问题标题】:KB2465367 and 3rd party librariesKB2465367 和第 3 方库
【发布时间】:2011-05-05 02:41:31
【问题描述】:

我正在使用在 KB2465367 发布之前获得的第三方库。我的开发计算机已更新为 KB2465367,因此我生成的所有二进制文件现在似乎都依赖于 CRT 的 8.0.50727.5592(CRT 的 2465367 版本)。

现在,当我想部署此应用程序时,我使用的是 8.0 CRT 合并模块(也由 2465367 更新)。这会安装 8.0.50727.5592 版本的 MSVC 库(如 msvcrt80.dll)。

但是,当我在从未安装过 VC 运行时的机器上运行我的应用程序时,它会抱怨“此应用程序无法启动,因为应用程序配置不正确。重新安装应用程序可能会解决此问题。”我已将此追溯到事件日志中的系统条目:“为 C:\Program Files\MyCompany\MyApp.exe 生成激活上下文失败。参考错误消息:操作成功完成。”在源“SideBySide”下。

当然,这次更新基本上意味着我已经死在水里了。

我该如何从这里开始?我的客户是否需要在安装我的应用程序后安装 8.0.50608.0 版本的 CRT,因为第 3 方库需要 8.0.50608.0 而我使用的 MSM 没有包含它?


在我的情况下,我使用的是How To: Install the Visual C++ Redistributable with your installer,它只描述了使用单个 MSM。建议还使用策略 MSM 来重定向依赖于旧版本运行时的任何 DLL。 另见http://lynk.at/jlqsKx

【问题讨论】:

    标签: visual-c++


    【解决方案1】:

    这与微软推出 KB971090 时发生的情况相同。
    一个简单的解决方案是删除 KB2465367。

    您可以在here. 上参考有关 KB971090 和 KB2465367 的更多信息

    【讨论】:

      【解决方案2】:

      有一个uninitialized data bug in the patch 会导致DLL 加载失败。

      【讨论】:

      • 这是一个 SideBySide 问题,因为我的第三方 DLL 依赖于不可用的 msvc 版本。什么都没有运行;因此,它不可能访问任何存在潜在错误的代码。
      【解决方案3】:

      您的安装程序必须使用两个合并模块:

      1. 运行时库,以及
      2. 将所有旧版本的运行时重定向到新版本的策略文件。

      可再发行包vcredist_xxx.exe 安装最新版本的库和策略文件。


      您不能假设 VC 库在用户计算机上可用,因此您始终必须安装它们。否则您的应用程序将无法运行。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2018-04-10
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多