Congratulations to the WiX team on hitting the Beta milestone for WiX 3.0! Now that code and schema changes are on the ramp down on the project, I thought it was the time to update my Paraffin tool to offer full support for WiX 3.0. If you didn’t see the original set of blog posts I wrote about Paraffin (Part 1, Part 2, and Part 3.) the quick answer is that manually creating and hand maintaining your WiX fragments is enough to make any developer cry. I wrote Paraffin with the idea that it would do the hard work of creating and maintaining those fragments easier. With any tool of this sort, I have to caution you that you can completely break Windows Installer’s component rules if you are not paying attention. This is especially true if you remove files from your install.

The 3.0 release of Paraffin creates WiX 3.0 compatible fragments only. I bumped the version number up to match the version of WiX it supports. (If you are still using WiX 2.0, keep using the 1.04 version.) However, if you have WiX 2.0 files you created with Paraffin 1.04, Paraffin 3.0 will properly update those files to WiX 3.0. If you haven’t guessed, I’m just now upgrading my installations to WiX 3.0 so had a ton of files to convert. It took a little extra effort since the WiX XML namespace changed between 2.0 and 3.0, but it was definitely worth it to make the transition easy for me. All the fragments that Paraffin 3.0 creates are fully WiXCop compliant except for the whitespace checks.

I love the idea of the automated analysis that WiXCop does and really thank the team for the tool. The problem is that the whitespace analysis errors are so voluminous on every file you check you can’t see the real errors it’s reporting. To turn off those errors, here’s my settings file, NoSpaceErrors.xml.

<Settings>
  <IgnoreErrors>
    <Test Id=”WhitespacePrecedingNodeWrong” />
    <Test Id=”WhitespacePrecedingEndElementWrong” />
  </IgnoreErrors>
  <ErrorsAsWarnings/>
  <ExemptFiles/>
</Settings>

When you run WiXCop, add the –set1NoSpaceErrors.xml to the command line and you won’t be bothered by those errors ever again.

In addition to creating new WiX 3.0 files and updating WiX 2.0 Paraffin file to WiX 3.0, I also check all File elements and if the file is a .DLL, .EXE, or .OCX, I add the Checksum=’yes’ element. To see an example installer using Paraffin, the .ParaffinInstaller directory in the ZIP file is a WiX 3.0 project for installing Paraffin. I’ve created fragments for the source, installer, and binary directories.

Grab Paraffin 3.0 here and as always, let me know if you have any feature requests or find any bugs!