Creating Suite Installations

Windows Installer is a great technology when it comes to creating an installer, but it falls short on the ability to chain multiple MSI installations.

While Windows Installer has predefined support, it’s still limited in what you can do with it. To fill this void, Advanced Installer offers the possibility to create suite installations, letting you chain multiple MSI packages and define command lines. The resulting EXE extracts the MSIs and installs them one by one according to what is configured.

You can also use scripting tools like PowerShell App Deployment Toolkit, which we cover in a later chapter, to create a chain installation of multiple installers.

Now, let’s go through how to create a single bundle installation for multiple applications.

In our example, we will just use three applications, but you can use as many as you want. This gives your users a simpler UX during the installation they will be able to download a single setup package and use that to install all of your applications.

For this example, we will work with three applications, one is a license manager and the other two are separate applications that are deployed to users. The license manager would be used by all users to handle their credentials in the other two applications.

Create the project

To create a project, the first step is to create a new empty Enterprise project without using the wizard. If Advanced Installer is not currently running, launch it by double-clicking a desktop icon or selecting it from the “Start“ menu. When the application starts, you will see a dialog where you can choose the “Installer” > “Enterprise” project type.

New Project in Advanced Installer
New Project in Advanced Installer

Don’t forget to untick the “Use wizard to create the project.“ option. As we mentioned, for this project you need to start with an empty project, so you can skip the wizard.

Project Options
Project Options

Setup your suite installer product details

In the “Product Details“ page, you need to configure the information from groups “Product Details“ and “Add and Remove Programs (Control Panel)“.

The most important step here is to untick the “Register product with Windows Installer“ option.

By disabling this option, you will make sure that your bundle installer will never appear in the Control Panel list of installed applications. There, you will only see the real applications that the bundle will install, each with its separate entry. Let's see how you add those applications in the project.

Product Details
Product Details

Add your setup packages

To add your setup packages:

  1. Go to the “Prerequisites“ page, where you need to add each package as a “Feature-based“ prerequisite. This will result in having a new feature created for each package in the Organization page. By setting conditions on the features (explained later in this tutorial), you will be able to control which applications get installed or not.
    Feature-based Options
    Feature-based Options
  2. After you add the packages, you can select each one of them and continue configuring it from the right side pane. You will have three tabs, “Properties“, “Setup Files“ and “Install Conditions“. Each of these tabs contains important settings that you must define.
  3. In the “Properties’’ tab, you must define the name of your package and other related information. In ‘Setup Files’,’ you will find a high-priority area to customize: the “Install Command Lines“. These command lines get passed to your packages when the bundle installer will execute them. It is important to set the application to install silently. For MSI packages the command line is /qn and for EXE packages built with Advanced Installer, it is /exenoui /qn.

In the below image you can see a set of the command lines. It starts with the “/qn” option to specify this is a silent installation, then it sets the property APPDIR with the value of the parent installation folder, and at the end, it sets another property from the installer, configured to store a port number in this example.

Install Command Lines
Install Command Lines

In the “Install Conditions” tab, you must select the option “Always install prerequisite” for all packages, be it MSI or EXE. Create a custom selection dialog

Create a custom selection dialog

By now you’ve seen that our samples use the Graphite theme, but the same applies to other themes too. You can change the installer theme from the “Themes“ page, “Preview“ tab.

Since your suite installation will install three different applications, you might want to let the user select which application to install. This is an optional step and you may skip if you want your users to always install all available applications.

In this step, we will show you how to create a new installer dialog with custom controls on it. For this scenario, we’re using simple checkboxes from where the suite installer will decide which application to install.

  1. First, you should remove the “FolderDlg’’ predefined dialog from the list, since it is not useful for suite installations. You can do this directly from the Dialogs page.
  2. Once that’s clear, you can create a new empty dialog on which you can add the texts and checkbox controls, from our toolbox, to get a dialog similar to the one below.
    Resulted Suite Installation Dialog
    Resulted Suite Installation Dialog
  3. Each checkbox has a property attached to it, visible in the right side pane from Advanced Installer when you select the checkbox control. This property must be set in the Organization page as an install condition for the corresponding feature.

Additional Install Options

In the Dialogs page, you can create and chain as many new dialogs as you wish. You can show certain dialogs only if a specific application is selected to be installed, or you can hide/show, enable/disable UI controls from the dialogs.

In the image below, there is an example of capturing the parent install path for all applications. We say it is the parent install path, because at the end of this path, we instruct the application to create their own subfolder, by adding this folder in the command line set.

For example, for the second application, we create the subfolder “SecondFolderApp“ (as you can see in the screenshot from step 3).

Also, we capture the port number for the second application and pass that through the command line too. As seen in the image, all the parameters required by the actual installers are passed in their command lines. There is no other way to pass information from the suite installation to the independent installer packages.

Suite Installation Additional Options
Suite Installation Additional Options

Configure Output Package

To make your suite installation as a single package, you must go to the Build page and set the package type to “Single EXE setup(resources inside)“, this will make Advanced Installer generate a single EXE as an output that your users can download.

Another important configuration you need to enable is the option “Run as administrator“ from the “Install Parameters“ page. This option is important as it will ensure your applications inherit the elevated credentials from the bundle installer, so they can install accordingly. Disabling this option may lead to failed installations.

Build Project

Now that you have finished configuring the project, you can build the bundle. Advanced Installer will build a single EXE package which contains all of your applications, MSIs or EXEs, and will silently install them based on the user’s selections.