4

We have a product that has three parts:

  • Application files (exe and dll files)
  • Help files
  • SSRS reports

All three things get installed together with the same installer built using WIX. In our company, each component is developed by separate teams and with different deadlines. We would like to break our MSI into three parts so that when one part becomes stable its installer part is also stable and is not rebuilt from scratch when the other parts are updated.

I've looked at merge modules and CAB files but I think that's the wrong direction. Is there anything in the WIX toolset that can help me achieve my aims?

(I have read the question Building MSI Installer and Separaete Installation Files but believe this question is a bit different.)

Thanks for your help.

Community
  • 1
  • 1
Brett
  • 71
  • 5

2 Answers2

3

WiX library (*.wixlib) seems to be the best approach to distribute the components in your case.

I would organize this process like this:

  • each team has a separate WiX installation project (Setup Library Project), which compiles into *.wixlib file instead of the MSI (or MSM) package
  • each project is evolved as the component is developed, and the output is shared to other teams
  • an integration build gathers all wixlib libraries and links (light.exe) them all together into a single MSI package

Hence, you'll always have a final installation package with the latest builds of components, which is what continuous integration is all about.

As far as I understand, you won't distribute the components separately, and for the end user it is still a solid installation package. Hence, merge modules could be an overhead. I suspect (but not sure) that light.exe performs some extra validation when linking the libraries, comparing to merging tool.

Yan Sklyarenko
  • 31,557
  • 24
  • 104
  • 139
2

Well, merge modules are a solution. You could have two merge modules containing the help files ans SSRS reports, and add them in the main package that will contain only the application files. This can increase build time if nothing is changing in the two merge modules but you will still have a long build time for the main package changes.

Another option is to create separate packages for each of the components and bundle them into a single one using Burn. I would recommend using the merge modules, its more cleaner and easy to manage.

Bogdan Mitrache
  • 10,536
  • 19
  • 34