WiX Toolset捆绑包,总内容大小> 2GB

时间:2019-03-22 08:00:53

标签: wix windows-installer bundle filesize

是否可以使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个文件。减少您文件中的文件数   安装包或将安装包的文件拆分为   使用Media元素的多个CAB文件。

我在寻找解决方案,一个建议是使用<MediaElement>,但只能在<product>标签中使用,我想我不能在这种情况下使用它,因为我正在烹饪的食物包中有嵌入式自定义引导程序,据我了解,wix产品模板与引导程序应用程序无关。我发现的另一种观点是,您不能创建单个软件包大小超过2GB的WiX捆绑包,但这不完全是我的情况,因为我捆绑的每个软件包都不超过700MB。

我已经尝试将<MsiPackage>分为<PackageGroup>的单独<Fragment>,在{{1}中的<Bundle>中引用1}},但没有帮助,light.exe会抛出相同的错误。我还发现了一个建议,尝试将软件包放入<chain>中单独的<PackageGroupRef>中,但是我没有尝试过,因为我不知道如何做,WiX捆绑文档只是提到有一些容器,但从未真正建议过如何使用它们。

我正在使用WiX 3.11

UPD:我只想添加一些说明。 我的目标是制作一个将是一个.exe文件的文件包,并将所有相关的.cab文件和其他内容嵌入到最终文件包中,因此交付包含.exe引导程序和多个外部.cab文件的文件包并不是真正的首选选项,即使它可能快x倍,除非这是我的唯一解决方案。

UPD 2: 看来您仍然可以组装2 GB +大小的捆绑包,但它不会启动。可能是因为输出的可执行文件是x86,而Windows无法启动超过2GB大小的x86可执行文件。我没有设法制作一个x64捆绑包,也许可以用,但我从未找到如何做的方法。猜猜唯一的选择是让用户下载缺少的内容并使捆绑包仅包含必要的部分。谢谢大家的帮助。

1 个答案:

答案 0 :(得分:0)

压缩包不能大于2GB。 Burn支持每个容器最多2GB,并且只能将一个容器附加到捆绑包.exe本身。