The term LANSA Feature refers to the Deployment Tool's list of LANSA Additional Features such as Install Listener and Settings such as Deploy LANSA Execution Environment.
In order to allow multiple applications to be installed into one directory structure, the LANSA Features included in a Package must be optional. Only one Package may be responsible for installing any one feature. For example, the LANSA Execution Environment must only be installed by one Application. This is particularly important when uninstalling. If an optional Application included the LANSA Execution Environment and it was uninstalled, the entire Feature Set would be broken. Thus, all LANSA Features are mutually exclusive. One and only one Application may install a LANSA Feature. This is enforced by the Version Installer File.
An example of a simple Application structure is to install all LANSA Features in a Base Application and then include only LANSA executable artefacts in optional Applications.
The LANSA Execution Environment is mandatory. When an Application which does not include it is installed, it must be installed into a directory which already contains the LANSA Execution Environment. This is enforced by the Version Installer File.
When uninstalling, the first or base application installed (which must have installed the LANSA Execution Environment) must be the last Application uninstalled. This is enforced by the Version Installer File.
When installing a Version Installer File, all LANSA features shipped in the Version Installer File are checked to see if any are already installed. If so, the install will terminate with a clear message indicating which feature(s) is already installed.
Upgrading any Application, and in particular the Base Application, will not affect any of the other Application installations. All files will be left in place. This will only be possible if each Application install is mutually exclusive. Hence the checks, described above, to ensure that a LANSA feature is not already installed. And that goes for any application objects, shortcuts, and so on. LANSA does not check for mutual exclusion of non-LANSA Features so it is important for the LANSA developer to test that this is the case by taking snapshots of the Feature Set installation directory before installing each option and then uninstalling that option and ensuring that nothing that was there originally has been altered in anyway. The snapshots may be compared using a Diff Tool. Other installation settings like shortcuts should be checked with a PowerShell script so that it may be run quickly as part of an installation test.