[wix-users] MSI vs. Bootstrapper

Carter Young ecyoung at grandecom.net
Tue Jun 28 16:37:56 PDT 2016


First off, please note that I'm not yelling at you.  Since the list is
text based, I've caps locked areas that I'd rather bold, but can't.

You're over complicating the issue here.  Bundle the MSI into the
Bootstrapper as you have done, or only send the MSI to customers. A
bootstrapper as a whole when compared to a MSI as a whole are mutually
exclusive items, which is the intended behavior you're trying to
circumvent by over thinking.  Put another way:

Bundles can contain individual MSI's, as Chains, but MSI's cannot
contain bundles.  Installing a Bundle creates an ARP Entry in Programs
and Features for the whole Bundle, and the Bundle is Intended to contain
multiple Items, as Chains.  Installing the MSI will create a duplicate
ARP entry because although the GUID might match, an MSI does not and
cannot contain a chain reference, and only installs as a "link in the
chain".

The easy choice would be to only offer the Bundle, but, if you're going
to insist on this approach you need to differentiate the Bundle from the
MSI like so (Provide a README etc, on your distribution method):

MSI Whizbang:
--------------------
Use this package if you already have .NET Version XXX installed, or our
Companion Product Foobar. <--This assumes two things: 1) Foobar
installed .NET at install time, and 2) MSI Whizbang can be used WITHOUT
PRODUCT FOOBAR**because Product Foobar was PACKAGED AND INSTALLED
SEPARATELY.  This breaks the chain above into smaller pieces.

Bundle Whizbang:
------------------------
Use this package if you need to install .NET Version XXX, or if you need
the added functionality of our Companion Product Foobar.  <--This
assumes 2 things 1) That the Bundle chain CONTAINS PRODUCT FOOBAR, the
.NET Framework redistributable version XXX, and 2) MSI Whizbang SHOULD
NOT BE USED WITHOUT**Product Foobar, unless you use the Selected
Component Tree GUI.

In Both of these cases the decision is left up to the end user, not
you.  What you should test for now instead is a Condition Test (for End
User Error, as some user's will install both, or attempt to install
without a prerequisite) in MSI Whizbang on whether or not Version XXX of
.NET is installed, or if Product Foobar is required.  If not, the MSI
should abort and lead the User to use the Bundle package instead.  THE
OTHER CONDITION TEST SHOULD BE THAT IF THE USER INSTALLED THE BUNDLE,
THEN THE MSI SHOULD ABORT, AND CONVERSELY THE BOOTSTRAPPER SHOULD TEST
FOR THE INDIVIDUAL MSI's in the chain. That's a lot easier logic to
write, than the approach you're trying to tackle.

Carter

On 06/27/2016 04:14 AM, Ondrej Krc-Jediny wrote:
> I have Compressed=yes already and also Visible=No (which I do not set
> explicitly, but it is the default). We ship both .msi and bootstrapper .exe
> to the customers intentionally, that's why I'm thinking of such scenarios.
>
>



More information about the wix-users mailing list