Windows Installer XML (WiX)
WiX is an XML based wrapper around the Windows Installer which lets you create Installer packages without you having to get your hands too dirty with the obscurities of dealing with the Windows Installer directly or for that matter if you want to cut down on the costs of licensing third party installer products, its a great way to create your custom Windows Installer at no money down. WiX is an open source project from the folks at MS which is currently maintained by Rob Mensching, the toolset itself was written in C#.
Getting to speed with WiX reminded me of my C days, no it has nothing to do with the programming language construct itself (obviously), I learnt C after I learnt C++, yeah that’s not fun…Learning WiX without knowing that you will need to learn the abc’s of Windows Installer sooner or later is very common pitfall encountered by new "WiX’xers"(I made that up).
Who really needs WiX? how good is it really?
Did you just write a game in your spare time which you plan on distributing from your website? And did you want to upgrade the game when you have some extra time and wanted your game users to get your new upgrade patch. You definitely wont want to spend the same amount of time you took to create the game or more on creating the installation package(msi/msm or a msp) by directly using the Windows Installer, neither would you like to spend that extra $$ you saved up for that Hi-Def TV on a 3rd party installation tool.
WiX is used in most of the major software installations these days, Microsoft Office 2007, SQL Server 2005, Visual Studio 2005/2008 have already been "WiXed".
So how easy is it? Can it adopted by an application developer or is it still heavily in the Installer space?
Depends on how you look at it. Application developers from Clarity Consulting are currently working on an installation package for a major software company and we find it to be bridging the gap between application and Installation developers. The gap will seem to get narrower when we start talking about Votive the new Visual Studio plugin.
Let’s scrape the tip of the iceberg, how bad can Windows Installer installations really be?
Some might say, as easy as copying the files to the target system, well that’s how simple it can get.
Here is overview of how involved an installation process can be:
the COM nightmare(when multiple products share the same COM server), supporting files for an installation can be as simple as dlls or as complex as pushing MSDE, installations alter the state of a target machine so patching a product or upgrading the product calls for some grey cells. Installations can often need admin privileges or should sometimes be installed for all users on the target machine, installing/starting/shutting down windows services, dealing with installation repair scenarios, running your custom code during the installation or how about having two versions of your product installed side by side without any conflicting behavior?
That wasn’t meant to scare you off WiX, but to give you a vague idea of the scope/considerations when creating an installer package. WiX goes a long way in helping you with them, which I’ll cover in the next few posts. In the meanwhile take a look at Gábor Deák Jahn’s WiX Tutorial, which is a great place to start.