我正在使用WiX Burn 3.9创建一个引导程序(带有UI的自定义托管引导程序)。我正在构建一个小版本的引导程序(几兆字节),可以根据需要下载依赖项。我还在构建一个嵌入了所有依赖项的版本,以支持在安全网络上轻松安装。 / layout命令行选项可用于下拉依赖项,但我的组织更喜欢单个整体可执行文件,以便为用户保持简单。
在我被要求添加1GB虚拟设备文件和相关安装自述文件之前,一切都很顺利。引导程序所要做的就是将它们放在用户在引导程序UI中指定的文件夹中。我将* .ova和* .htm文件放入一个自解压缩的zip可执行文件中,并在命令行上将目标文件夹传递给它。 Web安装程序版本工作正常,但后来我尝试构建脱机安装程序,嵌入了所有内容。我开始从光中得到一个错误:
light.exe(0,0): error LGHT0306: An error (E_FAIL) was returned while finalizing a CAB file. This most commonly happens when creating a CAB file with more than 65535 files in it. Either reduce the number of files in your installation package or split your installation package's files into more than one CAB file using the Media element.
我发现的唯一有关此错误的相关内容是here。这似乎与文件大小有关,而与文件计数无关。我想知道问题是否与引导程序可执行文件的总体大小(大约2 GB)或非常大的自解压zip可执行文件(大约1 GB)的大小有关。当我使用WiX构建MSI时,将内容分解为单独的cab文件的语法非常清楚,但我不确定是否为基于Burn的boostrapper暴露了相同的概念,或者是否可以做多少嵌入那个大小的文件。
答案 0 :(得分:2)
对于嵌入式有效负载,Burn使用在构建过程中附加到.exe的.cab文件。这意味着嵌入式有效负载的大小有2GB的限制。你可以附加到.exe上的数量也可能有限制。
我还没有尝试过,但看起来您可以尝试使用明确的Container elements附加多个容器。
除非你绝对需要单个.exe,否则你也可以创建一个未压缩的包。 .msi,.cab和.exe文件将是外部文件,但如果您正在创建.iso图像以供下载(例如),则它可以正常工作。