In the past few weeks I’ve completely revamped my development and build environments to adopt the latest versions of Windows, Visual Studio and Windows Installer XML. In the process I decided that it was time to look at WiX Toolset v4.0 (beta) and the implications on Industrial Strength Windows Installer XML.
I had read tidbits about WiX v4.0 being a redesign with tons of breaking changes. I had also read that WiX v3.x would have many more releases. My concern was that eventually v4.0 would be complete and it would result in IsWiX become end of life.
My findings at this point are:
- WiX v3.x and v4.x mostly install side by side. You end up getting two sets of the compiler and MSBuild targets files which means that you can have wix v3 and v4 projects in the same solution and they will both build.
- WiX does not install Votive side by side. Last one on (or repaired) currently ‘wins’. For the most part this isn’t completely horrible since Votive hasn’t really changed much.
- WiX will only show you project templates for the version of Votive that is active. So if you want to create a v4 project you might have to repair WiX v4 and if you want to create a v3 project you might have to repair v3. Read on for how IsWiX is a little different and doesn’t have this problem.
- WiX v3 and v4 have completely different XML and C# (DTF) namespaces along with different Import statements in their .wixproj files. Presumably WiXCop or some other tool will help with migrations but at this point it’s all done by hand.
- WiX v4 is currently beta and buggy. Attempts to use WiXUI and Merge/MergeRef resulted in light errors.
Ok, so with that as our current platform, here’s what I’ve done with IsWiX
- IsWiX has a series of project templates that get zip’d as part of the build process then laid down and registered with Visual Studio during the install. I split them into two sets: v3 and v4.
- The project templates screen is starting to get a little crowded so I organized the installer to have v3 and v4 project template features. They default to install if the WiX v3 / v4 MSBuild targets are found. This way people who don’t yet have WiX v4 don’t have to be bothered by the new templates.
- I had a lot of hardcoded namespace references in IsWiX. This has all been refactored so that IsWiX looks at the in memory document and uses the v3 or v4 namespace as appropriate.
- The namespaces designer view now offers the correct sets of namespaces based on the above root namespace behavior.
- The XML editor designer view also has the same behavior for proper validation / intellisense processing.
- I tested all of the designers but there is a chance that one of my refactoring’s, well, sucked. I’m sorry, I don’t have unit tests to know for sure. If you find a bug, please report it and revert to IsWiX 3.0. I will follow up with an IsWiX 4.0 fix in a matter of days possibly hours.
So, I think that’s about it. Head on over to CodePlex to download the new release! Here’s a few pictures to illustrate the above points: