Two of the major contenders in the installation packaging space are InstallShield and Advanced Installer.
Overall, if you compare the 2 solutions side-by-side for features and functionality, Advanced Installer would win by a landslide since it supports many more project types than InstallShield as well as numerous features for rapid development of installation packages. This, coupled with the fact that Advanced Installer releases updates nearly every month, makes Advanced Installer the clear winner.
Therefore, this feature comparison between the 2 products is really about overall usability and ability to quickly and easily develop installation packages. Since there are far too many features to cover in a single Blog Post, I will cover the major features and functionality needed to deploy an ASP.NET Web Application.
InstallShield handles XML Files much differently than Advanced Installer. It provides a completely separate screen for managing XML Files. This requires specifying the final destination path through the use of properties, thus segregating the view of the XML File from the actual target destination in the Files and Folders view. You can either construct new XML Files or Import existing XML files. The way the elements and text are matched for existing text files is very poorly handled overall since it is largely based on existing text in the XML file to perform appropriate matches. Problems with XML File handling in InstallShield has been plaguing InstallShield for years and years and it does not seem to have improved significantly even in the most release of InstallShield (InstallShield 2014).
Advanced Installer provides significantly better functionality in handling XML files by directly integrating this functionality into the Files and Folders view. As you can tell from the above screenshots, the handling of XML files is much cleaner in how the elements and attributes are displayed. Even though the Import XML Dialog does not provide a built-in file extension filter for *.config files, Advanced Installer still recognizes .config files and handles them appropriately through its XML feature.
IIS Web Site/Application Creation
InstallShield does not offer much in the way of IIS management. InstallShield allows you to create a new web site or create a scan of an existing Web Site and import its configuration. However, InstallShield is completely lacking in terms of providing dialogs for handling user selection of IIS websites. Instead, the user is expected to completely handle this functionality on their own.
Advanced Installer is significantly better in handling IIS creation and management by not only offering the ability to use existing websites such as the Default Web Site, but also providing a nice easy-to-use Wizard to create a Browse IIS Dialog that can be used to provide user input for IIS Website selection.
SQL Database Scripts
In this instance, InstallShield really, really shines. SQL Database handling provides a very nice dialog to browse for SQL Server instances and databases as well as provides an easy way to manage SQL Connections and adding and importing SQL Scripts. InstallShield even provides validation capabilities for versions of SQL Server to ensure that the installation package only installs on supported versions of the database platform.
Advanced Installer does not really offer much in the way of SQL Database handling. The built-in Dialog capabilities provide the ability to browse SQL Server instances and SQL Server databases, but does not offer the unified look and feel of the dialog provided by InstallShield nor does Advanced Installer provide the additional database platform validation capabilities provided by InstallShield.
Files and Folder Handling
InstallShield really fails on usability in the area of Files and Folder management. In order to set up Dynamic File Links, one has to go into the Components view and set up Dynamic File Linking. These capabilities are not available directly from the Files and Folders view in InstallShield.
Advanced Installer provides an easy and intuitive way to support dynamic file linking through a feature they call "Synchronized Folders". Fortunately, this is configured directly through the Properties dialog in the Files and Folders view rather than having to go into Components view to manage this.
Dialogs and Themes
InstallShield has not really changed or updated their dialog capabilities at least for the last 6 years or so. The Dialog Themes that have been there since at least InstallShield 2008 are still there today in InstallShield 2014. The one nice feature for Dialog management in InstallShield is the ability to Clone Dialogs. Other than that, however, managing Dialogs and sequencing for Dialogs is a complete nightmare in InstallShield. Any break in the sequencing of controls in an InstallShield Dialog can completely destroy and ruin an installation package. In addition, the sequencing of Dialogs is handled on the Custom Actions and Sequences section of InstallShield, thus requiring the developer to move from the Dialogs section to the Custom Actions and Sequences section just to see the final/eventual order of the Dialogs.
Advanced Installer, while it lacks the ability to Clone Dialogs, is overall much more user friendly and once again excels in having a unified interface. Dialog sequencing can be done directly from the Dialogs view through Drag and Drop operations and each of the Themes provide numerous accompanying styles to choose from as well as thoroughly modernized styles to match the latest themes shipped with Visual Studio over the past few years.
InstallShield lumps together Custom Actions with the Custom Actions and Sequences section, so the interface looks quite cluttered. However, the display of the various colorful icons for the various icons makes it relatively easy to identify the different types of Custom Actions that have been configured. There are also limitations to some of the Custom Actions such as the PowerShell Custom Action which does not support the passing of parameters to the PowerShell Custom Action.
Advanced Installer takes a much simpler approach to managing Custom Actions by putting Custom Actions into User Friendly terminology that identifies what types of tasks the developer wants to perform rather than simply providing a list of all of the various types of Custom Actions that are available. This makes it easier to choose a Custom Action to perform any necessary operations required for the installation package.
InstallShield provides a very nice Grid for managing all of the Properties. However, choosing properties throughout most of the IDE is a largely manual process. If any of the properties or mistyped or misspelled, obviously, the properties will not work as part of the package.
If you are creating Custom Properties, then you will need to add Install Parameters:
Unfortunately, this aspect of Advanced Installer is pretty primitive compared to what is offered by InstallShield, however, while lacking the pretty Grid for managing and editing properties, Advanced Installer is much more functional overall throughout the IDE. The Advanced Installer IDE provides Intellisense and property picking throughout the entire IDE thereby making it easy to choose and find existing properties to use throughout the installation project resulting in a more reliable final installation package.
InstallShield provides a very long list of Redistributables/Prerequisites for downloading and including the project, but provides no standardized groupings for the prerequisites thereby forcing the developer to search and filter through the list for the appropriate prerequisite to include as part of the installation package.
Advanced Installer once again excels in the management of Prerequisites by grouping the various prerequisites into logical, standardized groupings for .NET Framework, Database, Internet Explorer etc.
InstallShield provides a very limited set of Launch Conditions for the installation package:
Advanced Installer does a much better job of providing a whole array of launch conditions to choose from including items like system memory and display resolution:
InstallShield offers a very convenient feature in that it allows you to easily browse back and forth between the Installation Designer view and the Project Assistant/Wizard view:
While Advanced Installer does not offer the same capability, the initial wizard that it provides is much more functional for deploying certain types of applications such as ASP.NET Web Applications:
Virtual Machine Deployment
InstallShield introduced VM deployment with InstallShield 2014 and offered a rather nice way of managing it:
When I tried setting up the VM Profiles in Advanced Installer (v. 12.2), I was not even able to edit the VM Profiles since I was working with Advanced Installer directly within a VM :
NOTE: Advanced Installer support notified me that this currently only works when Advanced Installer is installed on a physical host machine rather than within a Guest OS.
InstallShield has a nice grid for managing Path Variables similar to what is provided for the Property Manager:
Advanced Installer does not offer as nice of an interface for managing Path Variables and the detection of Path Variables tends to be much more unreliable than InstallShield in this regard:
In this area, InstallShield blows away Advanced Installer hands down. InstallShield offers a very feature-rich COM-based API that lets you access and manipulate nearly every aspect/facet of the installation project as well as a standalone build installation package that can be used specially for deploying to Build Servers.
Advanced Installer, while recently offering plugins to Continuous Integration servers such as Jetbrains TeamCity, is still largely a very command-line driven application and numerous areas of automating Advanced Installer are not available or are very poorly documented.
InstallShield offers the ability to include automatic updates for your installation package but requires you to purchase Flexnet Connect which is a very pricey hosted service for hosting update packages:
Advanced Installer takes a much more generous approach and offers the ability to distribute automatic updates yourself:
InstallShield offers great right-click context menus as well as the ability to import as well as export registry keys:
Advanced Installer, unfortunately, only offers the ability to import Registry keys, but no way to export them back out for future reference:
In the area of Team Collaboration, InstallShield offers a feature called DIM References which allows a group of installation package developers to provide specific requirements for inclusion as part of the final installation package. These DIM References can then be aggregated and compiled to form a final installation package:
Advanced Installer currently does not offer such a feature to facilitate Team Collaboration in the same manner.
InstallShield offers a set of tools to assist with working with MSI files (including an MSI Debugger
), but Advanced Installer does not ship a similar set of tools:
InstallShield does not offer any direct support for SharePoint packages, but Advanced Installer does:
InstallShield does not offer any direct support for Silverlight, but Advanced Installer does:
SQL Server Reporting Services
InstallShield does not offer any direct support for SQL Server Reporting Services, but Advanced Installer does:
Based on the above comparison, both of these tools address different needs. InstallShield lacks many usability features that Advanced Installer provides, but excels above and beyond Advanced Installer when it comes to overall flexibility as well as build automation for use in continuous integration processes. If you are looking for a very easy-to-use installation package with minimal build automation capabilities, Advanced Installer remains the clear winner for overall usability, but now you can decide for yourself.