UPDATE, Aug.2018, a new and shorter option: How to create windows installer.
Focused on summarizing MSI and its major benefits
and to list the major tools available
(with download links), as
well as mentioning some new, trending deployment technologies
.
I have worked in software development as a release manager, build engineer, setup developer and as an application packager, SOE engineer and deployment engineer (SCCM) in large corporations.
Along the way, I have used most of the major packaging tools (some in many different versions): InstallShield, Wise (off market, unfortunately), WiX, Advanced Installer (just testing), Orca and I have tested some other tools (link to "Windows Installer Authoring Tools for Developers" from http://www.installsite.org - a rather exhaustive list of tools). I have also used less common packaging and deployment tools such as Computer Associates Unicenter - probably off market by now. There is also a page on Non-MSI Setup Authoring Tools.
UPDATE: If you find yourself in need of an MSI tool for comparing two MSI file versions, or just to extract information from an MSI file, you might want to read this answer: How can I compare the content of two (or more) MSI files? (focused on free MSI tools).
This post provides an overview of the strong points of some of the different authoring tools as well as some snags to be aware of. For all their similarities, these tools are actually quite different. All attempts have been made to make the descriptions as objective as possible - describing real world experience with positives and negatives.
Related Deployment Topics
- Before delving into the review of the different tools, here are a few other links with information about the MSI technology itself.
- Here is a general description of deployment tasks commonly supported in deployment tools, and a description of why deployment seems to become more and more complicated.
- A lot of people seem to think MSI is more trouble than it is worth, and sometimes that can be understandable. The benefits are real - particularly for corporate deployment, but so are some of the problems.
- Here is a description I wrote about the major corporate benefits of MSI (from serverfault.com). The article has grown too much, but is hopefully still relevant.
- In the same article I wrote about typical real-world design flaws in MSI files (a work very much in progress - just a "memory dump" from experiencing "both sides of software": development and deployment).
InstallShield
- Feature rich.
- Always up to date with latest technologies.
- (Setup) Developer oriented.
- Different editions available.
- The flagship product AdminStudio provides both setup developer oriented tools as well as repackager oriented tools.
- Very good release management, localization and automation features for build process automation. At least better than the competitors.
- For complex products release management is perhaps the main selling point for InstallShield. You can deliver flavors of all kinds with ease: language versions, oem versions, viewers, application editions, etc... using release flags and similar constructs.
- Release flags are essentially used to conditionally exclude or include certain parts of the product from each compiled setup - this is often a large part of what is asked for when making professional families of setups.
- The release view in Installshield allows full overview of all your different setup types and editions. You see all language versions and release setups delivered for the web (one large setup file) or for redistributable media (external source files) and whatever other flavors you have delivered.
- Crucially for each release and edition you can override important settings such as product name, product version, package-, product- and upgrade code as well as many other required settings that must dynamically change based on product edition and language version.
- In many other products this type of release and edition management can be much harder to implement. For simpler setups this type of flexibility might be less important.
- The automation API for the product allows it to be easily "remote controlled" from build automation scripts of various types.
- There are also command line build modules (for use on dedicated build servers).
- Full automation of the builds of a whole suite of products and editions is easily possible using regular VBScript / VBA / Javascript automation.
- Full localization support with string tables used to support different setup languages.
- The base dialogs are also provided ready-made in a number of languages (costs extra).
- You only need to localize your own setup content (features list captions, any custom dialogs or message boxes, images with text, etc...) - still a lot of work.
- You can deliver a huge multi-lingual setup. This is not recommended in my experience for several reasons (read localization section). The worst problem is that you must localize all new and changed content in all languages before you can deliver the English version. This is almost never acceptable for marketing / sales. And there are always fixes that require you to rebuild and re-release a single language, and then you want to do so without UAT and QA for all other languages. It is better to provide separate builds for each language (easily implemented).
- Good community support: User Community Forums.
- Pretty good GUI, common things are reasonably easy.
- Full-blown MSI-GUI editor.
- Very powerful. Somewhat complex.
- Limitations of the underlying MSI technology's GUI features cause some snags and annoying limitations, but this is the same for all deployment tools.
- The root cause is that MSI GUI is implemented using tables of data inside the MSI file itself, and this causes severe limitations with regards to dialog events when compared to the full "event model" for proper Win32 dialogs.
- Full featured C-style scripting language for custom actions called "Installscript".
- Installscript now compiles to native - or emulated with its own sandbox, not sure which. There is no need to install a runtime like you had to before.
- Incidentally this runtime was the source of some rather troublesome deployment problems due to runtime corruption - seemingly often DCOM related - and various incompatibilities between different runtime versions. Here are some troubleshooting links for "legacy purposes":
- Unable to Install InstallShield Scripting Run Time.
- Setup Is Unable To Find or Update ISScript.msi.
- Flexera Consumer Central (for end user setup issues).
- Although the runtime was a very problematic source of errors, all related problems now seem to have been resolved completely since Installshield 12 and later.
- Nicely integrated help in GUI.
- Very important for such a difficult technology.
- Often very helpful - especially for dealing with common tasks.
- The default binary file storage format allows no real source control or branching (unlike WiX which delivers this out of the box). I think there is a way to store the project in text format, but I never used it. Not sure how effective it would be.
- Without a shadow of a doubt, by far the buggiest of all installation products.
- In fairness most bugs relate to the special "Installscript MSI" project type that implements a custom dialog model for MSI setups (rather than the native, table based GUI which is suppressed).
- In other words, the Installscript MSI project type MUST NOT be used under any circumstance. Please take this to heart, if you still use them - they are particularly hard to upgrade properly (first time deployment might be OK, but upgrades are breaking). Other projects types seem to work well.
- After abandoning Installscript MSI (which most people seemed to do), the tool worked quite well for me personally (not bug free though).
- I was not happy with the support for deployment of IIS sites and COM+ applications. I needed to go for WiX's flexibility and customizability instead of Installshield's ease of use. There was simply not enough flexibility and control available.
- Support for Microsoft App-V virtual packages and new virtualization technologies.
- Allows a few new things compared to a normal application.
- Application streaming - no local installation on machines - JIT.
- Use two incompatible software on the same computer.
- Updating through the server.
- Control licensing - maximum simultaneous users or tie software to a group / user.
- Present the application quickly and easily to users.
- More Microsoft marketing here.
Wise
Wise is officially retired, but it has been resurrected before. Unfortunately some legal issues may have made it final this time - for all I know. That would be a shame for such a great tool. It was acquired by Altiris, and then Symantec. It now appears to be off market. I am still leaving in the summary of the good Wise features:
- Fast and easy and quite feature rich.
- Very good ease of use overall, excellent feature set.
- Lacking in some (very) advanced features such as IIS, advanced release management, etc...
- Administrator / Repackager oriented.
- Less code focused than Installshield.
- Uniquely capable and flexible graphical scripting editor.
- Well designed setup configuration GUI.
- Also excellent for small development teams looking for a quick and relatively easy way to get their application deployed.
- Sometimes lagging slightly with latest technologies (compared to Installshield), but comparatively "bug free".
- Intuitive GUI, common things are (very) easy.
- Very nice handling of installation sequence configuration and custom actions in a script style editor. More GUI scripting, less coding.
- Rock solid, very few significant bugs.
- Help resources and community support not on par with InstallShield, but still good.
- My tool of choice for debugging and prototyping (fast, stable, easy to use, great diff features).
- And with regards to the diff features (allowing binary comparison of two MSI files).
- No other tool I have tried has come close to Wise for binary diffs of different MSI files.
- The ease-of-use and clarity of the diff viewer was no less than fantastic.
- For corporate packaging such diff-features can be a very critical part of the job as you have hundreds or even thousands of different software packages to manage in many different versions.
- On a subjective note: my favorite packaging tool. Very reliable.
- It is a real shame that the tool is no longer available.
- We can always hope for a "reincarnation" (I have seen GUI snippets that look like Wise in some other tools).
WiX (quick-start tips)
- The big plus is the text source files. There is no need to store the source as a binary where it is almost impossible to track changes and do proper version control.
- Proper text sources make all the difference for development teams in terms of branching, versioning and merging. It is a quantum leap (in my opinion particularly for in-house development in large corporations - where process is complex, turnaround is quick and there are many developers).
- The need for and use of text source files was central to the creation of the WiX toolkit. Here is a quick and incomplete "WiX history" with more details. Recommended read to grasp the foundation and rationale for WiX.
- Some deployment tools that store the installer as binaries could end up in situations where the binary source would exhibit mysterious problems that could never be tracked down properly.
- This happened particularly after tool updates which also updated the format in the source (for whatever reason).
- The upgrades would often affect dozens of tables and hundreds of records making it an impossible task to track down the real problem effectively.
- Symptoms included things such as the sudden onset of slow builds, sudden slow installation speed, unexplainable compilation errors, even total file corruption etc...
- With WiX you have full transparency and "leanness" for your source. It is just cleaner and more reliable when done right and automatic updates of the source is possible, but won't cause cascading changes through dozens of MSI tables. Combined with source control changes are easily tracked and (hopefully) understood - no mysterious, undocumented stuff added.
- With all that said it must be noted that upgrading from WiX 3 to WiX 4 source files appears to not be trivial. Let's hope this is a one-time situation. I am not sure why this has happened to be honest, and I don't have up to date information about it.
- Perhaps check for real news straight from Rob Mensching's blog: http://robmensching.com/blog/ and Bob Arnson's blog https://www.joyofsetup.com/. Straight from the horse's mouth as the Internet makes possible - it is a wonderful world at times ;-). Rumor has it they are doing "turtles all the way down".
- Rock solid, very few significant bugs.
- For those who have struggled with long-standing, intermittent, unexplainable bugs in other tools, this is a godsend. {War stories removed}.
- And even better: problems actually seem to get fixed in WiX, sometimes with community help - as is appropriate for an open source toolkit. Most of the time it seems the core team takes care of it though.
- Very feature rich, but somewhat hard to use at times.
- Takes time to get used to, and even when you are used to it things can be "fiddly" to get right (particularly if you don't use the included helper tools properly).
- It helps to use the dark.exe decompiler tool to decompile existing MSI files to WiX XML. This allows you to study the WiX source without knowing too much about it beforehand.
- Exceptional customizability for complex things such as IIS, COM+, SQL Server, permissioning, firewall rules, etc...
"Everything" is possible, but somewhat involved at times.
- WiX effectively "extends Windows Installer" with new and much needed functionality. This is a massive benefit for everyone who previously had to "roll their own" solutions - often for things that seemed trivial (but was still very error prone).
- The power of these extensions can not be overstated. You can get rid of a lot of self-written, complex custom actions in favor of tested solutions. With proper rollback support! (a much neglected feature in vendor setups - in my experience almost all of them - causing unclean system state after aborted setups).
- I have personal experience writing a C++ dll with custom actions for common tasks with proper rollback support, and the amount of work was staggering - especially the QA of the actual rollback feature.
- A remarkable lack of GUI tools and very few good samples available - particularly for WiX 4.
- Things seem to be improving, perhaps try this short summary.
- An interesting project might be IsWiX. It is worth checking out.
- WiX tutorials: https://github.com/iswix-llc/iswix-tutorials
- Quick Youtube demo: https://www.youtube.com/watch?v=nnV_OU6fk8c
- I am outdated here, please help update this if you got more up to date information.
- Full integration in Visual Studio, with IntelliSense.
- Apparently there will be some restrictions as to what versions of Visual Studio will be supported by WiX 4.
- I don't have the details yet, but you will need a recent version of Visual Studio. I think there are good blog entries from Rob and Bob about this.
- It's free (!). Every developer can build the setup. Someone must own it though(!). Really ;-).
- It is Open Source too.
- The "community": https://github.com/wixtoolset. And the open issues: https://github.com/wixtoolset/issues/issues
- The toolkit download includes DTF too (Deployment Tools Foundation). .NET classes for dealing with all things MSI files with automation. See a sample inline here. Extremely useful and good quality. NO COM interop to deal with. See this serverfault.com post. And Chris Painter's blog.
- How do you get started? (direct link to an answer that has been well-received - to my surprise).
- For sample based tinkerers try this The Code Project article for a quick-start in how to create MSI files with WiX (WiX 3). It is really simple (if you know MSI it is self-evident).
- You can also read this WiX Stack Overflow article for further quick-start tips.
- NEW & RECOMMENDED: A stackoverflow answer showing the current minimal changes needed to compile a working MSI file when creating a new WiX project in Visual Studio: WiX installer msi not installing the Winform app created with Visual Studio 2017.
- And you can use WiX's dark.exe (MSI decompiler) to decompile an existing MSI file to proper WiX XML format and then study how it fits together. Very useful and educational - especially for advanced features.
- Current and future versions.
- Version 3.1 is stable and out (Released May 2017). Rock solid.
- Version 4 has been eight years in development at this point (August 2017).
- It is not clear when it will be available for stable release.
- It will apparently be a very major update that requires substantial rework to existing WiX files to use successfully.
- I can not provide any details on what the major differences are at this point.
- The stability and reliability of version 3 has no doubt been preserved.
Advanced Installer
- I have not used this for real development.
- Very easy to use, nice GUI.
- UPDATE:
- Extremely good integrated logging in the tool itself during development test installation. Very impressive.
- Also available for corporate repackaging in its "Architect edition".
- Feature rich. Compiles all kinds of setups and supports all new technologies (App-X, App-V, etc...)
- Support for App-V seems very extensive.
- Can import a number of other tools' source files (Installshield, Inno, Wix, Wise, NSIS, Visual Studio, Desktop Bridge, etc...). Not tested extensively by me.
- Stores projects in a proprietary text format as far as I can see.
- Seems solid, and crucially hides some MSI complexity via a good GUI that shows intuitive check boxes and options rather than SDK style flags and properties. This is a good thing, and missing completely from WiX at this point.
- Looks like it might be good for prototyping and testing, very strong GUI and automagic for commonly used features.
- I miss InstallShield's Release view with its release flags and build automation settings as well as other release management features (could be improved by now).
- Overall a solid tool that looks best suited for developers looking for an easy way to get their applications deployed. Similar to Wise in that regard.
- Too little practical experience to write much more. Try it out.
Other Tools
- Orca is the free Windows SDK tool which allows binary MSI files to be opened, edited and to a certain degree compared. It also allows other operations such as generating transform files for modifying the MSI files and some other technical operations. A basic tool that I always like to have installed and available. There is a more extensive Orca paragraph here discussing its use (look towards the bottom). You normally have to install the Windows SDK to get hold of Orca (just install the latest version and search for the tool).
- A free tool called "Super Orca" has been recommended to me, as has "InstEd". I have used them only briefly, but they look OK, and they are easier to get hold of than Orca (no Windows SDK to download).
- And there are also many other tools. Here is a list of tools from http://www.installsite.org with an indication whether the tool is still actively maintained or not: http://www.installsite.org/pages/en/msi/authoring.htm (with thanks to Phil Wilson for the link - I couldn't resurrect his answer).
- I suppose I can also include a link to wikipedia's list of installation software.
Tool Recommendations?
It is not my place to make direct tool recommendations. But I guess I can make some "observations" and provide some further links for decision making.
For any serious in-house development team I would suggest WiX. Where other tools have ease of use (which is very important, and sometimes the only thing that is important), WiX excels in its flexibility, extensibility, stability and the use of XML text source files - with the penalty of being somewhat involved to deal with. And due to its free license every developer can view and compile the source and changes are easily tracked, reverted or approved. Managing a process with developers all updating a single WiX source still has its challenges though (no different from regular development work - nothing is easy).
For corporate repackaging (which admittedly is a little beyond the developer focus of stackoverflow.com) I guess the major options at the moment are Flexera AdminStudio and Advanced Installer Architect. There are also other products available, and as always installsite.org has details: Tools: Repackaging & Corporate Deployment.
For small development teams looking for a quick and easy way to deploy their applications, I guess Installshield and Advanced Installer are the most common "GUI based" tools. They provide a lot of features, and your will be able to deliver a setup quickly. As already stated, sometimes this is the only thing that is important. Very often in fact. It is, however, possible to deliver a great installer using WiX instead - but a lot more knowledge is required. There is a learning curve, and there are some severe limitations - particularly with regards to GUI at the moment - but the base technology is very solid and free. And importantly there are many other tools (list from http://www.installsite.org) as well that may be more appropriate for your task - particularly if it is a simple application that just needs basic deployment features. It is "unfair" that I haven't provided more information about these tools that are quite capable, but less commonly used or established.
I should make it clear that I recommend WiX for corporate teams delivering in-house applications because they can use the flexibility provided by WiX and they will also have the available expertise and technical skill to deal with the complexity of WiX. And they can train new guys when needed. A very important issue. WiX is not trivial to learn unless you already have a lot of Windows Installer knowledge - then it is a piece of cake, but still takes time because it is so flexible and for lack of a better word: "fiddly" - it is like real development, you got real control but need to be precise. Once set up a WiX source can be a dream to deal with - you know what is going on.
To summarize: if you are a small (or large) third party vendor looking for a good way to get your application delivered quickly to your customers you are probably better off with a commercial tool aiming to provide ease of use and a quick solution to implement limited amounts of changes. For IIS, in particular, commercial tools have failed to provide the flexibility needed for me in the past. And in-house development teams should at least try WiX out.
Finally a word of caution: Advanced Installer, InstallShield and Wise generally allow packaging of software for virtualization. I am not aware of any features in WiX for this as of now. Please add comments or just edit this post if you have information here.
Top Practical Tip:
I generally use other tools for prototyping and WiX for implementation if I have a choice. You can use WiX's dark.exe (MSI decompiler) to decompile an existing MSI file. Sometimes I implement something in Wise or InstallShield, compile an MSI and decompile it to WiX format. Then I lift the WiX markup and dump into my main WiX file. Works great and usually very fast. This in combination with the heat.exe tool for automatic component creation enabled me to package a huge IIS web site in less than 10 minutes after some practice runs. Afterwards I have the full customizability provided by WiX, with the ease of use of the other tools.
Cleaning up the decompiled source is no picnic, but it is not rocket science either. Some MSI knowledge is needed and you will be "fiddling" for a while. Be aware that downloading trial versions of commercial tools to generate and decompile an MSI file is not recommended. The resulting MSI files are generally "watermarked" with features that are hard to remove.
Some Links:
- How to create windows installer
- Shortlist of deployment tools
Older content