Let's talk about Burn.

A long while ago, Bob wrote a short blog entry about the WiX toolset's upcoming bootstrapper adoringly named Burn. We made some early progress back then but refocused our energy on finishing WiX v3.0 which recently released. Now I'm back to Burn which will release with WiX v3.5.

What is Burn?

Burn is a bootstrapper/chainer. Because Burn is both, I tend to use the term "bootstrapper" and "chainer" interchangeably. I know some people like to have some distinction between the terms. However, I've found nobody agrees on the distinctions. I tend to lean towards the use of the word "bootstrapper" because it starts with the letter "b" and Burn was a cool name for the next WiX tool.

What is the purpose of Burn?

As you might expect from the name, a bootstrapper is responsible for getting the setup process started. You might expect that this should be unnecessary. Double clicking an MSI file should be sufficient to get the installation process going. Unfortunately, due to several design decisions in the Windows Installer there are a plethora of work items for a bootstrapper.

Burn also chains multiple setup packages to create a single installation experience. The original design of the Windows Installer expected that a product and all of its prerequisites would be installed via a single MSI file. That is why Merge Modules were developed. Unfortunately, Merge Modules do not meet the needs of all types of prerequisites and have some pretty serious deficiencies, particularly in relation to patching.

Thus the purpose of Burn is to provide a unified experience for initiating and applying one or more setup packages to the machine.

What are the features of Burn?

Let me just list the features planned for the first version of Burn. The complete list of features to implement in a bootstrapper is very long. Our first release is a balance of features vs. time to completion. As always, I welcome feedback. Particularly, if you think something important is missing.

  • Size - you might not think of the size of the bootstrapper as a feature but it is very important to Burn. The goal is to keep the Burn overhead under 256 KB. Why? Well, we've found that with a broadband connections 256 KB equates to an almost instantaneous download and launch experience via Internet Explorer.
  • Elevation - every bootstrapper I've seen gets elevation (aka: UAC) wrong or not-quite-right. The really bad bootstrappers prompt for elevation multiple times while others prompt before showing some branded UI. The real unfortunate part is that these bootstrappers cannot correctly handle per-user setup packages. There is a lot to elevation and I'll talk more about how Burn handles it in the future.
  • UI - let's face it the Windows Installer user interface was designed in 1997 and it still looks like it. Burn on the other hand does not restrict the user interface at all. Setup developers provide a UX.DLL that has full control over the user interface and interaction (that's why we call it user experience, or UX). In the WiX toolset we will ship a couple standard Burn UX.DLLs (just like we provide standard UI for MSI files). A stretch goal for WiX v3.5 is to allow the UX.DLLs to be written in managed code (think WPF).
  • Progress - progress is one of the most visible aspects of setup and one of the hardest to get right. Burn does a lot of work to create a seamless progress system so it is easy for developers to create a unified user experience across multiple setup packages. For those of you familiar with the Windows Installer, this means the progress bar no longer resets twice during the install. I can't tell you how pretty that is. <smile/>
  • Download - redistributables (think .NET Framework and SQL Express) that are larger than the applications which use them are unfortunately really common right now. If you are distributing your application over the Internet (and how many people today aren't?) shipping those redistributes in your setup is expensive. Burn has the ability to only download what the user needs and/or chooses to install. That means if the .NET Framework is already installed, no need to download it again. Also, when your product is broken up into multiple MSI files it becomes possible to optimize the distribution further. Oh, and did I mention Burn will support resume if the download server supports HTTP 1.1?

Those are the big features. I'm sure I've left out a lot of little things. Again, remember this is the first version. We'll be back for more.

When is Burn available?

Burn is one of two key features in WiX v3.5. Votive support for Visual Studio 2010 is the other. We are planning to be done around a month after Visual Studio 2010 releases. Of course, the code to Burn is available right now but it is under a lot development and not at all stable. So, I would not recommend trying to use Burn too much until I get the WiX v3.5 install using it. Once WiX v3.5 is installing with Burn then you'll know the core functionality is in place. That plus there will be a working example of how to create your own UX.DLL.

I hope we'll be at that point by the end of July. A lot of that depends on how busy real life gets. Go, Sounders! <smile/>

 

22 Comments

Comment by Christopher Painter on Tuesday, July 14, 2009 9:06 PM

I'm putting v3.0 into production and I'm interested in v3.5/burn also. I noticed that 3.0 -> 3.5 is a major upgrade. Any chance WiX could allow for side by side installation? We run VS2005/2008 and InstallShield 12, 2009 and soon 2010. Our product line is so large we can't typically just pick and move to the latest tool in one shot.

I'm also curious about the anticipated 3.0 to 3.5 migration path. Are many language changes expected resulting in WiXCopy migrations or will it pretty much be switch out the tool to use the new features and assorted bug fixes?

Comment by Kevin Dente on Tuesday, July 14, 2009 9:35 PM

Awesome. The lack of a bootstrapper has become a serious issue with Wix - glad to see a solution is on the horizon.

Comment by Bartek Szafko on Tuesday, July 14, 2009 11:43 PM

sounds very interesting, already had a look at some basic features in repo, but i can't wait to see ux in action

maybe some screenshots?

Comment by Philip Stears on Tuesday, July 14, 2009 11:49 PM

Wow, they're some pretty big goals, I can't wait to see how Burn pans out :-)

Comment by Yan on Wednesday, July 15, 2009 12:04 AM

