WiX has landed

It's all over the blogs and news lately, so you'd have to be living in a cave to not have noticed that Rob Mensching has recently released his long-promised MSI toolkit called Windows Installer Xml or WiX on SourceForge. All of the buzz is centered around Microsoft's apparent about-face on open source software, but I'm truly excited about the toolkit itself.

I started working with it today, trying to incorporate MSI and MSM creation into our CruiseControl.NET and NAnt automated builds, and I have to say my first reactions are quite positive.

Incorporating it into NAnt was straightforward. I just set an environment variable named wix_home to the tool's location and called the MSI compiler (candle.exe) and linker (light.exe) like this:

<target name="installer">
  <sysinfo />
  <exec program="${sys.env.wix_home}\candle.exe"
commandline="MyProject.wxs" />
  <exec program="${sys.env.wix_home}\light.exe"
        commandline="MyProject.wixobj" />

At the end of this I had MyProject.msi ready to install.

Creating the MyProject.wxs file is the tricky part. In order to build a really full featured installer with UI, we're going to need much better documentation and non-trivial samples (and possibly a design tool). I can't find any out there yet, so hopefully a community of WiX resources will spring up somewhere. If anyone knows where to find samples please let me know. You can use the decompiler (dark.exe) to reverse-engineer an existing MSI, but I found the wxs file generated from a Visual Studio vdproj created MSI overwhelming. I prefer building up from simple examples instead of tearing down from complex ones.

All in all it looks great and I'd like to thank Rob for pushing this one out to the community. I'll try to post more detail on how it is to work with as I get into it a little deeper.




  • I'm glad to hear that integration was straightforward. I know that examples are currently the missing link, but be assured that they're forthcoming. Keep your eye on Rob's blog, for examples, or for info on where to find some. He's definitely swamped, but this is very much high on the todo list.

    If he doesn't get time relatively shortly, I'll talk to him, and we'll work out a way to get some good stuff out there.

  • Grr...I am finding these tools to be unusable so far. I reverse engineered my .msi file using dark and got my .wxs file, used candle to get my .wixobj file, and now light won't generate my .msi file. It's looking for some temp files with extension .ibd. I wouldn't even know where to start with writing the .wxs file myself since the walkthrough is, as you pointed out, ridiculously simplistic. We want to use this with nant to build our installers. I would just use the msi task in nantcontrib but I would rather not have to monkey with changing the .build file every time a reference is added. I totally agree that sample .wxs files are needed.

    My experience in a nutshell,


  • Version 2.0.1615.0 released on April 15th, 2004 has a sample that includes some UI. It can be found in the sources zip. It's a start.

  • when i used dark.exe on an existing msi file I also had the problem of .wixobj file looking for some .ibd files ex: &quot;Binary\InstallUtil.ibd&quot; can some one tell why these files (InstallShied uses some of these ibd files)are needed. even when the msi was created without installshield.

Comments have been disabled for this content.