带有 WIX 的 C++ 可再发行包

Posted

技术标签:

【中文标题】带有 WIX 的 C++ 可再发行包【英文标题】:C++ Redistributable package with WIX 【发布时间】:2012-06-29 12:56:50 【问题描述】:

所以,我写了一段代码,它使用了一些 Microsoft Sql 服务器 dll,这些 dll 依赖于一些 C++ 库。最初代码在客户端机器上无法运行,但当我安装 C++ Redistributable Package 时,它​​运行良好。

我的问题是如何将这些依赖项与我的代码一起安装。我正在使用 WIX 安装软件。

谢谢, 阿里

【问题讨论】:

【参考方案1】:

这样做:

首先获取 C++ 可再发行组件(MSM 文件)的合并模块。通常它们位于 Merge Modules 文件夹 (c:\ProgramFiles\Common Files\Merge Modules) 中(对于 win x64 C:\Program Files (x86)\Common Files\Merge Modules)。它们的名称基于架构(32/64 位)和 VC++ 版本。

在目标目录的<DirectoryRef> 标记中,添加具有以下属性的<Merge> 节点:

<DirectoryRef>
    <Merge
        Id="MSVCRedist" DiskId="1" Language="0"
        SourceFile="Microsoft_VC90_CRT_x86.msm"/>
</DirectoryRef>

添加&lt;Feature&gt;

<Feature
    Id="VCRedist" AllowAdvertise="no" Display="hidden" Level="1"
    Title="Visual C++ 9.0 Runtime"/>

将引用&lt;MergeRef&gt; 添加到&lt;Feature&gt; 定义中先前添加的&lt;Merge&gt; 部分:

<MergeRef Id="MSVCRedist"/>

示例已提取from here。

【讨论】:

我试过了,没用。它仍然给出错误 VC80.CRT not installed。我可以使用我的安装程序添加完整的 Redistributable 软件包吗? 您可以使用WiX bootstrapper Burn 来运行可执行的redist。此外,我建议检查 redist 的安装位置以及安装后 SQL Server DLL 的位置。

以上是关于带有 WIX 的 C++ 可再发行包的主要内容,如果未能解决你的问题,请参考以下文章

如何在安装 WiX Bundle 时避免卸载以前安装的 ExePackage(可再发行文件)?

安装 - microsoft visual c++ 2003 可再发行包 - 出现错误

安装 msvcr90.dll 的简单方法! (没有 C++ 可再发行包)

如何使我的 Visual c++ 2013 应用程序不需要下载可再发行包?

Visual C++ 2012 可再发行版是不是与 2010 版本向后兼容?

部署一个 c++ 应用程序,啥可再发行组件