是否可以制作一个 WiX 安装包,其内包内 .msi 和 exe 的总大小超过 2GB?目前在我的 .wxs 模板中我有一个<chain>
里面的一个<bundle>
其中包含多个<MsiPackage>
是的。我没有自己创建 WiX 模板,我只是在改进/修复遗留项目中的错误,所以我对 WiX 工具集不是很熟练。无论如何,然后我使用 Candle.exe 从该 .wxs 模板中创建一个 .wixobj,并将该 .wixobj 提供给 light.exe。如果要链接的内容总大小超过 2GB,light.exe 似乎会失败并出现错误:
错误 LGHT0306:完成 CAB 时返回错误 (E_FAIL)
文件。当创建包含更多内容的 CAB 文件时,最常发生这种情况
其中有超过 65535 个文件。要么减少你的文件数量
安装包或将安装包的文件拆分为
多个 CAB 文件使用 Media 元素。
我寻找解决方案,一个建议是使用<MediaElement>
但那个只能在<product>
我想我不能在我的情况下使用该标签,因为我正在烹饪的捆绑包嵌入了自定义引导程序,并且据我了解,wix 产品模板与引导程序应用程序无关。我发现的另一种观点是,您不能创建单个包大小超过 2GB 的 WiX 捆绑包,但这并不完全是我的情况,因为我捆绑的每个包不超过 700MB。
我已经尝试过分开<MsiPackage>
s into <PackageGroup>
是单独的<Fragment>
中引用的<Bundle>
's <chain>
in <PackageGroupRef>
,但这没有帮助,light.exe 抛出同样的错误。我还发现了尝试将包放入单独的建议<Container>
s in <bundle>
,但我没能尝试它,因为我不明白如何去做,WiX 捆绑文档只是提到了一些容器,但从未真正给出过如何使用它们的建议。
我正在使用 WiX 3.11
UPD:我只是想补充一些说明。
我的目标是制作一个捆绑包,即单个 .exe 文件,并将所有相关的 .cab 和其他内容嵌入到最终捆绑包中,因此提供包含 .exe 引导程序和多个外部 .cab 文件的捆绑包并不是真正的首选选项,尽管它可能会快 x 倍,除非这是我的情况的唯一解决方案。
更新2:
看来你可以组装一个 2 GB 以上大小的捆绑包,但它无法启动。可能是因为输出可执行文件是 x86,而 Windows 无法启动超过 2GBs 大小的 x86 可执行文件。我没有设法制作 x64 捆绑包,也许这会起作用,但我从未找到如何做到这一点。我猜唯一的选择是让用户下载缺失的内容并使捆绑包仅包含必要的部分。感谢大家的帮助。
压缩包不能大于 2GB。 Burn 支持每个最大 2GB 的容器,并且只能将一个容器附加到捆绑包 .exe 本身。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)