Merge Modules

InstallAnywhere 2020

Merge modules are essentially installer subprojects that can be created independently of one another and later merged together. Like an installer, a merge module is a reusable collection of installation functionality, complete with features, components, panels, actions, and files.

However, a merge module cannot be installed on its own; instead, developers use merge modules when they want to include the functionality of one installer within another installer.

Note • For instructions on creating merge modules, see Creating Merge Modules.

Benefits of Using Merge Modules

Merge modules provide many benefits and provide solutions to complex installation requirements. For instance:

Benefits of Using Merge Modules

Benefit

Description

Can Use to Create a Suite Installer

Combine several merge modules from different products to create a “Suite Installer.”

Can Be Used by Independent Development Teams

Independent development teams in different locations can create merge modules for different software components. A release engineer can combine those merge modules into a single product installer.

Self-Contained Units Can Be Reused in Future Installer Projects

Create self-contained units of installer functionality for reuse in future installer projects. For instance, if the same software component needs to be in several different installers, build it into a merge module and make it available for all of the installer developers.

Enables You to Store Common Installer Functionality

Save common installer functionality, such as License Agreement panels and Custom User Input panels, into merge modules to simplify future installer project creation.

Can Combine With Third-Party Software Packages

Combine merge modules from third-party software packages to build complex software solutions, without having to figure out how to install each individual package.

Using Third-Party Merge Modules

InstallAnywhere provides many third-party merge modules on its Web site.

Use as a template—You can use a merge module as the starting point for a new installer project. These merge modules are referred to as Templates, and are covered in another section.
Combine with installer projects—Any installer project can be built into a merge module. And any merge module can be used within any other installer project.
Create during installer build process—Merge modules are created as an option through the installer build process. Since a merge module contains all of the resources for a project, it is just like building an installer. They can be built automatically when the installer is built, or they can be explicitly built from the Advanced Designer (select the Build Merge Module/Template option, which is available on the Distribution subtab on the Build Configurations tab in the Build Installers view) or from the command line (use the +merge option).

Methods to Add Merge Modules to an Existing Installer

Merge modules can be merged into an existing installer in one of three ways:

Methods to Add Merge Module to an Existing Installer

Method

Description

Import Dynamic Merge Module

To merge a merge module into the current installer: On the Organization page, in the Modules view, click Import Dynamic Merge Module.

All of the merge module’s files, actions, and panels (optionally) will be combined into current project.
The actions will appear as in an Action Group in Pre-Install and Post-install.

Dynamic merge modules are recommended if you have merge modules whose contents constantly change. A parent project will automatically refresh dynamic merge modules when the parent project is loaded and built.

Import Merge Module

To merge a static merge module into the current installer: On the Organization page, in the Modules view, click Import Merge Module.

All of the merge module's features, components, files, actions, and panels (optionally) will be combined into the current project, allowing developers to further customize any settings.
Static merge modules are recommended if you want import features and components and if you want more freedom in the place actions.
Changes made to a static merge module will not be noted in the parent project.

Installed as Self-Contained Sub-Installer Units

Merge modules can also be installed as self-contained sub-installer units, without merging them into the current project.

This is useful if developers do not know what will be in a merge module, or they will not be modifying any settings. Merge modules that are added in this manner are run as silent sub-installers.

Integrating Merge Modules Into Projects

Merge modules can be integrated with a project in one of two ways:

Methods to Integrate Merge Modules Into Projects

Method

Description

Bundle Merge Module at Build Time

Use the Install Merge Module action and select Bundle Merge Module at Build Time, if the merge module is available when ready to build the installer. These merge modules will be included in the actual generated installer.

Locate Merge Module at Install Time

Use the Install Merge Module action and select Locate Merge Module at Install Time to have the installer install a merge module that is available at install time, but external to the installer. The merge module can be either on the end user's system or stored on a CD. If the location is a folder that contains several merge modules, they will all be installed.

Note • Subinstallers (merge modules) are able to access the external resource bundle of their parent installer during uninstallation.

Size Limitations of Merge Modules

The size at which a merge module build fails depends on the amount of memory that is allocated to the build process. If the amount of memory that is allocated is very low, even small merge modules may fail.

You can specify the size of memory allocation using the lax.nl.java.option.java.heap.size.initial and lax.nl.java.option.java.heap.size.max properties in the build.lax file. They correspond to -Xms and -Xmx flags for the Java VM.

Memory Allocation of Build Process

Property

Code

Heap Size Initial

# LAX.NL.JAVA.OPTION.JAVA.HEAP.SIZE.INITIAL

# -----------------------------------------

# the initial heap size for the Java VM

 

lax.nl.java.option.java.heap.size.initial=25165824

Heap Size Maximum

# LAX.NL.JAVA.OPTION.JAVA.HEAP.SIZE.MAX

# -------------------------------------

# the maximum heap size for the Java VM

 

lax.nl.java.option.java.heap.size.max=134217728

See Also