WiX bits…

I’ve been reading more on WiX while wrapping up the loose ends of C# coding on my current program. I’m a team of one at this point but it is rather nice to get some straight-up coding done without needing to take care of the other issues that leading a team brings to the table.

The ‘heat’ tool in WiX generates files containing WiX descriptions of files on the file system that need to be installed. I have built small WiX installers in the past for projects but those have contained only a handful of files. Things I hadn’t known before this piece of work:

  • WiX has a ‘compiler/linker’ structure to it. Individual WiX files can be built and then linked together into a final installer. This makes the heat generated files more useful as they’re not going to be hand modified, just included in a final MSI file that was hand generated.
  • With larger installs the component group makes things dramatically less cluttered. Nice feature to have…I now need to re-generate my heat output with proper group naming.
  • Fragments are the ‘div’ elements of WiX. They allow grouping of components for link time binding. If you pull in one item in a fragment then all other items in that fragment get pulled as well. This appears to be not only a convenience but a way to pull in items that can’t otherwise be referenced from another linkage input.
  • You can run heat every build pass but I don’t think you want to. I can see where this would be convenient, allowing you to add items to the build and have them get inserted automatically. The down side here is that the GUIDs for existing items would change every time through and that makes a mess of the windows installer’s view of things.

There’s clearly much more to learn on this front but for the moment I’ve got what I needed. Installer UIs and more complex system interactions would be nice to know about but I know where to go to find that information when I need it…