WiX

B is for Bundle and that's good enough for me.

I'm borrowing a bit of Cookie Monster's personal anthem to acknowledge a mistake I think I made several years ago. If you've worked with the WiX Toolset for any amount of time, you've undoubtedly caught on to the naming scheme we use for tools.

Candle.exe is the compiler so it starts with “C” and light.exe is the linker to it starts with “L”. I named Burn, several years ago, because it would be our bootstrapper and that starts with “B”. The problem is that Burn is far more than a bootstrapper and for some definitions of bootstrapper it does way too much. So, “B” is for Bundle and Burn and let’s talk about what that means.

A Bundle in the WiX toolset is a collection Packages. Packages are things like MSIs (installation packages), MSPs (installation package patches), MSUs (Windows update packages) and EXEs (custom installation packages). The Packages in a Bundle are organized into a Chain that defines the order the Packages are applied when the Bundle is installed, repaired or uninstalled. A Bundle has an identity. It uses that identity to be removed from Add/Remove Programs, to be upgraded or patches, to reference counts its Packages and generally exist on the machine.

Let’s stop there for a moment. If you’ve been looking for something to present a unified user experience across multiple installation packages then a Bundle is for you. Burn, the engine that does all the work, provides a fantastic number of services to create a really seamless installation experience. In my humble opinion, the Visual Studio 2012’s install is a really nice example of what you can do with Burn in a set of related Bundles (for example, the upgrade from Professional to Ultimate is insanely fast and easy).

On the other hand, if you are looking for a bootstrapper that does a “fire and forget” of one or more installation packages then a Bundle is not a good match. Burn is not a glorified batch file. That was not the goal. That’s not to say that we wouldn’t build such a thing in the future (actually, setupexe/setupbld in WiX v3.5 is pretty close) but we didn’t build it in WiX v3.6.

My mistake, years ago now, was sticking with the term “bootstrapper” for Burn even when it was clear there would be confusion about how it works. We debated whether “chainer” would better describe Burn. Now I think “B” is for Bundle and that’s good enough for me.

One last thing before I let you go. If you are looking for a “fire and forget” bootstrapper, I encourage you to take a moment and instead re-imagine your installation experience as a single progress bar. Imagine your user presented by a single user interface where she inputs the necessary customizations then installs with no further interruptions. I believe that is a compelling user experience and that is what Burn with its Bundles are designed to provide.