- option and property files
- INI files
- XML files
- Windows registry entries.
IzPack conditions can be used to allow certain configuration actionsConfigurationListener is useful for software updates and merges option (properties), INI and XML files from a previous installation to those files with the same path coming with a new version of your software. It does a three-way merge - patching an original file against a new file resulting in a target file. For using in-place patches you must ensure the previously installed files are automatically renamed when installing the new files coming with an update installer, before ConfigurationListener starts. This can be achieved by using the overrideRenameTo attribute for installed files or file sets, see Packs.
Configuration actions are defined in an IzPack resource ConfigurationActionsSpec.xml, which has to be necessarily defined when the ConfigurationInstallerListener is used.
Configuration actions can be only used during installation, not for reverting configurations when uninstalling.
The XPath property key to deal with.
The XPath property value to set the above key value to.
- Key begins on "matcher.":
Defines how to gather a matching pair of elements from the original and the patch document. Possible values:
Match the element names.
Match element name and attributes (names and values)
Match element name and the value of the attribute with the name "ID".
Match element name and the value of the attribute with the name "NAME".
Never match neither element names nor attributes.
- Key begins on "action.":
Merge implementation traversing element contents undependend of their order.
Note: This does completely merge all matching elements and attributes regardless of there order. This is more time-consuming than ORDEREDMERGE, but it is not necessary to rely on a well-ordered XML.
Merge implementation traversing parallelly both element contents. Works when contents are in the same order in both elements.
Note: This does completely merge all matching elements and attributes, assuming they appear in the same order comparing the patched file with the patch file. This action executes faster than FULLMERGE, but can lead to bad results if the order of both sides is different.
Copies the Add or replace - if there is a matching patch element if it exists, add it or replace an existing matching original element by it, otherwise keep the original matching element.
Copies the patch element if it exist in the originalJust replace an existing matching original element by a matching patch element, but don't add anything if the original element does not exist. If there is no matching patch element, keep the original if no corresponding patch element exists.matching element
Copies the patch element if it exists also in original, otherwise nothing is added. The original element won't be added in any case.
Copies the Just add a matching patch element, but only if it does not exist in the original document. in case there is no matching original element. Leave an original matching element otherwise, don't overwrite it.
Keeps the original element only if it does not appear in the patch document.
Copies the original regardless of the existence of patch element.
Copies the patch element into the output by inserting it after already existing elements of the same name. Usually applied with the matcher option "SKIP".
Copy the patch element in the output parent with the correct position according to the DTD defined in the document.
- Key begins on "mapper.":
How the matching element should be further transformed during applying the action.
There might be more transformations supported in future, filtering out elements and attributes with a specified namespace
Does not transform the element.
- Key begins on "xpath.path.":
The path to the particular XML elements which should be handled by the so numbered action, matcher and mapper (or their defaults). The XPath is a quite complex language, for more information see XML Path Language (XPath) Version 1.0, WikiPedia and many more documents and tutorials.