gpt4 book ai didi

WiX 在 msi 中安装 C++ 可再发行组件

转载 作者:行者123 更新时间:2023-12-01 12:46:32 27 4
gpt4 key购买 nike

继我上一个问题 Why does my WiX Custom action throw a System.IO.FileNotFoundException? ,我现在正尝试将 C++ 可分发版安装为我的 msi 的一部分。

我已按照文档中的示例进行操作; http://wix.sourceforge.net/manual-wix3/install_vcredist.htm

<DirectoryRef Id="TARGETDIR">
<Merge Id="VC_Redist" SourceFile="$(env.ProgramFiles)\Common Files\Merge Modules\Microsoft_VC100_CRT_x86.msm" DiskId="1" Language="0"/>
</DirectoryRef>

<Feature Id="Complete" Level="1" Title="$(var.NVRProduct) $(var.NVRVersion)" Description="Everything" Display="expand">
<Feature Id="VC_Redist" Title="Visual C++ Runtime" AllowAdvertise="no" Display="hidden" Level="1">
<MergeRef Id="VC_Redist"/>
</Feature>
</Feature>

它不起作用。未安装 C++ 分发版,随后我的 msi 抛出错误,因为缺少 C++ 分发版,并自行卸载。

这个好像和这个问题一样,没有真正回答。 C++ Redistributable package with WIX

任何想法表示赞赏。

最佳答案

我将回答我自己的问题,因为在进一步调查后我发现了很多问题。

首先,VC++ 合并模块的安装确实有效!

我不认为这是因为我仍然遇到错误,而且我在添加删除程序中看不到 VC++ 运行时的条目,就像您手动安装它一样。

但是,通过将安装更改为仅安装可分发文件和应用程序直到我收到错误,我可以看到实际上正在安装 VC++ dll。我现在看到的错误是因为该程序也需要 ATL 可再发行组件。 (正如我通过使用 Dependency Walker 发现的那样)。该错误导致 msi 失败,并且 VC++ dll 与我的应用程序 dll 的其余部分一起被卸载!

一旦我按照帮助文件中的示例使用机制提供了 VC++ 和 ATL 可分发文件,一切都很好。

我还使用了静态链接的 SQLite dll,因为即使安装了可分发文件,自定义操作对 SQLite 的初始调用也失败了。我认为这一定是由于安装顺序问题。但是,使用静态链接版本在此处的开发人员中引起了一定程度的讨论,大约有 50-50 人赞成和强烈反对使用它。

但是,安装现在可以正常工作了。

关于WiX 在 msi 中安装 C++ 可再发行组件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15295825/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com