Tonight I traveled to Anthony's Beach Cafe in Edmonds, WA to have dinner with Charlie Poole.  Charlie is the active maintainer of the NUnit project.  He contacted me (via my blog, IIRC) and we set up tonight's meeting.  I expected he wanted to meet because NUnit is now using the WiX toolset too.

Charlie did want to talk a little about WiX but we discussed a myriad of other topics as well for the two+ hours we were there.  In fact, we shut the place down.  Only the cooks were left cleaning when we walked out.

The most interesting setup related topic was something Charlie thought I wouldn't be interested in.  NUnit is all managed code.  It supports all versions of the CLR as well as Mono.  Charlie told me he had written the detection logic for all the CLR versions and Mono.  I told him that the WiX toolset already had the detection logic for the CLR and he should just use that but I was very interested in getting the Mono detection logic into WiX.

Charlie was surprised by both answers.  He asked how to use the CLR detection in WiX v2 now.  I didn't have the answer off the top of my head, but now that I'm home here's how you do it.  Add any (or all) of following to one of your .wxs files:

<PropertyRef Id="NETFRAMEWORK10"/>
<PropertyRef Id="NETFRAMEWORK11"/>
<PropertyRef Id="NETFRAMEWORK20"/>
<PropertyRef Id="NETFRAMEWORK30"/>

Then you need to add the "netfx.wixlib" to your link line like so:

light my.wixobj netfx.wixlib -o my.msi

That will add the appropriate detection logic to your MSI for the CLR using the WiX v2 toolset (WiX v3 command line syntax is a bit different).  Hopefully Charlie send back the Mono detection logic in a "mono.wixlib".  Over time, I hope WiX will have all these sorts of things done for you in many prebuilt .wixlibs.

We also discussed Charlie's adventures in Europe learning and talking about Agile/XP methodologies, including what sounded like a fun trip with Ward Cunningham.  I also asked a number of questions about his consulting work.

Another interesting topic we came upon was talking about our different Open Source projects.  Charlie mentioned he had communicated with Miguel de Icaza when struggling with is project.  I think you can see a bit of that in his blog entry about the exaggerated death of NUnit.  We then discussed the relation of our Open Source projects with Microsoft.  Charlie asked why not make WiX the foundation of Visual Studio setup projects.  I told him I would love for that to work out.  Then I asked him about NUnit and VSTS.  Charlie pointed out that VSTS isn't structured properly to do true test driven development (TDD) but said he enjoyed the competition.

All in all, it was a great dinner and I look forward to crossing paths with Charlie Poole in the future.