Before everyone gets sidetracked by the Open Source implications, let's talk about exactly what WiX is. WiX is a toolset composed of a compiler, a linker, a lib tool and a decompiler. The compiler, called candle, is used to compile XML source code into object files that contain symbols and references to symbols. The linker, called light, is fed one or more object files and links the references in the object files to the appropriate symbols in other object files. Light is also responsible for collecting all of the binaries, packaging them appropriately, and generating the final MSI or MSM file. The lib tool, called lit, is an optional tool that can be used to combine multiple object files into libraries that can be consumed by light. Finally, the decompiler, called dark, can take existing MSI and MSM files and generate XML source code that represents the package.

So, let me step through a real quick example before sending you off to the SourceForge project to get the binaries and source code. First, the below is a complete source file that will create a MSI file that installs a test .NET Assembly into the "Program Files\Test Assembly" directory.

I'll discuss more complicated examples in future blog entries and update the documentation (WiX.chm) by distilling any discussions here. While we're on the topic of documentation, let's discuss where WiX is in its product life-cycle.

First of all, I would say that the WiX toolset is pretty close to Beta2 quality. That means core scenarios (compiling/linking) are very solid, less core scenarios (lib'ing/decompiling) still have some bugs, and the documentation leaves much to be desired. Part of my motivation for pushing the toolset external to Microsoft is to encourage me (and maybe find others) to update the documentation. I'll talk more about that in future blog entries.

That said production quality MSI and MSM files can be produced from the WiX toolset today. Internally, teams such as Office, SQL Server, BizTalk, Virtual PC, Instant Messenger, several msn.com properties, and many others use WiX to build their MSI and MSM files today. When someone encounters a bug, the community tracks the issue down and fixes it. Now, via SourceForge.net, you have an opportunity to be a part of the community as well.

Now, let's talk about why WiX was released as Open Source. First, working on WiX has never been a part of my job description or review goals. I work on the project in my free time. Second, WiX is a very developer oriented project and thus providing source code access increases the pool of available developers. Today, there are five core developers (Robert, K, Reid, and Derek, thank you!) regularly working on WiX in their free time with another ten submitting fixes occasionally. Finally, many parts of the Open Source development process appeal to me. Back in 1999 and 2000, I did not feel that many people inside Microsoft understood what the Open Source community was really about and I wanted to improve that understanding by providing an example.

After four and a half years of part-time development, the WiX design (and most of the code) matured to a point where I was comfortable trying to release it externally. So, last October I started looking for a means to release not only the tools but the source code as well. I thought GotDotNet was the place. However, at that time, none of the existing Shared Source licenses were flexible enough to accept contributions from the community. Then, in February, I was introduced to Stephen Walli who was also working to improve Microsoft's relationship with the Open Source community. Fortunately, Stephen was much farther along than I and had the step-by-step plan how to release an Open Source project from Microsoft using an approved OSS license.

Today, via WiX on SourceForge, you get to see the results of many people's efforts to improve Microsoft from the inside out. I'm not exactly sure what is going to happen next but I'm sure there are quite a few people who are interested to see where this leads. Personally, all I hope is that if you find the WiX toolset useful then you'll join the community and help us improve the toolset.

FireGiant provides dedicated support for the WiX toolset. Ever wish you could get your WiX questions answered immediately with the technical detail that you find in the blog posts here? You can with FireGiant!