views:

257

answers:

1

We're in the process of packaging combinations of our products/modules. Some of them are stand-alone some are interdependent. All versions must be deployable side-by-side. As it is we're considering two choices:

  1. One MSI per package and version
  2. One MSI per product/module and version

The first alternative would mean that combinations of the same merge modules would be delivered in several packages. The second alternative represents the simpler path.

Can you give some advice on the subject? Will any of the alternatives cause grief in the longer run?

+2  A: 

If you install the same component twice, Windows Installer will just reference-count the first installation, so there's not much in the way of difference between the two. If you're already separating your components into merge modules, you're guaranteed that the components will share their GUIDs, and you will get this behaviour, and the sharing of components won't cause you any problems.

If you make lots of little MSIs, though, such that a "package" installation will require several MSIs, you will lose the Windows Installer transactional capability - a failed installation won't roll back the previous installation - and you will probably have to look at a "chainer" application. I generally try to make as few MSIs as possible.

Sunlight
Thanks. We are already using a "chainer" for various reasons, so I can live with those drawbacks. I'm mostly worried of the users having too many items on the uninstall page and how to deal with dependencies between separate MSIs. Any thoughts?
Cristian Libardo
Most users seem to get annoyed when they find half a dozen items on the install page when they only installed one package. If you're using merge modules (and therefore sharing components effectively), why bother with lots of MSIs?
Sunlight
Good question. The only good reason I can see is effort (that we have to put in now). But I'm starting to think it's going to cost more in the long run. Thanks for the input. I appreciate it and please add any other considerations you come up with.
Cristian Libardo