Best Practices for Building Multi-Platform Installers

by Robert Dickau, Principal Technical Training Writer, Flexera Software


A well-planned installation and deployment strategy should be part of any serious software development project. When the installer is an afterthought, the result is usually a poorly prepared first impression for end users. In practice, however, this critical requirement is sometimes ignored until the software is complete.

Why wait until the product is ready to be released before thinking about deployment?

This white paper will assist developers of multi-platform applications create professional, reliable installations that make a favorable first impression for your products. It covers the fundamentals of installation planning and shows you how to use InstallAnywhere from Flexera Software to manage the different aspects of your installation projects according to proven best practices.

Learn More about InstallAnywhere

If you wish to learn more about the capabilities of InstallAnywhere, please visit the Flexera Software Web site at

The Need for a Professional Installation Utility

Regardless of whether your end user is a member of the general public, a consulting client, or another group within your own organization, it is unlikely that the product will simply be checked out of a source control solution and the resources laid immediately into their final operational location.

Once you have made your Gold Master, how does the software make its way to your customers? Will it be enough to simply deliver an archive such as a .zip or .jar file, or a Unix tarball? This method allows you to deliver a number of different file-types as a single unit. This is one deployment option, and it is easier than having your end user login to a source control solution, or copy individual files.

However, this method has inherent weaknesses. Rarely can a collection of files be simply laid into a file system, and be ready for one-click execution without some measure of configuration. What if the application requires installation into several locations? What if portions of the installation require configuration prior to use?

Today’s sophisticated software applications require complex configurations, and complex configurations require installation utilities. You can choose from a variety of methods and types of installation utilities. Windows and Macintosh users are familiar with the executable installer (for example, InstallAnywhere from Flexera Software), while users of Unix systems are accustomed to deployment schemes that utilize complex scripts or native package managers. Installation utilities allow you to provide your end users with a familiar interface, assuring a positive product installation experience with a minimum of inconvenience.

Many ready-made solutions are available for specific target platforms. For example, RPM is a packaging system that generally functions only on Linux (though it has been introduced to other mainstream Unix and Unix-like distributions). Such targeted solutions are not useful for multi-platform deployment.

Multi-platform deployment—while once unusual—is no longer a fringe issue. More platform-agnostic software development is being done in languages such as Java, Perl, Python, PHP, and those outlined by the .NET standards. In order to keep pace with this new development landscape, you need a tool that deploys and configures your applications on many different platforms.

Installation Planning

Occasionally, you will find that planning an installation is simple. Put the files to disk in their specified location, and the application will just work. However, this situation is usually not the case. In today’s world of systems integration, installation stacks, suite installers, and client-server application development, you are far more likely to run into a very complex installation scenario-one requiring multiple steps, multiple products, and intricate configuration steps.

The idea behind using a fully featured installer such as InstallAnywhere is to minimize the impact that this sort of complexity will have on your customers and your end users.

As such, it is important to carefully plan your installation process and installation needs prior to beginning development.

Installation Goals

When planning your installation process, consider the goals and targets of your installation.

  • Is it required to allow a non-technical end user to install a complex product or as a highly flexible installer that can be used in a number of environments by expert users?
  • What platforms and architectures will your deployment project target?

Working with Advanced Designer

The InstallAnywhere Advanced Designer has an intuitive, graphical interface which allows developers to manage all aspects of their installer project. All the features of InstallAnywhere are available in this easy to use integrated development environment.

To access the InstallAnywhere Advanced Designer, click the Advanced Designer button after selecting a project file or creating a new project.

The Advanced Designer is divided into “Tasks”, which are represented by tabs found along the left side of the window. Each tab represents tasks and settings specific to each installation project.

The following table provides Advanced Designer task descriptions.

Name Description
Project Settings related to your specific project. These include general settings, file settings, and localization settings.
Installer UI Set the look and feel for the installer by adding background images, billboards, and other graphical elements.
Organization Manage Install Sets, Features, Components, and Merge Modules.
Pre-Install An ordered sequence of panels and actions that occur before file installation.
Install Manage the file installation tree and installation-time actions.
Post-Install An ordered sequence of panels and actions that occur after file installation.
Pre-Uninstall An ordered sequence of panels and actions that occur before file uninstallation.
Post-Uninstall An ordered sequence of panels and actions that occur after file uninstallation.
Build Manage build settings, including bundling of a Java Virtual Machine.

Each Advanced Designer task contains sub-tabs that offer greater fine-tuning of InstallAnywhere’s features. For an example, refer to the Advanced Designer tutorial.

Defining Installer Projects and the Product Registry

Product Registry

The product registry is essentially a product configuration database which keeps track of features and components of products for the operating system. It is the product registry which accomplishes tasks such as associating file name extensions with applications. InstallAnywhere makes entering vendor and product information to uniquely identify their product in the product registry information easy.

Note: Correctly setting the Product ID and Version are critical to using the Find Component in Registry action. It is by checking the Product ID that InstallAnywhere finds the locations of components in the Registry.

Product ID and vendor information is entered in the Project > Description subtask.

This is an excerpt. Download the entire pdf: Best Practices for Building Multi-Platform Installers