带有 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>
添加<Feature>
:
<Feature
Id="VCRedist" AllowAdvertise="no" Display="hidden" Level="1"
Title="Visual C++ 9.0 Runtime"/>
将引用<MergeRef>
添加到<Feature>
定义中先前添加的<Merge>
部分:
<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 应用程序不需要下载可再发行包?