Welcome to OGeek Q&A Community for programmer and developer-Open, Learning and Share
Welcome To Ask or Share your Answers For Others

Categories

0 votes
209 views
in Technique[技术] by (71.8m points)

What installation product to use? InstallShield, WiX, Wise, Advanced Installer, etc


与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…
Welcome To Ask or Share your Answers For Others

1 Reply

0 votes
by (71.8m points)

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.

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":
    • 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.
    • <a href="http://soci

与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…
OGeek|极客中国-欢迎来到极客的世界,一个免费开放的程序员编程交流平台!开放,进步,分享!让技术改变生活,让极客改变未来! Welcome to OGeek Q&A Community for programmer and developer-Open, Learning and Share
Click Here to Ask a Question

...