1. Background

The installer application can be configured by an XML file. It can be used to localise the installer, locate skinning information and specify what is to be installed. It can be changed with any standard text editor. It is easy enough to understand once you have read what each XML tag does.

2. File Format

Here is a list of all the XML tags used by the system showing how they relate to each other. To see what each tag does please read its description in the Known Tags section below.

It is important that the tags are kept in the order specified below. If you place the <LANGUAGE> tag above the <INSTALLATION> tag you will get parsing errors as the language tries to find an installation that has not been parsed yet. To be safe keep all the tags in this order.

<INSTALLER show_frame_rate="" show_filepaths="" show_filenames="" file_cache_sz="" default_language_title="">

        <APPLICATION version="" build_number="" app_string=""/>
        <WINDOW width="" height="" fullscreen="" show_bg_title=""/>
        <DIALOG x="" y="" width="" height="" button_gap=""/>
        <EXIT width="" height=""/>
        <ERROR width="" height=""/>
        <BACKGROUND path="" filename="" speed="" width="" height="" start_offset_ms=""/>
        <LOG dest_path_from_inst_loc="" system_dest_path_from_inst_loc=""/>
        <SKIN path=""/>

        <INSTALLATION name="" allow_system_paths="">

                <FILE platform="" src_name="" dest_name="" src_path_from_xml="" dest_path_from_inst_loc="" system_dest_path_from_inst_loc=""/>
                <FOLDER src_path_from_xml="" dest_path_from_inst_loc="" system_dest_path_from_inst_loc=""/>

                <DESKTOP_SHORTCUT platform="" type="" command="" title="" icon_path_from_inst_loc="" icon_syspath_from_inst_loc="" icon_name="" path_from_inst_loc="" syspath_from_inst_loc="" />
                <OS_MENU_SHORTCUT platform="" type="" command="" title="" menu_group="" icon_path_from_inst_loc="" icon_syspath_from_inst_loc="" icon_name="" path_from_inst_loc="" syspath_from_inst_loc="" />

        </INSTALLATION>

        <LANGUAGE title="">
                <INSTALLER_TITLE string=""/>
                <QUIT_TITLE string=""/>
                <QUIT_MSG string=""/>
                <QUIT_YES string=""/>
                <QUIT_NO string=""/>
                <COPY_ERROR_TITLE string=""/>
                <COPY_ERROR_MSG string=""/>
                <COPY_ERROR_YES string=""/>
                <COPY_ERROR_NO string=""/>
                <FORWARD string=""/>
                <FORWARD_HINT string=""/>
                <PREVIOUS string=""/>
                <PREVIOUS_HINT string=""/>
                <AGREE string=""/>
                <AGREE_HINT string=""/>
                <DISAGREE string=""/>
                <DISAGREE_HINT string=""/>
                <QUIT string=""/>
                <QUIT_HINT string=""/>
                <ABOUT string=""/>
                <ABOUT_HINT string=""/>
                <INSTALL string=""/>
                <INSTALL_HINT string=""/>
                <FINISH string=""/>
                <FINISH_HINT string=""/>
                <SELECT_LANGUAGE string=""/>
                <LICENCE_TITLE string=""/>
                <README_TITLE string=""/>
                <INSTALL_TYPE_TITLE string=""/>
                <SELECT_OPTIONS_TITLE string=""/>
                <SELECT_OPTIONS_LOCATION_QUESTION string="" />
                <SELECT_OPTIONS_USE_SYSTEM_PATHS string="" />
                <SELECT_OPTIONS_SHORTCUT_QUESTION string="" />
                <SELECT_OPTIONS_DESKTOP_SHORTCUT string="" />
                <SELECT_OPTIONS_MENU_SHORTCUT string="" />
                <INSTALLING_TITLE string=""/>
                <INITIALIZING_STRING string=""/>
                <INSTALLING_STRING string=""/>
                <INSTALLING_DESKTOP_SHORTCUT string=""/>
                <INSTALLING_MENU_SHORTCUT string=""/>
                <PACK_DATA_TITLE string=""/>
                <PACK_LOG_TITLE string=""/>
                <COMPLETE string=""/>
                <OK_BUTTON string=""/>
                <CANCEL_BUTTON string=""/>
                <NEW_FOLDER_BUTTON string=""/>
                <SELECT_FOLDER_TITLE string=""/>
                <SELECT_FOLDER_MSG string=""/>
                <SELECT_FOLDER_MENU_TITLE string=""/>
                <MY_COMPUTER string=""/>
                <NEW_FOLDER_TITLE string=""/>
                <NEW_FOLDER_MSG string=""/>

                <INSTALLATION name="" string=""/>

                <LICENCE path="" filename=""/>
                <README path="" filename=""/>
        </LANGUAGE>

</INSTALLER>

3. Known Tags

Below is a detailed description of all the XML tags the installer understands. If you enter any other tags you will get a parsing error so please be careful when writing your XML configuration file.

4. Platform Filter

The platform filter can be used to control which platforms a file or folder should be installed on. Its is mainly used to make sure the different application builds are only installed on the system they work on. For example, there is not use installing a MacOX build on a windows PC as it will not run. The platform attribute can contain one of the following.

Here are some examples on how to use the platform filter:

platform="lsb"::
        This will install the relevent files on all systems with a Least Significant Byte First processor.

platform="macosx"::
        This will install the relevent files on all computers runing a version of MacOS X.

platform="windows:xp,2000"::
        This will install the relevent files on computers runing 32bit Windows XP or 32bit Windows 2000. It will not install those files on any other version of windows.

platform="windows:7_64"::
        This will install the relevent files on computers runing 64bit Windows 7. It will not install those files on any other version of windows.

