WiX

How the WiX toolset got its name.

This morning someone asked me how the WiX toolset got its name. It isn't a terribly long story so I thought I'd write it down quickly.

As noted in many places, the WiX toolset development started in late 1999 when I came back to Microsoft after graduating university. XML was just starting to become a buzzword inside Microsoft and I was looking for a project to play with/understand the technology. I picked a technology I understood well, the Windows Installer, and started toying with XML as the language for creating MSI files. (Note: I had started a project to build MSI files from text files at the end of my Microsoft internship in 1998, so I was just picking up where I left off).

My mentor when I was an intern, John Delo, happened to be working with XML and MSI in a very similar way. So we spent a couple weekends at his house banging out the original Windows Installer XML schema and a couple tools called Msi2Xml.vbs and Xml2Msi.vbs. Yes, the first version of the WiX toolset was written in VBScript. Yes, I know that there is a project called MSI2XML out there. This was before all of that, AFAIK.

Anyway, there were two problems with Msi2Xml/Xml2Msi. First, the name is boring. I’ll grant you that clear, descriptive names have value but these tools were more than a simple conversion of MSI to XML. Which was the second issue; I believed that creating MSI files should be a two step process: compile then link. Msi2Xml wasn’t enough.

So on the many bus rides from Microsoft to downtown Seattle, where I lived at the time, I struggled with a new name. The name “Windows Installer XML” was obvious but did not capture the fact that there this set of tools that operated on the XML. Then a week after John and I had finished the original schema, not far from campus (in fact, right about here), the word “wicks” came to me. From there it was just a mental hop, skip, and jump to “candle” for compiler and “light” for linker. By the end of that bus ride I had the names all figured out.

The WiX toolset is composed of a compiler called candle and a linker called light that build Windows Installer database files from XML source code.

A few other random interesting facts before we go. As noted above, the WiX toolset v1 was all written in VBScript. So the original toolset contained candle.vbs, light.vbs, and Msi2Xml.vbs. There were over 10,000 lines of code in the toolset. More than thrice, the WiX toolset found bugs in the VBScript engine and early MSXML implementations.

Also, name Msi2Xml stuck around for a long time as an underdeveloped tool. I never had the time to really focus on it beyond what John did initially. In fact, Msi2Xml didn’t even get a proper name until Robert Flaming offered to do the rewrite of the tool for WiX v2 (which is a complete rewrite in C#). By then I had figured out that Msi2Xml was a “decompiler” but it was Robert who named it most appropriately “dark”.

To this day, dark remains my favorite name for any tool in the WiX toolset.