【问题标题】:wix custom action missing dll MSVCR100D.dllwix 自定义操作缺少 dll MSVCR100D.dll
【发布时间】:2012-03-06 12:31:47
【问题描述】:

我正在使用 wix 编写安装程序。我还编写了自定义操作。但是在安装 MSI 时安装失败,因为目标系统没有MSVCR100D.dll

我正在使用 /MTd 选项进行链接,这是我阅读的文档建议的静态链接。

谁能告诉我如何静态链接msvcr100d.dll,这样即使目标系统上不存在msvcr100d.dll,我的MSI安装也会成功?

【问题讨论】:

    标签: visual-c++ wix windows-installer


    【解决方案1】:

    MSVCR100D.dll 中的“D”表示您的本机自定义操作 DLL 是调试 DLL。除非目标机器安装了各种 SDK,否则“D”依赖项不会出现在目标机器上。在发行版中重建你的 DLL,依赖项将更改为 MSVCR100.dll

    此外,由于您使用的是 WiX / Votive,因此有一个 Visual Studio WiX C++ CA 项目类型可以为您创建项目。我的经验是,当您使用该项目类型时,所有默认编译器和链接器设置都可以开箱即用。

    【讨论】:

      【解决方案2】:

      我注意到了同样的问题。就我而言,我正在尝试调试在安装程序上下文中运行的自定义操作,因此我确实想安装调试版本。

      根据 Microsoft 政策,Visual Studio 调试 CRT DLL 不可再分发。显然,使用 Visual Studio 2010 编译的 64 位 DLL 似乎使用 /MTd(静态链接,调试配置)产生依赖于 MSVCR100D.dll 的输出。在 64 位版本配置中,正如预期的那样,使用 /MT 编译不会依赖于 MSVCR100.dll。

      一种解决方案是在目标测试机器上安装 Visual Studio。微软提供更多建议here.

      【讨论】:

        猜你喜欢
        • 2020-07-05
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2014-07-18
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2020-03-06
        相关资源
        最近更新 更多