4.1. <INSTALLER>

This is the root tag and must be at the top of the XML file. There should only be one definition surrounding all other tags.

4.1.1. <FILE>

This tag identifies a file to be installed. You need to tell the installer where to get the file from and were to put it during the installation.

5. Disk Paths

The core design of the P.I.S.D. Layers aims to remove platform specific knowledge. One of the areas where this is most obvious is disk paths. Each OS has its own way to identify and handle disk drives and devices. For example Microsoft Windows uses driver letters (c:\, d:\, etc) which are not understood on Apple Mac or Linux. The P.I.S.D. Layers handle this by creating a set of useful locations the core of which are relative to the application location. This allows paths to have a sensible meaning on all the platforms supported by the P.I.S.D. Layers. That way a path saved on one platform has a good chance of working on another.

The locations can be considered equivalent to drive specifications. You can append sub-folders using the / character. Do not use a the windows \ character as it is not supported. So to set the path to an installed data file in the sub folder "my-path" you should use "$INSTDATA/my-path".

Here are the known folder locations:

$APP

location of the running program

$APPDATA

system specific location of shared, installed, read only data (set to $APP/data)

$USERAPP

location of user specific applications that can be installed by the current user. (if folder not found it is set to $APP)

Windows: CSIDL_APPDATA\<app_name>
        98/XP/2k = C:\Documents and Settings\<username>\Application Data\<app_name>
        Vista/7  = C:\Users\<username>\AppData\Roaming\<app_name>
Mac:     kCurrentUserFolderType/.<app_name>/bin
        /Users/<username>/.<app_name>/bin
Linux:   ~/.<app_name>/bin
$USERDATA

User specific location of installed read/write data that can be installed by the current user. Data in this folder should not require the user to access it from outside the application. (if folder not found it is set to $APP/data)

Windows: CSIDL_APPDATA\<app_name>
        98/XP/2k = C:\Documents and Settings\<username>\Application Data\<app_name>
        Vista/7  = C:\Users\<username>\AppData\Roaming\<app_name>
Mac:     kCurrentUserFolderType/.<app_name>/data
        /Users/<username>/.<app_name>/data
Linux:   ~/.<app_name>/data
$USERPREFS

system specific location of user customizable data/preferences that can be installed by the current user. Data in this folder may require the user to access it outside the application using 3rd party tools such as a text editor. (if folder not found it is set to $APP/data)

Windows: CSIDL_PERSONAL\<app_name>
        98/XP/2k = C:\Documents and Settings\<username>\My Documents\<app_name>
        Vista/7  = C:\Documents and Settings\<username>\My Documents\<app_name>
Mac:     kDocumentsFolderType/<app_name>/custdata
        /Users/<username>/Documents/<app_name>
Linux:   ~/.<app_name>/custdata (Symlinked to ~/Documents/<app_name>)
$SYSAPP

location of system wide applications and can only be installed with root access (if folder not found it is set to $APP)

Windows: CSIDL_PROGRAM_FILES\<app_name>
        98/XP/2k = C:\Program Files\<app_name>
        Vista/7  = C:\Program Files\<app_name>
Mac:     /Applications/<app_name>
Linux:   /opt/<app_name>/bin
$SYSDATA

system specific location of shared, installed, read/write data. This folder requires root access to install, but once created any user can change it. Data in this folder should not require the user to access it from outside the application. (if folder not found it is set to $APP/data)

Windows: CSIDL_COMMON_APPDATA\<app_name>
        98/XP/2k = C:\Documents and Settings\All Users\Application Data\<app_name>
        Vista/7  = C:\ProgramData\<app_name>
Mac:     kSharedUserDataFolderType/<app_name>/data
        /Users/Shared/<app_name>/data
Linux:   /opt/<app_name>/data
$SYSPREFS

system specific location of shared, customizable, data/preferences (read/write) This folder requires root access to install, but once created any user can change it. Data in this folder may require the user to access it outside the application using 3rd partry tools such as a text editor. (if folder not found it is set to $APP/data)

Windows: CSIDL_COMMON_DOCUMENTS\<app_name>
        98/XP/2k = C:\Documents and Settings\All Users\Documents\<app_name>
        Vista/7  = C:\Documents and Settings\All Users\Documents\<app_name>
Mac:     kSharedUserDataFolderType/<app_name>/custdata
        /Users/Shared/<app_name>/custdata
Linux:   /opt/<app_name>/custdata
$DATA

location of data for running app

Set to the first found of these locations in this order:
        $USERDATA
        $SYSDATA
        $APPDATA
        $APP
NOTE: If you use this with the create_if_not_found set the system will create the first folder it can in the given order.
$TEMP

system specific location of temp data (if not folder not found it is set to $APP/temp)

Windows: CSIDL_PERSONAL\<app_name>\temp
        98/XP/2k = C:\Documents and Settings\<username>\My Documents\<app_name>\temp
        Vista/7  = C:\Documents and Settings\<username>\My Documents\<app_name>\temp
Mac:     kTemporaryFolderType/<app_name>
        /private/var/tmp/*/<app_name>
Linux:   ~/tmp/<app_name> or /tmp/<app_name>
$ROOTx

root folder of drive/device x (where x is the drive/device number)

$FONTDATA

location of font data (normally $APPDATA/fonts)

$ICONDATA

location of font data (normally $APPDATA/fonts)

$HERE

situation specific as it is passed in by the application. In the case of style sets it is the location of the current style set file.

$BASE

Depreciated - Use $APP

$INSTDATA

Depreciated - Use $APPDATA

6. Extended Characters

Extended character description to follow shortly