The next major version of the WiX Toolset is now a couple weeks underway. WiX Toolset v4.0 is shaping up to be the most exciting version since WiX v2.0 was released as Open Source in 2004. In WiX v4.0 we expand beyond the confines of the Windows Installer and XML. There are a lot of changes ahead of us, the following are highlights of what's in WiX v4.0 right now.
Name change: "Windows Installer XML Toolset" is now "WiX Toolset".
Technically speaking the project everyone calls "WiX" is really the "Windows Installer XML Toolset". As I mentioned in the intro we are expanding beyond the Windows Installer and XML so in WiX v4.0 we are officially changing the name of the project to the "WiX Toolset". I've cleaned up the all the references I could find in the active codebase but if you still see references to the old name, please open bugs so we can fix them.
Breaking change: all namespaces updated.
WiX v4.0 is a major update and that allows us to make the breaking changes that were impossible in the backwards compatible WiX v3.x line. To create a clean break and finally clean up our namespaces, I've checked in updates to every namespace in the WiX toolset. Here's an example of some changes:
- "Microsoft.Tools.WindowsInstallerXml" goes to "WixToolset"
- "Microsoft.Deployment" goes to "WixToolset.Dtf"
- "http://schemas.microsoft.com/wix/2006/wi" goes to "http://wixtoolset.org/schemas/v4/wxs"
- "http://schemas.microsoft.com/wix/FooExtension" goes to "http://wixtoolset.org/schemas/v4/wxs/foo"
I'm particularly happy with the XML namespace changes. The XML namespaces are now much easier to remember. The pattern is simple: "http:" + "wixtoolset.org" + "schemas" + "major toolset version" + "file type" + "optional extension name". Much easier to remember, IMHO.
I've also updated WixCop.exe so it will fix your .wxs, .wxi and .wxl file namespaces. However, WixCop will not update non-setup code. So if you used DTF or wrote a managed BootstrapperApplication or created a WixExtension then you will need to update your using statements by hand.
Finally: Simplified WiX will change everything.
Simplified WiX is the most important part of WiX v4 and requires a series of dedicated blog posts to explain fully. So I'll just toss in some teasers here.
Simplified WiX is a new "high level" setup language compiler in the WiX Toolset. You can still write in XML but it also supports a new syntax I call "Rtype". Rtype is far and away my favorite way to write setup code now. For the anti-XML crowd there are no "stabby brackets" in Rtype.
While Rtype is awesome, the real power of Simplified WiX is--as a high level setup language--it allows you to multi-target your setup code to different installation technologies. At this point, the current Simplified WiX code supports: .wixlib, .vsix and .appx. In the not too distant future, I expect to add support for: .msi, .nupkg and .appv.
Rtype and multi-targeting ability of Simplified WiX are the key reasons we renamed the project to the WiX Toolset. The Simplified WiX source code isn't always XML and the Windows Installer isn't the only Windows installation technology supported by WiX Toolset now.
Simplified WiX is still borderline prototype code so keep your expectations low for now. It works but needs to be integrated with the "Traditional WiX" toolset code to really close some scenarios. Simplified WiX integration with MSBuild and Visual Studio also need a lot more attention. But if you're willing to experiment with some new shiny toys that have very sharp edges check out Simplified WiX.
I will have more blog entries about Simplified WiX in the near future.
The WiX v3.x series started back in 2005 and maintained backwards compatibility (with few breaks) since 2007. That's a long time to hold back major changes. The WiX Toolset v4 finally allows us to reevaluate current designs and re-imagine the WiX Toolset in the future. We're just getting started. I hope you are getting excited.
In the meantime, keep coding. You know I am.
Send a comment
Something went wrong while submitting your comment. You can try again.
Thank you for sending your comment.