【问题标题】:Keep pre-packaged .cab file for creating installer with WiX保留预打包的 .cab 文件以使用 WiX 创建安装程序
【发布时间】:2015-10-06 09:35:10
【问题描述】:

一些上下文:我想在我安装的产品中包含一个 Java 运行时的私有副本。 .msi 文件应构建在集成管道上(Jenkins CI 服务器,将通过 maven 插件使用 WiX)。

一种选择是在构建安装程序时将 JRE(存档)解压到一个临时目录中,并让 heat dir 收集它。但是,这需要对文件进行解包、扫描和重新打包。

所以如果我可以提供一个已经完整的 jre.cab 文件并让 WiX 使用它,我会更愿意。要么不必指定文件,要么通过热量收集 cab 内容。

有没有办法做到这一点(除了手动打开驾驶室的包装,我不想这样做,因为它不会被安装程序识别)。

如果我可以提供 ZIP 或 TGZ 文件而不是 CAB,那就更好了,但这不是必须的。每次 JRE 更改时创建一个 cab 就可以了。

【问题讨论】:

    标签: wix windows-installer cab heat


    【解决方案1】:

    这里有很多很好的可能答案。我给你两个。

    1)我个人会做什么:(跳过加热并封装为合并模块)

    创建一个提取驾驶室并构建 WiX 的构建 创作一个包含所有提取文件的 IsWix 合并模块项目。 需要时签入和构建。现在,您的构建档案区的架子上有一个 .MSM。

    2) 我怀疑你会更喜欢什么(使用 Heat 并封装为二进制 Wix 库)

    创建一个提取驾驶室、运行热量并构建 WiX 的构建 需要时签入和构建。您的构建档案区的架子上有一个 .wixlib/.wixobj。

    我有工具 (IsWiX) 可以让 #1 变得轻而易举。是的,每次您接受新的 CAB 时,您都需要手动更新 MSM WXS 定义,但我认为这很简单而且很重要。它更可靠。 MSM 会稍微减慢您的 MSI 创建速度,因为编译器/链接器必须为您解包、重新打包内容。

    选项 2 假设 Heat 永远不会让您失望。这让我害怕。预先创建所有管道有点困难,理论上随着时间的推移维护更少......假设热火永远不会让你失望。 (我不这么认为。).MSI 的创建会快一点,因为二进制 wixlib 是编译器/链接器的最佳格式。

    选项 1 具有与其他工具(例如 InstallShield)兼容的额外好处。

    通过将 MSM 和 MSI 创建分成 2 个构建,您可以选择何时构建每个构建并将它们链接在一起。这对于大型项目非常有价值。然而,在许多情况下,优化会增加不必要的复杂性。如果我正在编写一个小型业务应用程序(比如应用程序和 JRE 之间总共 100MB),我可能不会打扰。我可能会在几分钟内在具有 SSD 存储的快速 VM 上以单体构建的形式运行整个项目。

    【讨论】:

    • 谢谢它的时间更少,它更多的是我想避免的重复提取和重新包装。 (所以我想避免创建合并模块的手动步骤)。但我想我也可以将两者结合起来?使用热量创建一个marge模块来填充细节......? (我不知道 WiX :)。无论如何,当它变成 eliglbe 时会接受你的答案
    • 合并模块的手动步骤是在 .CAB 内容更改时更新其清单。我不认为这是应该自动化的一些艰苦的步骤,我认为它是分析和开发。 IsWiX 减少了开发过程中的摩擦。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-02-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多