我正在使用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 的助推器公开了相同的概念,或者是否有可能做很多事情嵌入该大小的文件。