Build one MSI from separate components

We have a work consisting of three parts:

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

All three things are installed with the same installer created using WIX. In our company, each component is developed by separate teams and with different deadlines. We would like to split our MSI into three parts, so that when one part becomes stable, its installation part is also stable and does not recover from scratch when updating other parts.

I looked at the merge modules and CAB files, but I think this is the wrong direction. Is there anything in the WIX toolkit that can help me achieve my goals?

(I read the question Building MSI Installer and Separaete Installation Files , but I think this question is slightly different.)

Thank you for your help.

+4
source share
2 answers

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

I would organize this process as follows:

  • each team has a separate WiX installation project (installation library project), which is compiled into a *.wixlib file instead of the MSI (or MSM) package
  • Each project develops as the component develops, and the output is divided into other teams.
  • integration assembly collects all wixlib libraries and links (light.exe) all together in one MSI package

Therefore, you will always have the final installation package with the latest component builds, which means continuous integration.

As I understand it, you will not distribute the components separately, and for the end user, it is still a reliable installation package. Therefore, merging modules can be overhead. I suspect (but not sure) that light.exe performs additional validation when linking libraries compared to the merge tool.

+3
source

Well, merging modules is the solution. You can have two merge modules containing help files and SSRS reports, and add them to the main package, which will contain only application files. This can increase build time if nothing changes in the two merge modules, but you will have a long time for basic package changes.

Another option is to create separate packages for each of the components and combine them into one using Burn . I would recommend using merge modules that are cleaner and easier to manage.

+2
source

Source: https://habr.com/ru/post/1441659/


All Articles