WiX: A Developer's Guide to Windows Installer XML Paperback – Oct 18 2010
|New from||Used from|
There is a newer edition of this item:
No Kindle device required. Download one of the Free Kindle apps to start reading Kindle books on your smartphone, tablet, and computer.
To get the free app, enter your mobile phone number.
About the Author
Nick Ramirez is a software engineer at Sophos in Columbus, Ohio where he works installing code for the company's enterprise products. As a member of the engineering team, he also spends time coding C#, WPF, and other Windows technologies. He is an active contributor to the WiX discussion forum. Nick lives in Columbus with his soon-to-be wife, Heidi.
Most Helpful Customer Reviews on Amazon.com (beta)
The book leads off with an example of a simple installer that can install a file and create a shortcut, and then introduces more complex concepts like using AppSearch elements, authoring custom actions, creating registry keys and values, setting conditions on components and features, configuring the installation sequence tables, etc. It spends a lot of time explaining details about creating Windows Installer UI in WiX - it starts with the built-in WixUI dialog sets and expands in scope to describe how to create fully customized UI.
Throughout, the book does a nice job of pointing out some of the common pitfalls that can trip up developers as they create installers - things like the importance of being careful about how GUIDs are used, particularly for components, problems that can be caused by using string comparisons in property evaluations, why you should consider setting the Transitive value for components with conditions.
The book covers a key area of the software development lifecycle that is typically forgotten about - how to update your application after it ships. It provides a thorough overview of the process of identifying an appropriate update strategy for various scenarios and implementing the chosen strategy in WiX.
Because it is based on WiX v3.0, the book only describes scenarios that use the Visual Studio 2005 and 2008 IDE. Visual Studio 2010 has been out for about a year now, but it is only supported in WiX v3.5 and later. Hopefully there will be some kind of addendum to this book with additional details about what is new in WiX v3.5 once it ships.
The book omits a few more advanced setup development concepts:
* While it does talk about using the Deployment Tools Foundation to create custom action DLLs, the book doesn't spend a lot of time describing how to use WiX extensions and built-in custom actions. It describes some of the WiX extensions in the context of teaching about related setup authoring concepts (things like creating user accounts, setting file and registry permissions, and detecting the presence of the .NET Framework on the computer). It omits other useful built-in custom actions entirely (in particular, QuietExec, which I find myself using fairly often when I need to run custom actions during an install).
* The book describes how to use WiX tools via the Visual Studio IDE and by running them directly via command line. It does not describe how to implement command line builds using MSBuild and .wixproj files, though this is covered fairly well in the WiX documentation.
* How to create specialized MSIs such as 64-bit MSIs and per-user MSIs that do not require elevation.
* How to create and consume merge modules, particularly the Visual C++ runtime merge modules.
* Chaining - most applications nowadays have dependencies that need to be installed, and the WiX team is working on a chainer for a future release. In the meantime, I think it would serve the audience of this book well to provide some high level options to consider when creating an installer that has to manage the detection and installation of dependencies.
Overall, this book is something I'd highly recommend to a developer who is in the process of learning about setup development and Windows Installer and who wants to build a solid knowledge base to create robust installers and integrate setup development into their end-to-end software development process.
For purposes of full disclosure, I received a promotional copy of this book that I read and evaluated in order to write this review.
I'm probably going to slog through it anyway, and maybe will have more to report later.
I have some experience with MSI, InstallShield, and related installer technologies, but my knowledge of MSI internals is very limited (before switching to WiX, I mostly used Visual Studio Installer projects for building installers). I started learning WiX the hard way: reading user guide, tutorials, wiki; and in a couple of weeks I was able to write several installers for internal projects. Nevertheless, I still had very vague idea about the implementation (i.e. what does this property mean, why I need to include this attribute, what do these elements do), so I bought the book (well, my department did pay for it, but if not, I would've paid myself). The book cleared a lot of things for me.
The book covers the fundamentals extremely well. What is a product, package, media? How do they relate? How do you use features, components, files? The book answers these and other questions in more detail than you would find elsewhere. I found the description of major upgrades (e.g. the matrix explaining the effects of scheduling removal of older version at different execution events) particularly helpful. Chapters covering user interfaces (using default wizards, modifying existing dialogs, customizing wizards) are very informational. So is the discussion of localization. Examples illustrate the topics nicely. The book offers sensible recommendations (e.g. avoid per-user setup packages).
A couple of things I found somewhat confusing include description of properties, variables, etc, when it's not clear whether these get resolved during build time or deployment time and issues pertaining to 64-bit vs 32-bit installers (e.g. how system folders get resolved on various combinations of platforms and installers: 32-bit MSI/64-bit OS, etc). I wish the index were more comprehensive; most of the time when I needed to find something, I just flipped the pages.
I agree with points made by other three reviewers, so I won't repeat them. In short, if you're planning to use WiX to write installers, get this book; you will find it quite helpful.
But there's more: A prerequisite for using WiX effectively is a fair understanding of how Windows Installer works (and that is not even remotely straight-forward). After reading this book I understand much more about the Windows Installer than I did before -- it is almost beginning to make sense.
If only more software development books were like this one...