WiX 工具集捆绑包,总内容大小 > 2GB

2023-12-04

是否可以制作一个 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(使用前将#替换为@)

WiX 工具集捆绑包,总内容大小 > 2GB 的相关文章

  • 与 WiX 3.0 一起安装 WiX 3.5

    是否可以同时安装 WiX 3 0 和 3 5 如果我在安装 3 0 后安装 3 5 它会删除 3 0 文件 如果我尝试在 3 5 之后安装 3 0 它会告诉我已经安装了较新的版本 我正在从 VS 2008 迁移到 VS 2010 因此我的应
  • Android 13 (SDK 33):Bundle.getSerialized(String) 已弃用,有什么替代方案?

    从 API 级别 33 开始getSerializable String Bundle 类的方法已弃用 文档建议使用getSerializable String Class 反而 但该功能仅适用于 API 级别 33 我当前的代码 val
  • 从对话框调用 CustomAction 时出现 WiX 安装错误 2762

    我是初学者 开始学习WiX 我想在安装过程中捕获 验证和注册用户详细信息 我创建了一个对话框来捕获用户注册并在用户单击 下一步 后调用自定义操作 但在这里我收到安装程序错误 2762 虽然错误描述说 必须在 InstallInitializ
  • WIX MSI 软件包卸载

    我正在使用 WIX 作为安装程序包 当我通过双击原始 msi 包卸载该包时 一切都很好 当我从控制面板卸载时 它会给我一个最小的用户界面卸载 我已在 MSI 中写入一个自定义操作 询问用户是否要卸载某些数据库等 最小 UI 卸载时不会发生这
  • 在wix中添加文件夹到安装程序而不是文件?

    我的安装程序必须将文件复制到 installdir 我的应用程序有大约 2000 个文件 我不可能编写脚本将每个文件添加到安装程序中 wix中是否有任何选项可以让我一次添加所有文件或包含文件的整个文件夹 我是 wix 新手 我在任何教程中都
  • 自定义 WiX Burn 引导程序用户界面?

    我主要使用 WiX 3 6 创建一个安装包 这样我就可以利用Burn http en wikipedia org wiki WiX Burn引导功能 到目前为止 我已经将多个 MSI 软件包捆绑在一起 这些软件包将与内置引导程序应用程序一起
  • 查看 osgi 包的依赖关系?

    我正在 Eclipse 中寻找一个可以以图形方式查看所有 osgi 包的依赖项的工具 请问有人有什么想法吗 STAN 捆绑包和项目依赖关系视图是免费的附加组件 这是一个依赖关系图示例 http stan4j com images stori
  • 使用选项卡式活动中的捆绑包将值从活动传递到片段

    我是一个java文盲 但仍在尝试开发一个供我个人使用的应用程序 我从 android studio 的 Tabbed Activity 开始 除了 MainActivity 中的一个片段和一个包之外 大部分没有改变 这是我的代码 主要活动
  • WiX - 安装 Windows 服务以在 x64 模式下运行

    我正在使用 WiX 3 5 及其 ServiceInstall 标签安装 Windows 服务
  • Android:自动从项目包中删除未使用的图像

    我正在开发一个相当大的android项目 并且在drawable文件夹中有很多图像 其中许多图像未在项目中使用 因为它们已被替换 并且占用了宝贵的空间 有什么方法可以自动找到这些图像并删除它们 而不是搜索项目中的每个图像 我使用过的一些工具
  • 用于配置编辑的 wix 自定义对话框

    你好 我正在尝试使用 wix v3 为我的应用程序设置 msi 我对这项任务有疑问 我需要一个用户输入 该输入将存储在我的应用程序的配置文件中 例如 我需要一个用于 sql 连接字符串的对话框 并且用户输入将写入应用程序配置文件中 我尝试用
  • PHP filesize() 适用于除一个文件之外的所有文件,给出 stat failed 错误

    我正在编写一个 PHP 页面 该页面通过抓取现有 HTML 页面来生成播客提要 一切正常 但我的 mp3 文件之一出现 filesize stat failed 错误 据我所知 该文件没有损坏 并且播放得很好 我还将文件重新上传到服务器 它
  • Installshield 在次要升级时不更新相关 DLL

    我目前正在使用 InstallShield 部署 NET Winforms 应用程序 我是 InstallShield 的新手 不太喜欢学习过程 Winforms 应用程序具有三个相关的 DLL 这些 DLL 在次要升级期间不会更新 例如
  • 从 Handler.obtainMessage() 获取什么参数

    我正在使用线程来执行一些 BT 任务 我正在尝试向 UI 线程发送消息 以便我可以基于我的 BT 线程执行 UI 工作 为此 我使用处理程序 但我不知道如何检索发送到处理程序的数据 要发送数据 我使用 handler obtainMessa
  • Textmate“注释”命令对于 css 代码无法正常工作

    当我在 TextMate 中切换 CSS 源代码的注释时遇到一些问题 Using the shortcut CMD I activate the Comment Line Selection command from the source
  • 在 Grails 中创建一个新的资源包?

    我想创建另一个资源包来组织我的 Grails 应用程序 Grails 提供了一个 messages 资源包 我需要创建一个 myApp 资源包 如何创建新的资源包并使用 g message GSP 标记读取其属性 你必须创建一个beangr
  • 执行卸载之前停止 Windows 服务

    我有一个安装程序 它安装了一些组件 包括 Windows 服务 安装后它将启动使用 CustomAction 安装到系统上的服务 当我卸载应用程序时出现问题 安装程序要求先关闭应用程序 然后再继续 我创建了一个将停止服务的自定义操作 并通过
  • 如何将对象数组传递给活动?

    我读过有关从活动传递数组和向活动传递数组的帖子 但我对如何针对我的具体情况执行此操作感到困惑 我有一个名为 DaysWeather 的对象数组 DaysWeather 数组 其中对象具有多个字符串属性以及位图属性 我在某处读到 你必须使其可
  • 维克斯。相同版本不同产品代码如何进行重大升级?

    基本上我需要改变这种行为 安装具有相同版本和升级代码的产品 但 不同的产品代码 是允许的 并被 MSI 视为两种产品 我需要将其作为重大升级进行威胁 因此 在 v 1 0 1 旧版本 不同的 ProductCode 上安装 v 1 0 1
  • 为什么最新的 Python 3.8.x 版本不提供 Windows 安装程序?

    我需要在Windows计算机上安装Python 3 8并希望使用最新的小版本3 8 12 https www python org downloads release python 3812 官方发布网页提供了源代码的 tarball 文件

随机推荐