【问题标题】:Wix toolset build optimization for repeatable builds可重复构建的 Wix 工具集构建优化
【发布时间】:2021-03-20 11:32:55
【问题描述】:

我对 wix 工具了解不多。

我有一个项目需要打包在许多 msi 包中。文件数约700个。每个msi包的区别主要在于架构(x86、x64)和一小部分可变资源(不超过5-10个文件)。

完整构建需要一个多小时。大部分时间是由 light.exe 占用的。

是否有可能以某种方式缓存工作结果以加快此过程,因为每个 msi 的不同之处在于最小的文件集?也许我应该以一种特殊的方式组织文件以使这成为可能?

【问题讨论】:

    标签: wix windows-installer


    【解决方案1】:

    计算机和磁盘:显而易见的第一点:您是否在一台好计算机上使用快速磁盘?或者您是从网络中提取文件还是写入慢速磁盘? 700个文件并不多。它们很大吗?您正在构建多少个设置?一个好的 SSD 或 NVME 磁盘应该会有所帮助 - 还有一些好的 CPU。

    构建速度:我有这个关于构建优化的现有答案:Speed up Build-Process of WiX-Installer - 我建议您构建共享设置并通过 WiX Burn setup.exe 捆绑安装( Burn 构建 setup.exe 可执行文件,可以安装嵌入式 MSI 文件或其他安装类型文件)。您很少构建的单独 MSI 可以工作。 Thoughts on setup cohesion and coupling.

    WiX 帮助文件How To: Optimize build speed

    Cab Cache & wixlibs:请阅读:


    链接:

    【讨论】:

      【解决方案2】:

      您可以为共享文件定义单个压缩文件,为唯一的文件集定义单独的压缩文件。使用使用定义的条件编译在 MSI 文件中仅包含选择的文件柜。

      <Media Id="1" Cabinet="Shared.cab" CompressionLevel="high" VolumeLabel="Shared binaries." EmbedCab="no" />
      <Media Id="2" Cabinet="Set1.cab" CompressionLevel="high" VolumeLabel="Unique files 1" EmbedCab="no" />
      <Media Id="3" Cabinet="Set2.cab" CompressionLevel="high" VolumeLabel="Unique files 2" EmbedCab="no" />
      

      &lt;File&gt; 元素上设置DiskId="" 属性以将单个文件与目标文件柜相关联。

      当输入文件在不同版本之间没有变化时,Light 应该能够使用缓存中的现有文件柜。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2010-09-06
        • 2017-06-15
        • 2017-03-18
        • 2013-12-29
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多