重复使用WIX组件以加快蜡烛/光线

时间:2009-07-30 14:35:31

标签: wix wix3

我对WIX相当新,所以请原谅我,如果我在这里完全错过了这条船,但我想知道是否可以在wxs文件中重复使用组件(mwm,cab等)而不需要重新启动 - 每次都链接他们。我正在处理的安装程序有几个可执行文件,dll和配置文件,这些文件在每次安装之间都会发生变化。这些文件相当于大约5兆的安装程序。我想要重用的部分是大约350兆的图像/地图/数据库文件,这些文件不会经常变化,我不希望每次构建安装程序时都必须编译/链接。

我尝试为地图创建一个mwm文件,但是当我在wxs中引用它们时,它们会通过光链接到主.msi文件中。我已经尝试指定一个非嵌入式CAB文件来保存地图:

<Media Id="1" Cabinet="media1.cab" EmbedCab="yes" />
<Media Id="2" Cabinet="NewRiver.cab" EmbedCab="no" CompressionLevel="none" />
...
<Merge Id="NewRiverDigMap" SourceFile="..\Output\NewRiverDigitalMaps.msm" Language="1033" DiskId="2" />

但每次光线运行时,独立的CAB文件都会重新生成 - 这需要一段时间。

我考虑过创建一个ZIP文件以便与msi一起提供并让安装程序启动zip解压缩,但这对我来说似乎是反wix。我希望在不再需要文件时将其删除。

我还缺少其他类似操作吗?我读过有关碎片的内容,但这似乎并不是我想要的。

谢谢, 大卫

1 个答案:

答案 0 :(得分:12)

你的直觉绝对引导你朝着正确的方向前进。您正在寻找的功能称为“cab-cache”。您可以通过将以下内容添加到light.exe命令行来使用它:

-reusecab -cc path\to\directory\for\cabinets

注意:编译(candle.exe)和链接(light.exe的前半部分)应该很快发生。通常很慢的是绑定(light.exe的第二个),因为它实际上触及了所有文件并构建了机柜。内阁构建是最慢的部分,因此希望cab-cache能够为您充分加速。

P.S。:如果编译需要很长时间,您可以使用lit.exe创建“.wixlib”。我在这里有更多关于.wixlibs的内容:http://robmensching.com/blog/posts/2008/10/10/What-are-.wixlibs-and-why-would-you-use-them