【问题标题】:Reusing WIX components to speed up candle/light重用 WIX 组件来加速烛光/光
【发布时间】:2009-07-30 14:35:30
【问题描述】:

我对 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" />

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

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

我还缺少其他类似 wix 的操作吗?我读过有关 Fragments 的文章,但这似乎不是我想要的。

谢谢, 大卫

【问题讨论】:

    标签: wix wix3


    【解决方案1】:

    你的直觉绝对会引导你走向正确的方向。您正在寻找的功能称为“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

    【讨论】:

    • 尤里卡!正是我想要的。如果没有嵌入机柜似乎不起作用 - 不知何故轻删除 .cab 文件然后去寻找它。理想情况下,我希望它与非嵌入式机柜一起使用,但它肯定比以前快一点。
    • 嗯,这种行为听起来像是一个错误。您介意打开一个包含详细信息的错误 (wix.sourceforge.net)。我们应该能够在 WiX v3.5 中修复。
    • 感谢您的精彩提示 (docs)!就我而言,它将构建 msi 包的时间从大约 50 秒减少到仅 10 秒(~200 个文件/~100MB)。
    猜你喜欢
    • 2013-10-19
    • 1970-01-01
    • 2023-04-01
    • 2010-10-18
    • 2023-03-07
    • 2021-09-14
    • 2017-04-18
    • 1970-01-01
    • 2019-04-12
    相关资源
    最近更新 更多