某些上下文:我想在我安装的产品中包含Java Runtime的私有副本。 .msi文件应该构建在集成管道上(Jenkins CI Server,将通过maven插件使用WiX)。
一种选择是在构建安装程序时将JRE(存档)解压缩到临时目录中并让heat dir
收获它。但是,这需要解压缩,扫描和重新打包文件。
所以我更愿意,如果我可以提供已经完整的jre.cab文件并让WiX使用它。无需指定文件,或通过热量收集驾驶室内容。
有没有办法做到这一点(除了手动打开驾驶室,我不想做,因为安装人员不会识别它。)
如果我能提供ZIP或TGZ文件而不是CAB,那会更好,但这不是必须的。每次JRE更改时都要创建一个驾驶室。
答案 0 :(得分:1)
这里有很多可能的答案。我会给你两个。
1)我个人会做的事情:(跳过热量并封装为合并模块)
创建一个提取cab并构建WiX的构建 编写包含所有提取文件的IsWix Merge Module项目。 在需要时签入并构建。现在,您的构建存档区域中有一个.MSM。
2)我怀疑你会更喜欢(使用Heat并封装为Binary Wix Library)
创建一个构建提取cab,运行热量并构建WiX 在需要时签入并构建。您的构建存档区域中的架子上有.wixlib / .wixobj。
我有工具(IsWiX),让#1变得轻而易举。是的,每次接受新的CAB时都需要手动更新MSM WXS定义,但我认为这样做很简单,也很重要。它更可靠。 MSM会稍微减慢您的MSI创建速度,因为编译器/链接器必须解压缩,为您重新打包内容。
选项2假设热火永远不会让你失望。这吓到我了。创建前面的所有管道并且在理论上减少维护随着时间的推移有点困难...假设热量永远不会让你失望。 (我不会这么认为。)。由于二进制wixlib是编译器/链接器的最佳格式,因此.MSI的创建速度会快一些。
选项1具有与InstallShield等其他工具兼容的额外好处。
通过将MSM和MSI创建分成2个版本,您可以选择何时构建每个版本并将它们链接在一起。这对于大型项目非常有价值。但是,在许多情况下,优化会增加不必要的复杂性。如果我正在编写一小部分业务应用程序(比如应用程序和JRE之间的总共100MB),我可能不会打扰。我可能只需要在几分钟内就可以在具有SSD存储空间的快速虚拟机上运行整体构建。