>> I hope we'll be at that point by the end of July.
Are you serious, Rob? The end of July this year, 2009, right?

I often have an impression you never sleep, guys.
Well, hold fast, anyway! ;-)

Comment by marklam on Wednesday, July 15, 2009 12:54 AM

Will burn (or any associated tool) support creating a single executable containing all the prerequisites and the installer, for making a download that can be used by users with limited internet connectivity - e.g. only one machine on a site being wired in, or weird 'security' programs that prevent most applications from connecting to the web?

Comment by Henry Boehlert on Wednesday, July 15, 2009 1:36 AM

Some folks will have serious investment in package manifests for the Visual Studio Bootstrapper. Do you think that this somehow could be salvaged?

Comment by Sam on Wednesday, July 15, 2009 2:10 AM

Rob,
Firstly, congratulations on shipping Wix 3.0. I've been a great fan of Wix for the last couple of years.

Your plans for Burn sound great - I've found several tools that, in combination, will do most of what I want, but Burn sounds like it will do the lot. I especially like the sound of being able to create UIs in managed code.

Keep up the good work.

Comment by Neil Sleightholm on Wednesday, July 15, 2009 4:28 AM

Rob, you mentioned that .Net/SQL could be downloaded but will it also be possible to install them from a local copy e.g. CD / File share?

Comment by wcoenen on Wednesday, July 15, 2009 6:00 AM

I'm using the msbuild GenerateBootstrapper task right now, but there are a few problems there:
- authoring your own prerequisite packages is a real pain. The xml format is poorly documented and the slightest mistakes results in the package definition being silently ignored by the msbuild task, without any indication of what the problem is.
- the bootstrapper presents a license agreement for .NET 3.5 but then in the next dialog it will not list .NET in the list of prerequisites that will be installed
- if you move the bootstrapper's main progress dialog at all during installation, it turns into a white rectangle.

Needless to say, I'll be an early adopter of Burn :-)

Comment by Mark Johnson on Wednesday, July 15, 2009 7:48 AM

Burn sounds awesome. Thanks again Rob, for all of your excellent work on the WiX project.

Comment by Colby Ringeisen on Wednesday, July 15, 2009 11:38 AM

Wow, I'm excited about the potential here too. I also have some of the same questions as have already been posted above.

In particular:
[Yan] Did you really mean July 2009?
[marklam] Option to create a single EXE?
* [Henry] Support for VS package manifests? Maybe adding support for using the ClickOnce product and package XML schemas?
[Neil] Ability to specify location of required dependencies (such as on a CD/DVD for shrink-wrap software) in addition to support for downloading the pre-reqs?

To that, I'll add my own (even though it probably goes without saying): The ability to dynamically change the msiexec.exe command line based on coded logic (custom UX.dll). For example, I'd like to be able to adjust the msiexec.exe command line for a first time install to include applying a patch if one is detected in a pre-defined location.

Comment by dB. on Sunday, August 16, 2009 1:16 PM

Being a heavy contributor to http://dotnetinstaller.codeplex.com I am really looking forward to Burn - the UX part and progress are most exciting. The core features that we have lots of people use in dotNetInstaller and that were not mentioned are:

* platform support - maybe it's really time to forget about windows 95/98, but definitely not w2k - there should be no pre-requisites regardless of os
* os, registry-based, file-based, msi-product-based, whatever-based filters to select which components to install
* support for executing other things than MSI
* embed some components in a single executable, download others, extract only those that are being installed
* download configuration(s) from web, not just components themselves

Comment by Rob on Tuesday, September 15, 2009 2:41 PM

What is the current status of Burn? Is it stable enough to try out?

Comment by Tobias on Wednesday, October 14, 2009 12:49 AM

Hi Rob,
we are quite some time after July and WIX does not use burn for installation until now. Is there a new plan when it will be in?

Comment by Etienne on Monday, November 09, 2009 11:59 AM

Will we be able to launch a different msi package depending on the language local settings with Burn?

For exemple, will burn be able to detect that the current Windows is in French and run package_fr.msi instead of package_en.msi?

Comment by Bryan on Thursday, December 03, 2009 7:55 PM

Just curious as to the current status of Burn ... been fishing around and it's not clear to me where things stand.

We need a bootstrapper that can elevate to admin to install the prereqs (.NET, VSTO, etc), then de-elevate back to the currently logged-in user account to install the app/add-in.

Comment by Allan.C on Sunday, February 28, 2010 9:56 PM

I'm really looking forward BURN, I have a very simple scenario which is not supported yet by Wix. I need to select the language first for the installer, and depending on the selection use the msiexec with the corresponding TRANSFORMS=:lang.wst.

Comment by Markus Hopfenspirger on Tuesday, April 13, 2010 8:04 AM

Hi Rob,

Now VS 2010 ist out. What about WIX, Votive and Burn?

Thanks for your work and nice greetings from Germany
Markus

Comment by Luca on Wednesday, September 15, 2010 7:10 AM

Where is Burn.exe ?
I have Wix 3.5 built on july 2010 and I can't find it.
I tried to make it from sources but I got many other build error.
And again, is there some documentation and samples, about burn ?

Comment by Blair on Wednesday, September 22, 2010 11:57 PM

Luca, Burn is (now) in WiX 3.6.

Comment by Christoph on Tuesday, May 03, 2011 11:59 PM

Is there some sort of tutorial?

Leave a comment
optional