从单独的组件构建一个MSI

时间:2012-10-23 21:23:44

标签: wix windows-installer

我们的产品有三个部分:

  • 应用程序文件(exe和dll文件)
  • 帮助文件
  • SSRS报告

所有这三件事都与使用WIX构建的相同安装程序一起安装。在我们公司,每个组件都由不同的团队和不同的截止日期开发。我们想将MSI分成三个部分,这样当一个部件变得稳定时,它的安装部件也是稳定的,并且在更新其他部件时不会从头开始重建。

我看过合并模块和CAB文件,但我认为这是错误的方向。 WIX工具集中有什么可以帮助我实现目标吗?

(我已阅读问题Building MSI Installer and Separaete Installation Files,但相信这个问题有点不同。)

感谢您的帮助。

2 个答案:

答案 0 :(得分:3)

WiX库(*.wixlib)似乎是在您的案例中分发组件的最佳方法。

我会像这样组织这个过程:

  • 每个团队都有一个单独的WiX安装项目(Setup Library Project),它编译成*.wixlib文件而不是MSI(或MSM)包
  • 每个项目都是在开发组件时进化的,并且输出会与其他团队共享
  • 集成构建将所有wixlib库和链接(light.exe)一起收集到一个MSI包中

因此,您将始终拥有包含最新组件构建的最终安装包,这就是持续集成的全部内容。

据我了解,您不会单独分发组件,对于最终用户,它仍然是一个可靠的安装包。因此,合并模块可能是一个开销。我怀疑(但不确定)light.exe在链接库时执行一些额外的验证,与合并工具相比。

答案 1 :(得分:2)

好吧,合并模块是一个解决方案。您可以有两个包含帮助文件和SSRS报告的合并模块,并将它们添加到仅包含应用程序文件的主包中。如果两个合并模块中没有任何变化,这可能会增加构建时间,但是对于主程序包更改,您仍然需要很长的构建时间。

另一种选择是为每个组件创建单独的包,并使用Burn将它们捆绑到一个组件中。我建议使用合并模块,它更清洁,更易于管理。