What about that WiX?
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)
I would add SharpSetup to the list of interesting applications. It is not an alternative to WiX but rather a support tool. It adds bootstrapper that allows you to select installation language and check prerequisites (by writing C++ code), but the most important feature is the ability to create GUI for your WiX installer in C# and WinForms. There are also other nice features like translation synchronization tool and adding multiple files with a few clicks.
ReplyDeleteAnd a link to SharpSetup site.
ReplyDeleteThanks Tomasz. I haven't used SharpSetup, so I can't comment on it, but I'll add a link for people to check out.
ReplyDeleteThanks to Alek Davis!! I got an informative post on wix. I will visit next time to get more info.
ReplyDeleteAlex, Can you repost the WiX Demo projects 32 and 64 bit. The link to box works but nothing downloads. Thanks
ReplyDeleteTry this link: https://app.box.com/shared/kih09t9nbj
DeleteIf it doesn't work, passme your email and I'll send it to you as an attachment.
Delete