WiX

WiX v3 on the .NET Framework 2.0 eminent.

As I noted about four weeks ago, WiX v3 is being moved to the .NET Framework 2.0. I originally hoped it would only take two or three nights of work to complete. Unfortunately, I was sick late last week and bailed out early so it took more like four nights of actual work. In any case, I think I finished the work tonight and just want to do a couple more test before I submit the code. Next week's release of the WiX toolset should now require the .NET Framework 2.0 as a minimum.

Many thanks to Bob for his help and suggestions as I worked through all the porting issues.

I’ll now take a few minutes to answer some of the questions that I was asked about what this really means.

Q: What does it mean to have the WiX toolset moved to the .NET Framework 2.0?

A: Simply put, the WiX v3 toolset will now require that you have the .NET Framework 2.0 installed for it to run. WiX v2 toolset will still run on the .NET Framework 1.1 SP1 or .NET Framework 2.0.

Q: So if I only have the .NET Framework 1.1 SP1 installed then WiX v3 toolset won’t work?

A: That is correct. You need to install the .NET Framework 2.0 (or 3.0 or 3.5) for WiX v3 to work. The .NET Framework 2.0 is extremely popular so we are not expecting this to be an issue. Note that ClickThrough and Votive in WiX v3 already required .NET Framework 2.0 and that has never been raised as an issue.

Q: What benefits are there for moving to the .NET Framework 2.0?

A: Well, people will quit asking me when we were going to move it. Honestly, IMHO, that’s the biggest advantage right now. Technically, we can also start to take advantage of generic collections and the improved XML objects in the .NET Framework 2.0. I’m not keen on converting our working typed collections to generics but I’ve heard there are some performance enhancements in the new XML objects so we’ll probably look into that.

Q: Wow, was it worth four weeks of work?

A: I don’t know. If it saves me constantly explaining why WiX was designed for .NET Framework 1.1 then maybe it was. <smile/>

Q: But, MSBuild is cool. Can’t you use MSBuild to build everything now?

A: The MSBuild syntax is a little weird but it does handle managed code and WiX code (thanks to Justin) well and integrates very well into Visual Studio. Unfortunately, we still need NAnt to build the native (C++) portions of the code base because the C/C++ project support in MSBuild is dismal. The solution that I’ve settled on is to basically use NAnt to build all of our native code first (Custom Actions, mostly) then NAnt calls out to MSBuild to build the managed code (core toolset, Votive, ClickThrough).