Summary: Reflections from my first encounter with Windows Installer XML (WiX).This is post #1 of the six-part Learning WiX series. For other topics, see:
Table of contents
- Background (why WiX?)
- Introduction (answers to common questions)
- Getting started (references and tutorials)
- How-to's and missing links
- Slides and demo projects
- Improved demo projects (32- and 64-bit installers)
Good news: (1) WiX Toolset let me create installers that were on par with installers I used to build in the good ol' pre-Windows Installer days. (2) I did not have a panic attack when I opened the WiX-generated MSI files in Orca (WiX seem to produce less garbage than say Visual Studio Installer). (3) It took relatively few lines of XML code to build an installer that handled deployment of a Windows service, COM object registration, desktop and shortcut menu creation, invocation of a configuration utility, and typical user interface (setup wizard).
Unfortunately, I cannot say that my transition to WiX was seamless. WiX Toolset has a few limitations. To be fair, some of these limitations are caused by idiosyncrasies imposed by Windows Installer (MSI), but some are native to WiX (e.g. it seems impossible to use the recommended type of custom action when invoking an executable from a merge module). WiX tools sometimes lack features (e.g. it's relatively easy to extract COM registration information from a COM DLL, but there is absolutely no way to do it from a COM executable). There are bugs (probably not as obnoxious as InstallShield bugs, but still). Project documentation and information is skimpy and somewhat confusing (why is the project split between SourceForge and CodePlex? how long should it take a WiX novice to figure out what and how to download the toolkit? why is it called Votive? and why is "i" in "WiX" lower case?) And the WiX learning curve is rather steep, especially for those who have not been intimate with Windows Installer (MSI).
One good -- and bad -- thing about WiX is that it's an open-source project. On the positive side, WiX has a momentum now both inside and outside of Microsoft. On the other hand, it's not clear if, or how long, Microsoft's backing of the project will continue (say, Microsoft strikes another back room deal [I'm speculating here] with Flexera [the InstallShield maker] and withdraws all support from WiX).
As long as you are looking for alternatives, here is a list of commercial products that can help you build MSI-based installers:
- InstallShield by Flexera Software
- Wise Installation Studio by Altiris, Inc/Symantec
- InstallAware for Windows Installer by InstallAware Software
- Advanced Installer by Caphyon
- MSI Factory by IndigoRose Software Design Corp.
- Tarma InstallMate by Tarma Software Research
- See also List of installation software (Wikipedia)
If you are interested in WiX, read my subsequent posts. I will share (time permits) the things that helped me get started. Here is the outline of the upcoming WiX-related posts (I'll convert items to hyperlinks when the posts are ready):
- Introduction to WiX (FAQs for novices)
- Learning WiX from ground up (resources for WiX beginners)
- WiX how-tos and missing links (helpful how-tos and insights)
- Bonus: Presentation and demo projects
- Extra bonus: Build 32- and 64-bit installers using WiX (new and improved samples)
Choosing a Windows Installer Deployment Tool
Dude, where is your installer?
Rob Mensching Does Installations with the WiX Toolset (podcast, transcript)