重用WIX组件以加速蜡烛/灯光

重用WIX组件以加速蜡烛/灯光,wix,wix3,Wix,Wix3,我是WIX的新手,所以如果我完全错过了这里的机会,请原谅我,但我想知道是否可以从wxs文件中重用组件(mwm、cab等),而不必每次都使用light重新链接它们。我正在使用的安装程序有几个可执行文件、DLL和配置文件,它们在每次安装之间都会发生变化。这些文件价值约5兆安装程序。我想重用的部分是大约350兆的图像/地图/数据库文件,这些文件不会经常更改,我不希望每次构建安装程序时都必须编译/链接这些文件 我已经尝试为地图创建一个mwm文件,但是当我在wxs中引用它们时,它们会通过light链接到m

我是WIX的新手,所以如果我完全错过了这里的机会,请原谅我,但我想知道是否可以从wxs文件中重用组件(mwm、cab等),而不必每次都使用light重新链接它们。我正在使用的安装程序有几个可执行文件、DLL和配置文件,它们在每次安装之间都会发生变化。这些文件价值约5兆安装程序。我想重用的部分是大约350兆的图像/地图/数据库文件,这些文件不会经常更改,我不希望每次构建安装程序时都必须编译/链接这些文件

我已经尝试为地图创建一个mwm文件,但是当我在wxs中引用它们时,它们会通过light链接到main.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" />

...
但是每次light运行时,独立的CAB文件都会重新生成,这需要一段时间

我想创建一个ZIP文件与msi一起交付,让安装程序启动ZIP解压缩,但这对我来说似乎是反wix的。我想在不再需要这些文件时将其删除

我还缺少其他类似wix的操作吗?我读过关于碎片的书,但这似乎不是我想要的

谢谢,
大卫

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

-reusecab -cc path\to\directory\for\cabinets
注意:编译(candle.exe)和链接(light.exe的前半部分)应该很快发生。通常较慢的是绑定(light.exe的第二个版本),因为它实际上涉及所有文件并构建文件柜。内阁建设是最慢的部分,所以希望cab缓存速度足够快


注意:如果编译花费很多时间,您可以使用lit.exe创建“.wixlib”。我这里有更多关于wixlibs的信息:

Eureka!这正是我想要的。如果没有嵌入文件柜,则似乎不起作用-不知何故,light删除了.cab文件,然后继续查找它。理想情况下,我希望它能与非嵌入式机柜一起工作,但它肯定比以前快了一点。嗯,这种行为听起来像个bug。你介意打开一个bug()并提供详细信息吗。我们应该能够在WiX v3.5中进行修复。感谢您提供的精彩提示()!在我的例子中,它将构建msi包的时间从大约50秒减少到只有10秒(~200个文件/~100MB)。