Chained .msi Package Settings

InstallShield 2019 » Releases View » Chained .msi Packages

Project • This information applies to the following project types:

Basic MSI
InstallScript MSI

Windows Installer 4.5 includes support for installing multiple packages using transaction processing. The packages are chained together and processed as a single transaction. If one or more of the packages in the transaction cannot be installed successfully or if the end user cancels the installation, the Windows Installer initiates rollback for all packages to restore the system to its earlier state.

The Chained .msi Packages area in the Releases view is where you identify .msi packages that you want InstallShield to include in your installation as chained packages. This area is also where you configure settings such as the properties that should be passed to the chained packages.

The Windows Installer chaining functionality supports any packages that can be installed through MsiInstallProduct; it does not support the chaining of InstallScript MSI packages.

Windows Installer 4.0 and earlier versions do not install any chained .msi packages.

Tip • To learn how to add Windows Installer 4.5 redistributables, see Adding Windows Installer Redistributables to Projects.

The following table describes the settings for chained .msi packages.

Chained .msi Package Settings

Setting

Description

Installation (run-time path)

Specify the name of the Windows Installer package (.msi file), or click the Browse button to browse to it.

If you click the Browse button, InstallShield automatically enters the product code for you. InstallShield also prompts you to specify whether you want to stream the .msi package—and its uncompressed files, if the .msi package is not compressed—into your product’s main .msi package:

If you specify that you want InstallShield to stream the files, InstallShield adds the name of the .msi package to the Installation (run-time path) setting. InstallShield also automatically adds either the file name (if it is a compressed .msi package) or the entry *.* (if it is an uncompressed .msi package) to the Streamed files box. For the *.* entry, InstallShield streams in the .msi package, all of the files in the same folder as the .msi package, and all of the subfolders and their files.

The value that you use for this setting is relative to a temporary extraction path. That is, you could add a streamed supporting file as Support\File.ext, and refer to it in the chained package as [SourceDir]Support\File.ext.

If you specify that you do not want InstallShield to stream the files, InstallShield adds the following path to the Installation (run-time path) setting:

[SourceDir]FileName.msi

You can change this path if appropriate. For example, you may want to use a path such as the following one, and also clear the Delete streamed files after installation check box:

[LocalAppDataFolder]{ProductCodeGUID}\FileName.msi

In this example, the .msi package is cached on the local system, and it is available for maintenance.

Tip • You may not want to stream many or large files in the .msi package, since the Windows Installer has limitations for the file size of .msi packages.

Product code

This setting indicates the product code of the .msi package that is being chained to your main installation. The product code is used for uninstalling the chained package when appropriate.

InstallShield automatically adds the product code for this setting if you use the Browse button for the Installation (run-time path) setting to select the .msi package.

UI level

Specify the user interface (UI) level that you want to be used for the chained .msi package. Valid options are:

Basic UI (/qb)—Display the built-in small progress dialog.
Full UI (/qf)—Display the modal and modeless dialogs that are available in the .msi package.
No UI (/qn)—Run the installation silently.
Reduced UI (/qr)—Display only modeless dialogs, such as the full-size progress dialog.

Install condition

Enter any installation condition that you want to use for the chained .msi package. If the condition evaluates to True at run time, the Windows Installer launches the chained .msi package if the chained package’s product has not already been installed.

The default condition is:

Not Installed

You can modify this if necessary. For example, if you are adding the chained .msi package to a minor upgrade and you want the Windows Installer to launch the chained .msi package during a first-time installation and during an upgrade, consider adding a condition such as the following one:

Not Installed OR REINSTALL><"FeatureName"

In this example, FeatureName is the name of a feature that will be updated if the main installation is running in upgrade mode. It will also be updated during a repair.

Note • At run time, the installation evaluates the install condition; if it evaluates to False, the installation evaluates the removal condition. If the install condition always evaluates to True (even during uninstallation of the main product), the removal condition is never evaluated, and the chained .msi package is never uninstalled. Therefore, you may want to avoid specifying an install condition that will always evaluate to True.

For information on condition syntax, see Conditional Statement Syntax in the Windows Installer Help Library.

Install properties

To pass one or more properties from the main installation to this chained .msi package during the installation, enter the properties and their corresponding values.

For example, to install a specific feature of a chained package to a subfolder of the main installation’s INSTALLDIR location, you could enter the following string for this setting:

INSTALLDIR="[INSTALLDIR]Subfolder\" ADDLOCAL=Feature1

Removal condition

Enter any uninstallation condition that you want to use for the chained .msi package. If the Install condition evaluates to False and the Removal condition evaluates to True, Windows Installer removes the chained package’s product if it is present.

The default condition is:

REMOVE="ALL"

For information on condition syntax, see Conditional Statement Syntax in the Windows Installer Help Library.

Removal properties

To pass one or more properties from the main installation to this chained .msi package during the uninstallation, enter the properties and their corresponding values.

This setting is often left blank.

Release flags

You can assign one or more release flags to a chained .msi package that you want to include in only certain builds. For example, if you have a chained .msi package that should be included only in a special edition of your product that contains a special add-on that requires the chained .msi package, you can flag that chained package and include it only when it is needed.

If you want to assign a release flag to this chained .msi package, enter it for this setting. The string that you enter can be any combination of letters or numbers. To have more than one flag on a chained package, use a comma to separate the flags.

Streamed files

This box indicates the files for the chained .msi package that are being streamed into the main installation’s package.

Use the Add File and Add Folder buttons to add more files or entire folders to the list of streamed files.

To specify an alternate extraction location, edit the entry’s Run-time path value by selecting and then clicking it again. InstallShield highlights the entry’s text, enabling you to edit it. The files are extracted to a temporary folder by default.

To remove an entry in this box, select it and then click the Remove button.

Delete streamed files after installation

If you want the installation to delete the streamed files after installation, select this check box. If the streamed files should remain on the target system, clear this check box.

It is generally most useful to let the files remain on the system only if you have extracted them to a non-temporary location, such as [LocalAppDataFolder]{PackageCode}\*.*, to cache an extracted package locally.

This check box is selected by default for chained .msi packages that included one or more streamed files. This check box is disabled for chained .msi packages that do not include any streamed files.

See Also