Adding a New Chained .msi Package to Your Project

InstallShield 2020

Project:The following project types support multiple-package installations that use transaction processing:

Basic MSI
InstallScript MSI

InstallShield enables you to add already built Windows Installer packages (.msi files) to your project as chained .msi packages. Windows Installer 4.5 includes support for installing the 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 of the Releases view is where you add to your project one or more .msi packages that you want to be chained to your main installation.

Note:Windows Installer 4.5 includes support for installing multiple packages using transaction processing. Earlier versions do not launch any chained .msi packages.

If you want your installation to install Windows Installer 4.5, see Adding Windows Installer Redistributables to Projects to learn how.

To add an .msi package as a chained package:

1. In the View List under Media, click Releases.
2. Right-click the Chained .msi Packages explorer and then click New Chained Package. InstallShield adds a new item with a default name.
3. Enter a new name, or right-click it later and click Rename to give it a new name.

The name is not displayed at run time; it is an internal name that is used to differentiate between different chained .msi packages in the main installation.

4. Select the new chained package item. InstallShield displays its settings in the right pane.
5. For the Installation (run-time path) setting, click the Browse button. The Browse for File dialog box opens.
6. Select the Windows Installer package (.msi file) that you would like to add, and then click Open. The package that you select must be an .msi package that can be installed through MsiInstallProduct. Note that it cannot be an InstallScript MSI package.

InstallShield 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 *.* wild-card entry, InstallShield streams in the .msi package as well as all of the files in the same folder as the .msi package.
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 in the .msi package, since Windows Installer has limitations for the file size of .msi packages.

7. Configure the chained .msi package settings as needed. To learn more, see Chained .msi Package Settings.

If your main installation includes several chained .msi packages, InstallShield uses the Order column in the ISChainPackage table of the main installation to determine the order in which the chained packages should be launched at run time. All uninstallations are processed in reverse order, from highest to lowest order number; all installations are processed in forward order, from lowest to highest order number.

Note:If you have specified .msi packages in the Chained .msi Packages area in the Releases view, InstallShield does not build the chained packaged when you build releases for your main installation.

See Also