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" />
</target>
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.