<?xml version="1.0"?>
<grammar xmlns="http://relaxng.org/ns/structure/1.0">
<start>
  <element name="project">
    <interleave>
    <ref name="commonPlatformOptions"/>
    <optional>
      <element name="componentList">
        <zeroOrMore>
          <choice>
            <ref name="component"/>
            <ref name="componentGroup"/>
            <ref name="include"/>
          </choice>
        </zeroOrMore>
      </element>
    </optional>
    <optional>
      <element name="preBuildActionList">
        <zeroOrMore>
          <ref name="action"/>
        </zeroOrMore>
      </element>
    </optional>
    <optional>
      <element name="postBuildActionList">
        <zeroOrMore>
          <ref name="action"/>
        </zeroOrMore>
      </element>
    </optional>
    <optional>
      <element name="preInitializationActionList">
        <zeroOrMore>
          <ref name="action"/>
        </zeroOrMore>
      </element>
    </optional>
    <optional>
      <element name="initializationActionList">
        <zeroOrMore>
          <ref name="action"/>
        </zeroOrMore>
      </element>
    </optional>
    <optional>
      <element name="preInstallationActionList">
        <zeroOrMore>
          <ref name="action"/>
        </zeroOrMore>
      </element>
    </optional>
    <optional>
      <element name="readyToInstallActionList">
        <zeroOrMore>
          <ref name="action"/>
        </zeroOrMore>
      </element>
    </optional>
    <optional>
      <element name="postInstallationActionList">
        <zeroOrMore>
          <ref name="action"/>
        </zeroOrMore>
      </element>
    </optional>
    <optional>
      <element name="postUninstallerCreationActionList">
        <zeroOrMore>
          <ref name="action"/>
        </zeroOrMore>
      </element>
    </optional>
    <optional>
      <element name="preUninstallationActionList">
        <zeroOrMore>
          <ref name="action"/>
        </zeroOrMore>
      </element>
    </optional>
    <optional>
      <element name="postUninstallationActionList">
        <zeroOrMore>
          <ref name="action"/>
        </zeroOrMore>
      </element>
    </optional>
    <optional>
      <choice>
        <attribute name="allowAddRemoveComponents"/>
        <element name="allowAddRemoveComponents"><text/></element>
      </choice>
    </optional>
    <optional>
      <choice>
        <attribute name="cdromDirectory"/>
        <element name="cdromDirectory"><text/></element>
      </choice>
    </optional>
    <optional>
      <choice>
        <attribute name="cdromDiskSize"/>
        <element name="cdromDiskSize"><text/></element>
      </choice>
    </optional>
    <optional>
      <choice>
        <attribute name="cdromFirstDiskSize"/>
        <element name="cdromFirstDiskSize"><text/></element>
      </choice>
    </optional>
    <optional>
      <choice>
        <attribute name="cdromPlatforms"/>
        <element name="cdromPlatforms"><text/></element>
      </choice>
    </optional>
    <optional>
      <choice>
        <attribute name="componentsDirectory"/>
        <element name="componentsDirectory"><text/></element>
      </choice>
    </optional>
    <optional>
      <choice>
        <attribute name="componentsDownloadDirectory"/>
        <element name="componentsDownloadDirectory"><text/></element>
      </choice>
    </optional>
    <optional>
      <choice>
        <attribute name="componentsUrl"/>
        <element name="componentsUrl"><text/></element>
      </choice>
    </optional>
    <optional>
      <choice>
        <attribute name="debuggerPassword"/>
        <element name="debuggerPassword"><text/></element>
      </choice>
    </optional>
    <optional>
      <choice>
        <attribute name="enableDebugger"/>
        <element name="enableDebugger"><text/></element>
      </choice>
    </optional>
    <optional>
      <choice>
        <attribute name="enableEncryption"/>
        <element name="enableEncryption"><text/></element>
      </choice>
    </optional>
    <optional>
      <choice>
        <attribute name="enableLinuxLegacySupport"/>
        <element name="enableLinuxLegacySupport"><text/></element>
      </choice>
    </optional>
    <optional>
      <choice>
        <attribute name="enableLinuxXwindowXftSupport"/>
        <element name="enableLinuxXwindowXftSupport"><text/></element>
      </choice>
    </optional>
    <optional>
      <choice>
        <attribute name="enableRetinaDisplayImages"/>
        <element name="enableRetinaDisplayImages"><text/></element>
      </choice>
    </optional>
    <optional>
      <choice>
        <attribute name="enableSslSupport"/>
        <element name="enableSslSupport"><text/></element>
      </choice>
    </optional>
    <optional>
      <choice>
        <attribute name="enableUpx"/>
        <element name="enableUpx"><text/></element>
      </choice>
    </optional>
    <optional>
      <choice>
        <attribute name="encryptionPassword"/>
        <element name="encryptionPassword"><text/></element>
      </choice>
    </optional>
    <optional>
      <choice>
        <attribute name="installationLogFile"/>
        <element name="installationLogFile"><text/></element>
      </choice>
    </optional>
    <optional>
      <choice>
        <attribute name="logFileTimeStampFormat"/>
        <element name="logFileTimeStampFormat"><text/></element>
      </choice>
    </optional>
    <optional>
      <choice>
        <attribute name="parallelDecompressionCores"/>
        <element name="parallelDecompressionCores"><text/></element>
      </choice>
    </optional>
    <optional>
      <choice>
        <attribute name="removeLogFile"/>
        <element name="removeLogFile"><text/></element>
      </choice>
    </optional>
    <optional>
      <choice>
        <attribute name="removeUninstallationLogFile"/>
        <element name="removeUninstallationLogFile"><text/></element>
      </choice>
    </optional>
    <optional>
      <choice>
        <attribute name="requestedExecutionLevel"/>
        <element name="requestedExecutionLevel"><text/></element>
      </choice>
    </optional>
    <optional>
      <choice>
        <attribute name="requirePasswordOnStartup"/>
        <element name="requirePasswordOnStartup"><text/></element>
      </choice>
    </optional>
    <optional>
      <choice>
        <attribute name="skipDownloadingComponents"/>
        <element name="skipDownloadingComponents"><text/></element>
      </choice>
    </optional>
    <optional>
      <choice>
        <attribute name="slideShowLoop"/>
        <element name="slideShowLoop"><text/></element>
      </choice>
    </optional>
    <optional>
      <choice>
        <attribute name="slideShowTiming"/>
        <element name="slideShowTiming"><text/></element>
      </choice>
    </optional>
    <optional>
      <choice>
        <attribute name="sslCAFile"/>
        <element name="sslCAFile"><text/></element>
      </choice>
    </optional>
    <optional>
      <choice>
        <attribute name="uninstallationLogFile"/>
        <element name="uninstallationLogFile"><text/></element>
      </choice>
    </optional>
    <optional>
      <choice>
        <attribute name="windows64bitMode"/>
        <element name="windows64bitMode"><text/></element>
      </choice>
    </optional>
    <optional>
      <element name="customLanguageFileList">
        <zeroOrMore>
          <ref name="language"/>
        </zeroOrMore>
      </element>
    </optional>
    <optional>
      <element name="finalPageActionList">
        <zeroOrMore>
          <ref name="action"/>
        </zeroOrMore>
      </element>
    </optional>
    <optional>
      <element name="installationAbortedActionList">
        <zeroOrMore>
          <ref name="action"/>
        </zeroOrMore>
      </element>
    </optional>
    <optional>
      <element name="licenseFileList">
        <zeroOrMore>
          <ref name="licenseFile"/>
        </zeroOrMore>
      </element>
    </optional>
    <optional>
      <element name="parameterList">
        <zeroOrMore>
          <ref name="parameter"/>
        </zeroOrMore>
      </element>
    </optional>
    <optional>
      <element name="platformOptionsList">
        <zeroOrMore>
          <ref name="platformOptions"/>
        </zeroOrMore>
      </element>
    </optional>
    <optional>
      <element name="preShowHelpActionList">
        <zeroOrMore>
          <ref name="action"/>
        </zeroOrMore>
      </element>
    </optional>
    <optional>
      <element name="readmeFileList">
        <zeroOrMore>
          <ref name="readmeFile"/>
        </zeroOrMore>
      </element>
    </optional>
    <optional>
      <element name="slideShowImageList">
        <zeroOrMore>
          <ref name="slideShowImage"/>
        </zeroOrMore>
      </element>
    </optional>
    </interleave>
  </element>
</start>

<!-- These properties are common to all actions -->
<define name="actionCommonProperties">
  <interleave>
    <optional>
      <choice>
        <attribute name="abortOnError"/>
        <element name="abortOnError"><text/></element>
      </choice>
    </optional>
    <optional>
      <choice>
        <attribute name="breakpoint"/>
        <element name="breakpoint"><text/></element>
      </choice>
    </optional>
    <optional>
      <choice>
        <attribute name="customErrorMessage"/>
        <element name="customErrorMessage"><text/></element>
      </choice>
    </optional>
    <optional>
      <choice>
        <attribute name="explanation"/>
        <element name="explanation"><text/></element>
      </choice>
    </optional>
    <optional>
      <choice>
        <attribute name="progressText"/>
        <element name="progressText"><text/></element>
      </choice>
    </optional>
    <optional>
      <choice>
        <attribute name="ruleEvaluationLogic"/>
        <element name="ruleEvaluationLogic"><text/></element>
      </choice>
    </optional>
    <optional>
      <choice>
        <attribute name="run"/>
        <element name="run"><text/></element>
      </choice>
    </optional>
    <optional>
      <choice>
        <attribute name="show"/>
        <element name="show"><text/></element>
      </choice>
    </optional>
    <optional>
      <choice>
        <attribute name="showMessageOnError"/>
        <element name="showMessageOnError"><text/></element>
      </choice>
    </optional>
    <optional>
      <element name="onErrorActionList">
        <zeroOrMore>
          <ref name="action"/>
        </zeroOrMore>
      </element>
    </optional>
    <optional>
      <element name="ruleList">
        <zeroOrMore>
          <ref name="rule"/>
        </zeroOrMore>
      </element>
    </optional>
  </interleave>
</define>

 
<!--   action can be any of:
         - changeExecutableResources
         - pwd
         - unix2dos
         - deleteOSXService
         - encodeBase64
         - getFileInfo
         - setWindowsACL
         - setEncryptionPassword
         - copyFile
         - showPasswordQuestion
         - removeDirectoryFromPath
         - showInfo
         - unpackDirectory
         - foreach
         - registryFind
         - deleteGroupFromUser
         - while
         - mathExpression
         - startWindowsService
         - deleteFile
         - yamlFileGet
         - kill
         - if
         - autodetectDotNetFramework
         - xmlFileGet
         - setEnvironmentVariable
         - locate
         - dirName
         - createTimeStamp
         - addTextToFile
         - addSharedDLL
         - removeChoiceOptions
         - md4
         - xmlFileCommentElement
         - showText
         - httpProxyInit
         - md5
         - generateRandomValue
         - changePermissions
         - pathManipulation
         - dos2unix
         - addGroupToUser
         - createWindowsService
         - continue
         - changeWindowsAttributes
         - showQuestion
         - findFile
         - actionGroup
         - logMessage
         - addDirectoriesToUninstaller
         - stopWindowsService
         - registryGetMatch
         - componentSelection
         - removeUnixService
         - associateWindowsFileExtension
         - wow64FsRedirection
         - deleteGroup
         - sha256
         - globalVariables
         - addFonts
         - addUnixService
         - createBackupFile
         - clearWindowsACL
         - registryDelete
         - getWindowsFileVersionInfo
         - startOSXService
         - getFreeDiskSpace
         - getWindowsACL
         - substitute
         - iniFileSet
         - registrySet
         - showProgressDialog
         - removeFilesFromUninstaller
         - createDirectory
         - unzip
         - propertiesFileSet
         - setInstallerVariableFromScriptOutput
         - registryGetKey
         - touchFile
         - getUniqueWindowsServiceName
         - getSymLinkTarget
         - addDirectoryToPath
         - getFreePort
         - showWarning
         - removeSharedDLL
         - addEnvironmentVariable
         - urlDecode
         - getProcessUsingPort
         - readFile
         - autodetectJava
         - addUser
         - addUnixDesktopStartUpItem
         - getTotalDiskSpace
         - renameFile
         - addChoiceOptions
         - createJavaLaunchers
         - createSymLink
         - wait
         - removeWindowsFileAssociation
         - removeFonts
         - addFilesToUninstaller
         - iniFileGet
         - stopOSXService
         - registryGet
         - exit
         - zip
         - stringModify
         - addChoiceOptionsFromText
         - break
         - propertiesFileGet
         - launchBrowser
         - deleteWindowsService
         - setInstallerVariable
         - writeFile
         - runProgram
         - httpPost
         - removeWindowsAccountRights
         - setInstallerVariableFromRegEx
         - waitForPort
         - deleteUser
         - showChoiceQuestion
         - deleteScheduledTask
         - changeOSXAttributes
         - httpGet
         - decodeBase64
         - changeOwnerAndGroup
         - createShortcuts
         - addScheduledTask
         - throwError
         - showStringQuestion
         - createOSXService
         - yamlFileSet
         - urlEncode
         - restartWindowsService
         - addWindowsAccountRights
         - unpackFile
         - getPermissions
         - shutdown
         - xmlFileSet
         - consoleWrite
         - deleteEnvironmentVariable
         - addGroup
         - sha1
         - addLibraryToPath
-->
<define name="action">
  <choice>
 
  <!--   changeExecutableResources - Change resource information of a Windows executable
         Specific properties for <changeExecutableResources>:

         <path>: Path to the Windows executable to modify
         <windowsResourceComments>: Comments for resources embedded in Windows executable
         <windowsResourceCompanyName>: Company Name for resources embedded in Windows executable
         <windowsResourceFileDescription>: File Description for resources embedded in Windows executable
         <windowsResourceFileVersion>: File version for resources embedded in Windows executable
         <windowsResourceInternalName>: Internal Name for resources embedded in Windows executable
         <windowsResourceLegalCopyright>: Legal Copyright for resources embedded in Windows executable
         <windowsResourceLegalTrademarks>: Legal Trademarks for resources embedded in Windows executable
         <windowsResourceOriginalFilename>: Original Filename for resources embedded in Windows executable
         <windowsResourceProductName>: Product Name for resources embedded in Windows executable
         <windowsResourceProductVersion>: Product Version for resources embedded in Windows executable
  -->
  <element name="changeExecutableResources">
    <interleave>
    <ref name="actionCommonProperties"/>
    <optional>
      <choice>
        <attribute name="path"/>
        <element name="path"><text/></element>
      </choice>
    </optional>
    <optional>
      <choice>
        <attribute name="windowsResourceComments"/>
        <element name="windowsResourceComments"><text/></element>
      </choice>
    </optional>
    <optional>
      <choice>
        <attribute name="windowsResourceCompanyName"/>
        <element name="windowsResourceCompanyName"><text/></element>
      </choice>
    </optional>
    <optional>
      <choice>
        <attribute name="windowsResourceFileDescription"/>
        <element name="windowsResourceFileDescription"><text/></element>
      </choice>
    </optional>
    <optional>
      <choice>
        <attribute name="windowsResourceFileVersion"/>
        <element name="windowsResourceFileVersion"><text/></element>
      </choice>
    </optional>
    <optional>
      <choice>
        <attribute name="windowsResourceInternalName"/>
        <element name="windowsResourceInternalName"><text/></element>
      </choice>
    </optional>
    <optional>
      <choice>
        <attribute name="windowsResourceLegalCopyright"/>
        <element name="windowsResourceLegalCopyright"><text/></element>
      </choice>
    </optional>
    <optional>
      <choice>
        <attribute name="windowsResourceLegalTrademarks"/>
        <element name="windowsResourceLegalTrademarks"><text/></element>
      </choice>
    </optional>
    <optional>
      <choice>
        <attribute name="windowsResourceOriginalFilename"/>
        <element name="windowsResourceOriginalFilename"><text/></element>
      </choice>
    </optional>
    <optional>
      <choice>
        <attribute name="windowsResourceProductName"/>
        <element name="windowsResourceProductName"><text/></element>
      </choice>
    </optional>
    <optional>
      <choice>
        <attribute name="windowsResourceProductVersion"/>
        <element name="windowsResourceProductVersion"><text/></element>
      </choice>
    </optional>
    </interleave>
  </element>
 
 
  <!--   pwd - Get the current working directory
         Specific properties for <pwd>:

         <variable>: Variable to which to save the current working directory.
  -->
  <element name="pwd">
    <interleave>
    <ref name="actionCommonProperties"/>
    <optional>
      <choice>
        <attribute name="variable"/>
        <element name="variable"><text/></element>
      </choice>
    </optional>
    </interleave>
  </element>
 
 
  <!--   unix2dos - Convert plain text files in Unix format to DOS format.
         Specific properties for <unix2dos>:

         <excludeFiles>: Patterns to exclude files
         <files>: File patterns to apply action to
         <matchHiddenFiles>: Whether or not to attempt to match Windows hidden files
  -->
  <element name="unix2dos">
    <interleave>
    <ref name="actionCommonProperties"/>
    <optional>
      <choice>
        <attribute name="excludeFiles"/>
        <element name="excludeFiles"><text/></element>
      </choice>
    </optional>
    <optional>
      <choice>
        <attribute name="files"/>
        <element name="files"><text/></element>
      </choice>
    </optional>
    <optional>
      <choice>
        <attribute name="matchHiddenFiles"/>
        <element name="matchHiddenFiles"><text/></element>
      </choice>
    </optional>
    </interleave>
  </element>
 
 
  <!--   deleteOSXService - Delete Mac OS X service.
         Specific properties for <deleteOSXService>:

         <scope>: Scope of service  - Allowed values:
                  user: Per User
                  system: System Wide
         <serviceName>: Identifier for the service name
  -->
  <element name="deleteOSXService">
    <interleave>
    <ref name="actionCommonProperties"/>
    <optional>
      <choice>
        <attribute name="scope"/>
        <element name="scope"><text/></element>
      </choice>
    </optional>
    <optional>
      <choice>
        <attribute name="serviceName"/>
        <element name="serviceName"><text/></element>
      </choice>
    </optional>
    </interleave>
  </element>
 
 
  <!--   encodeBase64 - Encode a string using base64.
         Specific properties for <encodeBase64>:

         <text>: Text to process
         <variable>: Variable to save the final result to.
  -->
  <element name="encodeBase64">
    <interleave>
    <ref name="actionCommonProperties"/>
    <optional>
      <choice>
        <attribute name="text"/>
        <element name="text"><text/></element>
      </choice>
    </optional>
    <optional>
      <choice>
        <attribute name="variable"/>
        <element name="variable"><text/></element>
      </choice>
    </optional>
    </interleave>
  </element>
 
 
  <!--   getFileInfo - Gets Information About File Or Directory
         Specific properties for <getFileInfo>:

         <followSymLinks>: Whether or not to follow or not symbolic links
         <path>: Path
         <type>: Type of information to retrieve  - Allowed values:
                 size: Size
                 type: Type
         <variable>: Variable to store result in
  -->
  <element name="getFileInfo">
    <interleave>
    <ref name="actionCommonProperties"/>
    <optional>
      <choice>
        <attribute name="followSymLinks"/>
        <element name="followSymLinks"><text/></element>
      </choice>
    </optional>
    <optional>
      <choice>
        <attribute name="path"/>
        <element name="path"><text/></element>
      </choice>
    </optional>
    <optional>
      <choice>
        <attribute name="type"/>
        <element name="type"><text/></element>
      </choice>
    </optional>
    <optional>
      <choice>
        <attribute name="variable"/>
        <element name="variable"><text/></element>
      </choice>
    </optional>
    </interleave>
  </element>
 
 
  <!--   setWindowsACL - Change Windows ACL permissions of a file or directory
         Specific properties for <setWindowsACL>:

         <excludeFiles>: Patterns to exclude files
         <files>: File patterns to apply action to
         <matchHiddenFiles>: Whether or not to attempt to match Windows hidden files
         <permissions>: Permissions for matching files or directories
         <recurseContainers>: Whether to apply recursively or not to container descendant
         <recurseObjects>: Whether to apply recursively or not to object descendant
         <recurseOneLevelOnly>: Just one level recursion if applicable
         <self>: Whether to apply or not to the specified file
         <users>: Comma separated list of users to modify access permissions for
  -->
  <element name="setWindowsACL">
    <interleave>
    <ref name="actionCommonProperties"/>
    <optional>
      <choice>
        <attribute name="action"/>
        <element name="action"><text/></element>
      </choice>
    </optional>
    <optional>
      <choice>
        <attribute name="excludeFiles"/>
        <element name="excludeFiles"><text/></element>
      </choice>
    </optional>
    <optional>
      <choice>
        <attribute name="files"/>
        <element name="files"><text/></element>
      </choice>
    </optional>
    <optional>
      <choice>
        <attribute name="matchHiddenFiles"/>
        <element name="matchHiddenFiles"><text/></element>
      </choice>
    </optional>
    <optional>
      <choice>
        <attribute name="permissions"/>
        <element name="permissions"><text/></element>
      </choice>
    </optional>
    <optional>
      <choice>
        <attribute name="recurseContainers"/>
        <element name="recurseContainers"><text/></element>
      </choice>
    </optional>
    <optional>
      <choice>
        <attribute name="recurseObjects"/>
        <element name="recurseObjects"><text/></element>
      </choice>
    </optional>
    <optional>
      <choice>
        <attribute name="recurseOneLevelOnly"/>
        <element name="recurseOneLevelOnly"><text/></element>
      </choice>
    </optional>
    <optional>
      <choice>
        <attribute name="self"/>
        <element name="self"><text/></element>
      </choice>
    </optional>
    <optional>
      <choice>
        <attribute name="users"/>
        <element name="users"><text/></element>
      </choice>
    </optional>
    </interleave>
  </element>
 
 
  <!--   setEncryptionPassword - Specifies and verifies password to use for copying files from installer
         Specific properties for <setEncryptionPassword>:

         <password>: Password to use; action will throw error if password specified does not match password from build time
  -->
  <element name="setEncryptionPassword">
    <interleave>
    <ref name="actionCommonProperties"/>
    <optional>
      <choice>
        <attribute name="password"/>
        <element name="password"><text/></element>
      </choice>
    </optional>
    </interleave>
  </element>
 
 
  <!--   copyFile - Create a copy of a file. The destination file will be overwritten if it already exists
         Specific properties for <copyFile>:

         <destination>: Path to where the file will be copied.
         <excludeFiles>: Patterns to exclude files
         <matchHiddenFiles>: Whether or not to attempt to match Windows hidden files
         <origin>: Path to the original file.
  -->
  <element name="copyFile">
    <interleave>
    <ref name="actionCommonProperties"/>
    <optional>
      <choice>
        <attribute name="destination"/>
        <element name="destination"><text/></element>
      </choice>
    </optional>
    <optional>
      <choice>
        <attribute name="excludeFiles"/>
        <element name="excludeFiles"><text/></element>
      </choice>
    </optional>
    <optional>
      <choice>
        <attribute name="matchHiddenFiles"/>
        <element name="matchHiddenFiles"><text/></element>
      </choice>
    </optional>
    <optional>
      <choice>
        <attribute name="origin"/>
        <element name="origin"><text/></element>
      </choice>
    </optional>
    </interleave>
  </element>
 
 
  <!--   showPasswordQuestion - Ask the user to enter a password.
         Specific properties for <showPasswordQuestion>:

         <text>: Question message that will be shown.
         <title>: Dialog window title.
         <variable>: Variable name where the password will be stored.
  -->
  <element name="showPasswordQuestion">
    <interleave>
    <ref name="actionCommonProperties"/>
    <optional>
      <choice>
        <attribute name="text"/>
        <element name="text"><text/></element>
      </choice>
    </optional>
    <optional>
      <choice>
        <attribute name="title"/>
        <element name="title"><text/></element>
      </choice>
    </optional>
    <optional>
      <choice>
        <attribute name="variable"/>
        <element name="variable"><text/></element>
      </choice>
    </optional>
    </interleave>
  </element>
 
 
  <!--   removeDirectoryFromPath - Remove a directory from the System Path. This will modify the System Path
         Specific properties for <removeDirectoryFromPath>:

         <path>: Path to the directory
         <scope>: Select user path or system path.  - Allowed values:
                  system: System
                  user: User
  -->
  <element name="removeDirectoryFromPath">
    <interleave>
    <ref name="actionCommonProperties"/>
    <optional>
      <choice>
        <attribute name="path"/>
        <element name="path"><text/></element>
      </choice>
    </optional>
    <optional>
      <choice>
        <attribute name="scope"/>
        <element name="scope"><text/></element>
      </choice>
    </optional>
    </interleave>
  </element>
 
 
  <!--   showInfo - Prompt an info dialog to the user.
         Specific properties for <showInfo>:

         <text>: Information message that will be shown
         <title>: Title of the dialog window
  -->
  <element name="showInfo">
    <interleave>
    <ref name="actionCommonProperties"/>
    <optional>
      <choice>
        <attribute name="text"/>
        <element name="text"><text/></element>
      </choice>
    </optional>
    <optional>
      <choice>
        <attribute name="title"/>
        <element name="title"><text/></element>
      </choice>
    </optional>
    </interleave>
  </element>
 
 
  <!--   unpackDirectory - Extract a directory from an installer before files are unpacked during the installation phase
         Specific properties for <unpackDirectory>:

         <component>: Project component where the directory you want to extract is located.
         <destination>: Path to the location where you want to extract the directory.
         <folder>: Project folder name where the directory you want to extract is located.
         <origin>: Directory name you want to extract.
  -->
  <element name="unpackDirectory">
    <interleave>
    <ref name="actionCommonProperties"/>
    <optional>
      <choice>
        <attribute name="component"/>
        <element name="component"><text/></element>
      </choice>
    </optional>
    <optional>
      <choice>
        <attribute name="destination"/>
        <element name="destination"><text/></element>
      </choice>
    </optional>
    <optional>
      <choice>
        <attribute name="folder"/>
        <element name="folder"><text/></element>
      </choice>
    </optional>
    <optional>
      <choice>
        <attribute name="origin"/>
        <element name="origin"><text/></element>
      </choice>
    </optional>
    </interleave>
  </element>
 
 
  <!--   foreach - Iterate over a set of values
         Specific properties for <foreach>:

         <values>: Space-separated values to iterate over
         <variables>: Space-separated list of variables that will be assigned a value with each iteration
         <actionList>: List of actions
  -->
  <element name="foreach">
    <interleave>
    <ref name="actionCommonProperties"/>
    <optional>
      <choice>
        <attribute name="values"/>
        <element name="values"><text/></element>
      </choice>
    </optional>
    <optional>
      <choice>
        <attribute name="variables"/>
        <element name="variables"><text/></element>
      </choice>
    </optional>
    <optional>
      <element name="actionList">
        <zeroOrMore>
          <ref name="action"/>
        </zeroOrMore>
      </element>
    </optional>
    </interleave>
  </element>
 
 
  <!--   registryFind - Retrieve the first registry hive and content matching a certain expression and store it as a list in an installer variable. If no match is found the variable will be created empty.
         Specific properties for <registryFind>:

         <dataPattern>: Pattern to match in the value
         <findAll>: Whether to look for the first occurrence or for all
         <keyPattern>: Pattern to match key name with
         <namePattern>: Pattern to match entry name with
         <rootKey>: Root key from which start the search
         <searchDepth>: Maximum depth of the search. 0 will look just in the Root Key
         <variable>: Variable name to store the results
         <wowMode>: Determines whether we want to access a 32-bit or 64-bit view of the Registry  - Allowed values:
                    none: None
                    32: 32
                    64: 64
  -->
  <element name="registryFind">
    <interleave>
    <ref name="actionCommonProperties"/>
    <optional>
      <choice>
        <attribute name="dataPattern"/>
        <element name="dataPattern"><text/></element>
      </choice>
    </optional>
    <optional>
      <choice>
        <attribute name="findAll"/>
        <element name="findAll"><text/></element>
      </choice>
    </optional>
    <optional>
      <choice>
        <attribute name="keyPattern"/>
        <element name="keyPattern"><text/></element>
      </choice>
    </optional>
    <optional>
      <choice>
        <attribute name="namePattern"/>
        <element name="namePattern"><text/></element>
      </choice>
    </optional>
    <optional>
      <choice>
        <attribute name="rootKey"/>
        <element name="rootKey"><text/></element>
      </choice>
    </optional>
    <optional>
      <choice>
        <attribute name="searchDepth"/>
        <element name="searchDepth"><text/></element>
      </choice>
    </optional>
    <optional>
      <choice>
        <attribute name="variable"/>
        <element name="variable"><text/></element>
      </choice>
    </optional>
    <optional>
      <choice>
        <attribute name="wowMode"/>
        <element name="wowMode"><text/></element>
      </choice>
    </optional>
    </interleave>
  </element>
 
 
  <!--   deleteGroupFromUser - Delete a supplementary group from a user.
         Specific properties for <deleteGroupFromUser>:

         <groupname>: Groupname
         <username>: Username
  -->
  <element name="deleteGroupFromUser">
    <interleave>
    <ref name="actionCommonProperties"/>
    <optional>
      <choice>
        <attribute name="groupname"/>
        <element name="groupname"><text/></element>
      </choice>
    </optional>
    <optional>
      <choice>
        <attribute name="username"/>
        <element name="username"><text/></element>
      </choice>
    </optional>
    </interleave>
  </element>
 
 
  <!--   while - Execute a group of actions as long as conditions are met
         Specific properties for <while>:

         <conditionRuleEvaluationLogic>: Condition rule evaluation logic  - Allowed values:
                                         and: And
                                         or: Or
         <actionList>: List of actions
         <conditionRuleList>: List of conditions
  -->
  <element name="while">
    <interleave>
    <ref name="actionCommonProperties"/>
    <optional>
      <choice>
        <attribute name="conditionRuleEvaluationLogic"/>
        <element name="conditionRuleEvaluationLogic"><text/></element>
      </choice>
    </optional>
    <optional>
      <element name="actionList">
        <zeroOrMore>
          <ref name="action"/>
        </zeroOrMore>
      </element>
    </optional>
    <optional>
      <element name="conditionRuleList">
        <zeroOrMore>
          <ref name="rule"/>
        </zeroOrMore>
      </element>
    </optional>
    </interleave>
  </element>
 
 
  <!--   mathExpression - Calculate math expression
         Specific properties for <mathExpression>:

         <text>: 
         <variable>: Variable to save the final result to.
  -->
  <element name="mathExpression">
    <interleave>
    <ref name="actionCommonProperties"/>
    <optional>
      <choice>
        <attribute name="text"/>
        <element name="text"><text/></element>
      </choice>
    </optional>
    <optional>
      <choice>
        <attribute name="variable"/>
        <element name="variable"><text/></element>
      </choice>
    </optional>
    </interleave>
  </element>
 
 
  <!--   startWindowsService - Start a Windows service
         Specific properties for <startWindowsService>:

         <delay>: Amount of milliseconds to wait for the service to start.
         <displayName>: Name displayed in the Windows service control panel
         <serviceName>: Internal service name
  -->
  <element name="startWindowsService">
    <interleave>
    <ref name="actionCommonProperties"/>
    <optional>
      <choice>
        <attribute name="delay"/>
        <element name="delay"><text/></element>
      </choice>
    </optional>
    <optional>
      <choice>
        <attribute name="displayName"/>
        <element name="displayName"><text/></element>
      </choice>
    </optional>
    <optional>
      <choice>
        <attribute name="serviceName"/>
        <element name="serviceName"><text/></element>
      </choice>
    </optional>
    </interleave>
  </element>
 
 
  <!--   deleteFile - Delete a file or directory (including its contents). The action does not throw an error if deleting a file or directory failed.
         Specific properties for <deleteFile>:

         <excludeFiles>: Patterns to exclude files
         <matchHiddenFiles>: Whether or not to attempt to match Windows hidden files
         <path>: Path to the file or directory to delete. It accepts patterns
  -->
  <element name="deleteFile">
    <interleave>
    <ref name="actionCommonProperties"/>
    <optional>
      <choice>
        <attribute name="excludeFiles"/>
        <element name="excludeFiles"><text/></element>
      </choice>
    </optional>
    <optional>
      <choice>
        <attribute name="matchHiddenFiles"/>
        <element name="matchHiddenFiles"><text/></element>
      </choice>
    </optional>
    <optional>
      <choice>
        <attribute name="path"/>
        <element name="path"><text/></element>
      </choice>
    </optional>
    </interleave>
  </element>
 
 
  <!--   yamlFileGet - Read value of element from a YAML file
         Specific properties for <yamlFileGet>:

         <element>: Path expression pointing to the selected element
         <file>: Path to YAML file
         <variable>: Variable where to start the result
  -->
  <element name="yamlFileGet">
    <interleave>
    <ref name="actionCommonProperties"/>
    <optional>
      <choice>
        <attribute name="element"/>
        <element name="element"><text/></element>
      </choice>
    </optional>
    <optional>
      <choice>
        <attribute name="file"/>
        <element name="file"><text/></element>
      </choice>
    </optional>
    <optional>
      <choice>
        <attribute name="variable"/>
        <element name="variable"><text/></element>
      </choice>
    </optional>
    </interleave>
  </element>
 
 
  <!--   kill - This action allows you to kill a running process that matches one or several conditions. Windows support only.
         Specific properties for <kill>:

         <name>: Name of the process, usually the executable filename.
         <path>: Path to the executable of the process.
         <pid>: ID of the process to be killed.
  -->
  <element name="kill">
    <interleave>
    <ref name="actionCommonProperties"/>
    <optional>
      <choice>
        <attribute name="name"/>
        <element name="name"><text/></element>
      </choice>
    </optional>
    <optional>
      <choice>
        <attribute name="path"/>
        <element name="path"><text/></element>
      </choice>
    </optional>
    <optional>
      <choice>
        <attribute name="pid"/>
        <element name="pid"><text/></element>
      </choice>
    </optional>
    </interleave>
  </element>
 
 
  <!--   if - Conditionally execute a group of actions
         Specific properties for <if>:

         <conditionRuleEvaluationLogic>: Condition rule evaluation logic  - Allowed values:
                                         and: And
                                         or: Or
         <actionList>: List of actions to execute if condition is true
         <conditionRuleList>: List of conditions
         <elseActionList>: List of actions to execute if condition is false
  -->
  <element name="if">
    <interleave>
    <ref name="actionCommonProperties"/>
    <optional>
      <choice>
        <attribute name="conditionRuleEvaluationLogic"/>
        <element name="conditionRuleEvaluationLogic"><text/></element>
      </choice>
    </optional>
    <optional>
      <element name="actionList">
        <zeroOrMore>
          <ref name="action"/>
        </zeroOrMore>
      </element>
    </optional>
    <optional>
      <element name="conditionRuleList">
        <zeroOrMore>
          <ref name="rule"/>
        </zeroOrMore>
      </element>
    </optional>
    <optional>
      <element name="elseActionList">
        <zeroOrMore>
          <ref name="action"/>
        </zeroOrMore>
      </element>
    </optional>
    </interleave>
  </element>
 
 
  <!--   autodetectDotNetFramework - Autodetects an existing .NET (tm) installation in the system and creates corresponding installer variables: dotnet_version. If a valid .NET framework version was found, the variable dotnet_autodetected, will be set to 1
         Specific properties for <autodetectDotNetFramework>:

         <validDotNetVersionList>: List of supported .NET versions
  -->
  <element name="autodetectDotNetFramework">
    <interleave>
    <ref name="actionCommonProperties"/>
    <optional>
      <element name="validDotNetVersionList">
        <zeroOrMore>
          <ref name="validDotNetVersion"/>
        </zeroOrMore>
      </element>
    </optional>
    </interleave>
  </element>
 
 
  <!--   xmlFileGet - Read value of element or attribute from an XML file
         Specific properties for <xmlFileGet>:

         <attribute>: If present, the action will refer to the attribute instead of the element
         <element>: XPath expression pointing to the selected element
         <file>: Path to XML file
         <variable>: Variable where to start the result
  -->
  <element name="xmlFileGet">
    <interleave>
    <ref name="actionCommonProperties"/>
    <optional>
      <choice>
        <attribute name="attribute"/>
        <element name="attribute"><text/></element>
      </choice>
    </optional>
    <optional>
      <choice>
        <attribute name="element"/>
        <element name="element"><text/></element>
      </choice>
    </optional>
    <optional>
      <choice>
        <attribute name="file"/>
        <element name="file"><text/></element>
      </choice>
    </optional>
    <optional>
      <choice>
        <attribute name="variable"/>
        <element name="variable"><text/></element>
      </choice>
    </optional>
    </interleave>
  </element>
 
 
  <!--   setEnvironmentVariable - Set the value of a system environment variable. If it does not exist yet, a new one will be created. The variable will not exist once the installer has finished.
         Specific properties for <setEnvironmentVariable>:

         <name>: Variable name
         <value>: Variable value
  -->
  <element name="setEnvironmentVariable">
    <interleave>
    <ref name="actionCommonProperties"/>
    <optional>
      <choice>
        <attribute name="name"/>
        <element name="name"><text/></element>
      </choice>
    </optional>
    <optional>
      <choice>
        <attribute name="value"/>
        <element name="value"><text/></element>
      </choice>
    </optional>
    </interleave>
  </element>
 
 
  <!--   locate - Based on command given, locates binary and creates command that needs to be run.
         Specific properties for <locate>:

         <command>: Command to locate
         <variable>: Variable to store the result in
  -->
  <element name="locate">
    <interleave>
    <ref name="actionCommonProperties"/>
    <optional>
      <choice>
        <attribute name="command"/>
        <element name="command"><text/></element>
      </choice>
    </optional>
    <optional>
      <choice>
        <attribute name="variable"/>
        <element name="variable"><text/></element>
      </choice>
    </optional>
    </interleave>
  </element>
 
 
  <!--   dirName - Returns a name comprised of all of the path components in name excluding the last element. If name is a relative file name and only contains one path element, then returns ".". If name refers to a root directory, then the root directory is returned.
         Specific properties for <dirName>:

         <path>: The path from which the base directory will be retrieved.
         <variable>: Variable that will store the directory path.
  -->
  <element name="dirName">
    <interleave>
    <ref name="actionCommonProperties"/>
    <optional>
      <choice>
        <attribute name="path"/>
        <element name="path"><text/></element>
      </choice>
    </optional>
    <optional>
      <choice>
        <attribute name="variable"/>
        <element name="variable"><text/></element>
      </choice>
    </optional>
    </interleave>
  </element>
 
 
  <!--   createTimeStamp - This action allows you to create a timestamp using a custom format, storing the result in an installer variable.
         Specific properties for <createTimeStamp>:

         <format>: Format string for the generated timestamp. The string allows a number of field descriptors.
         <variable>: Variable that will store the resulting timestamp.
  -->
  <element name="createTimeStamp">
    <interleave>
    <ref name="actionCommonProperties"/>
    <optional>
      <choice>
        <attribute name="format"/>
        <element name="format"><text/></element>
      </choice>
    </optional>
    <optional>
      <choice>
        <attribute name="variable"/>
        <element name="variable"><text/></element>
      </choice>
    </optional>
    </interleave>
  </element>
 
 
  <!--   addTextToFile - Append text to a file. If the file does not exist, it will be created.
         Specific properties for <addTextToFile>:

         <encoding>: Encoding of the text file  - Allowed values:
                     iso8859-1: ISO8859-1
                     iso8859-2: ISO8859-2
                     utf-8: UTF-8
                     cp1251: CP1251
                     cp1252: CP1252
                     ascii: ASCII
                     macRoman: MacRoman
                     unicode: Unicode
                     default: Default
                     binary: Binary
         <endOfLineConversion>: End Of Line Conversion  - Allowed values:
                                auto: Auto
                                none: None
                                cr: OS X (cr)
                                crlf: Windows (crlf)
                                lf: Linux (lf)
         <file>: Path to the file
         <insertAt>: Whether to insert the text at the beginning or at the end of the file  - Allowed values:
                     end: End
                     beginning: Beginning
         <text>: Text to append
  -->
  <element name="addTextToFile">
    <interleave>
    <ref name="actionCommonProperties"/>
    <optional>
      <choice>
        <attribute name="encoding"/>
        <element name="encoding"><text/></element>
      </choice>
    </optional>
    <optional>
      <choice>
        <attribute name="endOfLineConversion"/>
        <element name="endOfLineConversion"><text/></element>
      </choice>
    </optional>
    <optional>
      <choice>
        <attribute name="file"/>
        <element name="file"><text/></element>
      </choice>
    </optional>
    <optional>
      <choice>
        <attribute name="insertAt"/>
        <element name="insertAt"><text/></element>
      </choice>
    </optional>
    <optional>
      <choice>
        <attribute name="text"/>
        <element name="text"><text/></element>
      </choice>
    </optional>
    </interleave>
  </element>
 
 
  <!--   addSharedDLL - Increment the reference count for a shared DLL.
         Specific properties for <addSharedDLL>:

         <path>: Path to the shared DLL
  -->
  <element name="addSharedDLL">
    <interleave>
    <ref name="actionCommonProperties"/>
    <optional>
      <choice>
        <attribute name="path"/>
        <element name="path"><text/></element>
      </choice>
    </optional>
    </interleave>
  </element>
 
 
  <!--   removeChoiceOptions - Clear choice values for a parameter
         Specific properties for <removeChoiceOptions>:

         <name>: Name of an existing choice parameter.
         <options>: Options to remove
  -->
  <element name="removeChoiceOptions">
    <interleave>
    <ref name="actionCommonProperties"/>
    <optional>
      <choice>
        <attribute name="name"/>
        <element name="name"><text/></element>
      </choice>
    </optional>
    <optional>
      <choice>
        <attribute name="options"/>
        <element name="options"><text/></element>
      </choice>
    </optional>
    </interleave>
  </element>
 
 
  <!--   md4 - Generate a MD4 from a given text.
         Specific properties for <md4>:

         <text>: Text to calculate the MD4 on.
         <useNTLMFormat>: Whether or not to create an NTLM compilant hash
         <variable>: Variable to which to save the MD4 to.
  -->
  <element name="md4">
    <interleave>
    <ref name="actionCommonProperties"/>
    <optional>
      <choice>
        <attribute name="text"/>
        <element name="text"><text/></element>
      </choice>
    </optional>
    <optional>
      <choice>
        <attribute name="useNTLMFormat"/>
        <element name="useNTLMFormat"><text/></element>
      </choice>
    </optional>
    <optional>
      <choice>
        <attribute name="variable"/>
        <element name="variable"><text/></element>
      </choice>
    </optional>
    </interleave>
  </element>
 
 
  <!--   xmlFileCommentElement - Comment entire subtree of an XML file
         Specific properties for <xmlFileCommentElement>:

         <element>: XPath expression pointing to the selected element
         <file>: Path to XML file
  -->
  <element name="xmlFileCommentElement">
    <interleave>
    <ref name="actionCommonProperties"/>
    <optional>
      <choice>
        <attribute name="element"/>
        <element name="element"><text/></element>
      </choice>
    </optional>
    <optional>
      <choice>
        <attribute name="file"/>
        <element name="file"><text/></element>
      </choice>
    </optional>
    </interleave>
  </element>
 
 
  <!--   showText - Display a read-only text dialog to the user.
         Specific properties for <showText>:

         <height>: Text window height
         <htmlText>: HTML text that will be shown in Qt mode. Note that regular text still needs to be provided in case the installer is run in another mode
         <text>: Text that will be shown.
         <title>: Dialog title.
         <width>: Text window width
  -->
  <element name="showText">
    <interleave>
    <ref name="actionCommonProperties"/>
    <optional>
      <choice>
        <attribute name="height"/>
        <element name="height"><text/></element>
      </choice>
    </optional>
    <optional>
      <choice>
        <attribute name="htmlText"/>
        <element name="htmlText"><text/></element>
      </choice>
    </optional>
    <optional>
      <choice>
        <attribute name="text"/>
        <element name="text"><text/></element>
      </choice>
    </optional>
    <optional>
      <choice>
        <attribute name="title"/>
        <element name="title"><text/></element>
      </choice>
    </optional>
    <optional>
      <choice>
        <attribute name="width"/>
        <element name="width"><text/></element>
      </choice>
    </optional>
    </interleave>
  </element>
 
 
  <!--   httpProxyInit - Configure proxy to be used by http actions
         Specific properties for <httpProxyInit>:

         <exclude>: Space separated list of patters for urls that will be excluded from the proxy configuration
         <password>: Proxy server password
         <port>: Proxy server port
         <server>: Proxy server url
         <username>: Proxy server username
  -->
  <element name="httpProxyInit">
    <interleave>
    <ref name="actionCommonProperties"/>
    <optional>
      <choice>
        <attribute name="exclude"/>
        <element name="exclude"><text/></element>
      </choice>
    </optional>
    <optional>
      <choice>
        <attribute name="password"/>
        <element name="password"><text/></element>
      </choice>
    </optional>
    <optional>
      <choice>
        <attribute name="port"/>
        <element name="port"><text/></element>
      </choice>
    </optional>
    <optional>
      <choice>
        <attribute name="server"/>
        <element name="server"><text/></element>
      </choice>
    </optional>
    <optional>
      <choice>
        <attribute name="username"/>
        <element name="username"><text/></element>
      </choice>
    </optional>
    </interleave>
  </element>
 
 
  <!--   md5 - Generate a MD5 from a given text.
         Specific properties for <md5>:

         <text>: Text to calculate the MD5 on.
         <variable>: Variable to which to save the MD5 to.
  -->
  <element name="md5">
    <interleave>
    <ref name="actionCommonProperties"/>
    <optional>
      <choice>
        <attribute name="text"/>
        <element name="text"><text/></element>
      </choice>
    </optional>
    <optional>
      <choice>
        <attribute name="variable"/>
        <element name="variable"><text/></element>
      </choice>
    </optional>
    </interleave>
  </element>
 
 
  <!--   generateRandomValue - Generate a random value.
         Specific properties for <generateRandomValue>:

         <length>: Character length for the generated value.
         <variable>: Variable to which to save the generated value.
  -->
  <element name="generateRandomValue">
    <interleave>
    <ref name="actionCommonProperties"/>
    <optional>
      <choice>
        <attribute name="length"/>
        <element name="length"><text/></element>
      </choice>
    </optional>
    <optional>
      <choice>
        <attribute name="variable"/>
        <element name="variable"><text/></element>
      </choice>
    </optional>
    </interleave>
  </element>
 
 
  <!--   changePermissions - Change permissions of a file or directory
         Specific properties for <changePermissions>:

         <excludeFiles>: Patterns to exclude files
         <files>: File patterns to apply action to
         <permissions>: Permissions to set to file or directory
  -->
  <element name="changePermissions">
    <interleave>
    <ref name="actionCommonProperties"/>
    <optional>
      <choice>
        <attribute name="excludeFiles"/>
        <element name="excludeFiles"><text/></element>
      </choice>
    </optional>
    <optional>
      <choice>
        <attribute name="files"/>
        <element name="files"><text/></element>
      </choice>
    </optional>
    <optional>
      <choice>
        <attribute name="permissions"/>
        <element name="permissions"><text/></element>
      </choice>
    </optional>
    </interleave>
  </element>
 
 
  <!--   pathManipulation - Performs change on the path and returns it in variable
         Specific properties for <pathManipulation>:

         <path>: The path to manipulate
         <variable>: Variable that will store the new path.
  -->
  <element name="pathManipulation">
    <interleave>
    <ref name="actionCommonProperties"/>
    <optional>
      <choice>
        <attribute name="action"/>
        <element name="action"><text/></element>
      </choice>
    </optional>
    <optional>
      <choice>
        <attribute name="path"/>
        <element name="path"><text/></element>
      </choice>
    </optional>
    <optional>
      <choice>
        <attribute name="variable"/>
        <element name="variable"><text/></element>
      </choice>
    </optional>
    </interleave>
  </element>
 
 
  <!--   dos2unix - Convert plain text files in DOS/Mac format to Unix format.
         Specific properties for <dos2unix>:

         <excludeFiles>: Patterns to exclude files
         <files>: File patterns to apply action to
         <matchHiddenFiles>: Whether or not to attempt to match Windows hidden files
  -->
  <element name="dos2unix">
    <interleave>
    <ref name="actionCommonProperties"/>
    <optional>
      <choice>
        <attribute name="excludeFiles"/>
        <element name="excludeFiles"><text/></element>
      </choice>
    </optional>
    <optional>
      <choice>
        <attribute name="files"/>
        <element name="files"><text/></element>
      </choice>
    </optional>
    <optional>
      <choice>
        <attribute name="matchHiddenFiles"/>
        <element name="matchHiddenFiles"><text/></element>
      </choice>
    </optional>
    </interleave>
  </element>
 
 
  <!--   addGroupToUser - Add a supplementary group to a user. This way, the user is also member of that group. Make sure that the group already exists. If no username is given, then the current logged on user is selected.
         Specific properties for <addGroupToUser>:

         <groupname>: Groupname
         <username>: Username
  -->
  <element name="addGroupToUser">
    <interleave>
    <ref name="actionCommonProperties"/>
    <optional>
      <choice>
        <attribute name="groupname"/>
        <element name="groupname"><text/></element>
      </choice>
    </optional>
    <optional>
      <choice>
        <attribute name="username"/>
        <element name="username"><text/></element>
      </choice>
    </optional>
    </interleave>
  </element>
 
 
  <!--   createWindowsService - Register a program as a Windows service.
         Specific properties for <createWindowsService>:

         <account>: User account under which the service should run. It takes the form domain\username. If the account is a local account, it may be specified as .\username or username. If this option is not specified, the service will run under the LocalSystem account.
         <dependencies>: Comma separated list of services that the created service depends on
         <description>: Program description
         <displayName>: Name displayed in the Windows service control panel
         <password>: Password for the user account if one is specified.
         <program>: Path to program
         <programArguments>: Arguments to pass to the program
         <serviceName>: Internal service name
         <startType>: Specify how the service should be started  - Allowed values:
                      auto: Auto
                      manual: Manual
                      disabled: Disabled
  -->
  <element name="createWindowsService">
    <interleave>
    <ref name="actionCommonProperties"/>
    <optional>
      <choice>
        <attribute name="account"/>
        <element name="account"><text/></element>
      </choice>
    </optional>
    <optional>
      <choice>
        <attribute name="dependencies"/>
        <element name="dependencies"><text/></element>
      </choice>
    </optional>
    <optional>
      <choice>
        <attribute name="description"/>
        <element name="description"><text/></element>
      </choice>
    </optional>
    <optional>
      <choice>
        <attribute name="displayName"/>
        <element name="displayName"><text/></element>
      </choice>
    </optional>
    <optional>
      <choice>
        <attribute name="password"/>
        <element name="password"><text/></element>
      </choice>
    </optional>
    <optional>
      <choice>
        <attribute name="program"/>
        <element name="program"><text/></element>
      </choice>
    </optional>
    <optional>
      <choice>
        <attribute name="programArguments"/>
        <element name="programArguments"><text/></element>
      </choice>
    </optional>
    <optional>
      <choice>
        <attribute name="serviceName"/>
        <element name="serviceName"><text/></element>
      </choice>
    </optional>
    <optional>
      <choice>
        <attribute name="startType"/>
        <element name="startType"><text/></element>
      </choice>
    </optional>
    </interleave>
  </element>
 
 
  <!--   continue - Continue current loop
         Specific properties for <continue>:

  -->
  <element name="continue">
    <interleave>
    <ref name="actionCommonProperties"/>
    </interleave>
  </element>
 
 
  <!--   changeWindowsAttributes - Change Windows attributes for a file or directory.
         Specific properties for <changeWindowsAttributes>:

         <archive>: Whether the file has or has not changed since the last backup.  - Allowed values:
                    1: Yes
                    0: No
                    unchanged: Unchanged
         <excludeFiles>: Patterns to exclude files
         <files>: File patterns to apply action to
         <hidden>: Whether the file is visible or not  - Allowed values:
                   1: Yes
                   0: No
                   unchanged: Unchanged
         <matchHiddenFiles>: Whether or not to attempt to match Windows hidden files
         <readOnly>: Whether the file is read only or writable  - Allowed values:
                     1: Yes
                     0: No
                     unchanged: Unchanged
         <system>: Whether the file is a System file or a regular one  - Allowed values:
                   1: Yes
                   0: No
                   unchanged: Unchanged
  -->
  <element name="changeWindowsAttributes">
    <interleave>
    <ref name="actionCommonProperties"/>
    <optional>
      <choice>
        <attribute name="archive"/>
        <element name="archive"><text/></element>
      </choice>
    </optional>
    <optional>
      <choice>
        <attribute name="excludeFiles"/>
        <element name="excludeFiles"><text/></element>
      </choice>
    </optional>
    <optional>
      <choice>
        <attribute name="files"/>
        <element name="files"><text/></element>
      </choice>
    </optional>
    <optional>
      <choice>
        <attribute name="hidden"/>
        <element name="hidden"><text/></element>
      </choice>
    </optional>
    <optional>
      <choice>
        <attribute name="matchHiddenFiles"/>
        <element name="matchHiddenFiles"><text/></element>
      </choice>
    </optional>
    <optional>
      <choice>
        <attribute name="readOnly"/>
        <element name="readOnly"><text/></element>
      </choice>
    </optional>
    <optional>
      <choice>
        <attribute name="system"/>
        <element name="system"><text/></element>
      </choice>
    </optional>
    </interleave>
  </element>
 
 
  <!--   showQuestion - Prompt a question to the user. The result is stored as 'yes' or 'no' in the given variable name.
         Specific properties for <showQuestion>:

         <default>: Default answer, it can be yes or no.  - Allowed values:
                    yes: Yes
                    no: No
         <text>: Question message that will be shown.
         <title>: Title of the dialog window
         <variable>: Variable name where the result will be stored
  -->
  <element name="showQuestion">
    <interleave>
    <ref name="actionCommonProperties"/>
    <optional>
      <choice>
        <attribute name="default"/>
        <element name="default"><text/></element>
      </choice>
    </optional>
    <optional>
      <choice>
        <attribute name="text"/>
        <element name="text"><text/></element>
      </choice>
    </optional>
    <optional>
      <choice>
        <attribute name="title"/>
        <element name="title"><text/></element>
      </choice>
    </optional>
    <optional>
      <choice>
        <attribute name="variable"/>
        <element name="variable"><text/></element>
      </choice>
    </optional>
    </interleave>
  </element>
 
 
  <!--   findFile - Search for a file in a directory and all the subdirectories.
         Specific properties for <findFile>:

         <baseDirectory>: Path to the directory in which to search for the file. It will search inside the directory and all of its subdirectories.
         <followSymLinks>: Whether or not to follow or not symbolic links
         <pattern>: Pattern for the file that will be searched. The pattern can contain wildcards (*,?).
         <variable>: Variable where the full path to the first matching file will be stored
  -->
  <element name="findFile">
    <interleave>
    <ref name="actionCommonProperties"/>
    <optional>
      <choice>
        <attribute name="baseDirectory"/>
        <element name="baseDirectory"><text/></element>
      </choice>
    </optional>
    <optional>
      <choice>
        <attribute name="followSymLinks"/>
        <element name="followSymLinks"><text/></element>
      </choice>
    </optional>
    <optional>
      <choice>
        <attribute name="pattern"/>
        <element name="pattern"><text/></element>
      </choice>
    </optional>
    <optional>
      <choice>
        <attribute name="variable"/>
        <element name="variable"><text/></element>
      </choice>
    </optional>
    </interleave>
  </element>
 
 
  <!--   actionGroup - Group a set of actions.
         Specific properties for <actionGroup>:

         <actionList>: List of actions to be grouped
  -->
  <element name="actionGroup">
    <interleave>
    <ref name="actionCommonProperties"/>
    <optional>
      <element name="actionList">
        <zeroOrMore>
          <ref name="action"/>
        </zeroOrMore>
      </element>
    </optional>
    </interleave>
  </element>
 
 
  <!--   logMessage - Write a message to the installation log. Useful for debugging purposes.
         Specific properties for <logMessage>:

         <enableTimeStamp>: Whether to enable timestamp in the message or not.
         <text>: Message to include in log
         <timeStampFormat>: Format string for the optional timestamp. The string allows a number of field descriptors.
  -->
  <element name="logMessage">
    <interleave>
    <ref name="actionCommonProperties"/>
    <optional>
      <choice>
        <attribute name="enableTimeStamp"/>
        <element name="enableTimeStamp"><text/></element>
      </choice>
    </optional>
    <optional>
      <choice>
        <attribute name="text"/>
        <element name="text"><text/></element>
      </choice>
    </optional>
    <optional>
      <choice>
        <attribute name="timeStampFormat"/>
        <element name="timeStampFormat"><text/></element>
      </choice>
    </optional>
    </interleave>
  </element>
 
 
  <!--   addDirectoriesToUninstaller - Add directories to the uninstaller.
         Specific properties for <addDirectoriesToUninstaller>:

         <addContents>: Whether or not to add directory contents to the uninstaller
         <excludeFiles>: Patterns to exclude files
         <files>: File patterns to apply action to
         <matchHiddenFiles>: Whether or not to attempt to match Windows hidden files
  -->
  <element name="addDirectoriesToUninstaller">
    <interleave>
    <ref name="actionCommonProperties"/>
    <optional>
      <choice>
        <attribute name="addContents"/>
        <element name="addContents"><text/></element>
      </choice>
    </optional>
    <optional>
      <choice>
        <attribute name="excludeFiles"/>
        <element name="excludeFiles"><text/></element>
      </choice>
    </optional>
    <optional>
      <choice>
        <attribute name="files"/>
        <element name="files"><text/></element>
      </choice>
    </optional>
    <optional>
      <choice>
        <attribute name="matchHiddenFiles"/>
        <element name="matchHiddenFiles"><text/></element>
      </choice>
    </optional>
    </interleave>
  </element>
 
 
  <!--   stopWindowsService - Stop a Windows service
         Specific properties for <stopWindowsService>:

         <delay>: Amount of milliseconds to wait for the service to stop.
         <displayName>: Name displayed in the Windows service control panel
         <serviceName>: Internal service name
  -->
  <element name="stopWindowsService">
    <interleave>
    <ref name="actionCommonProperties"/>
    <optional>
      <choice>
        <attribute name="delay"/>
        <element name="delay"><text/></element>
      </choice>
    </optional>
    <optional>
      <choice>
        <attribute name="displayName"/>
        <element name="displayName"><text/></element>
      </choice>
    </optional>
    <optional>
      <choice>
        <attribute name="serviceName"/>
        <element name="serviceName"><text/></element>
      </choice>
    </optional>
    </interleave>
  </element>
 
 
  <!--   registryGetMatch - Store the value of the first match of a registry key matching a certain expression in an installer variable. If the key or name does not exist, then the variable will be created empty. The name can contain a wildcard expression (using *)
         Specific properties for <registryGetMatch>:

         <key>: Registry key
         <name>: Entry name to read value from
         <variable>: Variable name to store registry value to
         <wowMode>: Determines whether we want to access a 32-bit or 64-bit view of the Registry  - Allowed values:
                    none: None
                    32: 32
                    64: 64
  -->
  <element name="registryGetMatch">
    <interleave>
    <ref name="actionCommonProperties"/>
    <optional>
      <choice>
        <attribute name="key"/>
        <element name="key"><text/></element>
      </choice>
    </optional>
    <optional>
      <choice>
        <attribute name="name"/>
        <element name="name"><text/></element>
      </choice>
    </optional>
    <optional>
      <choice>
        <attribute name="variable"/>
        <element name="variable"><text/></element>
      </choice>
    </optional>
    <optional>
      <choice>
        <attribute name="wowMode"/>
        <element name="wowMode"><text/></element>
      </choice>
    </optional>
    </interleave>
  </element>
 
 
  <!--   componentSelection - Select or deselect components for installation.
         Specific properties for <componentSelection>:

         <deselect>: Comma separated list of components you wish to deselect for installation.
         <select>: Comma separated list of components you wish to select for installation.
  -->
  <element name="componentSelection">
    <interleave>
    <ref name="actionCommonProperties"/>
    <optional>
      <choice>
        <attribute name="deselect"/>
        <element name="deselect"><text/></element>
      </choice>
    </optional>
    <optional>
      <choice>
        <attribute name="select"/>
        <element name="select"><text/></element>
      </choice>
    </optional>
    </interleave>
  </element>
 
 
  <!--   removeUnixService - This action allows you to remove a service in a Linux based system. Note that you will need to run the installer as root to be able to remove services.
         Specific properties for <removeUnixService>:

         <name>: Service Name
  -->
  <element name="removeUnixService">
    <interleave>
    <ref name="actionCommonProperties"/>
    <optional>
      <choice>
        <attribute name="name"/>
        <element name="name"><text/></element>
      </choice>
    </optional>
    </interleave>
  </element>
 
 
  <!--   associateWindowsFileExtension - Define the set of actions (commands) that can be performed for the given file types.
         Specific properties for <associateWindowsFileExtension>:

         <extensions>: Space-separated list of extensions for which the given commands will be available.
         <friendlyName>: Friendly Name for the progID.
         <icon>: Path to the icon file that contains the icon to display.
         <mimeType>: MIME type associated to all the file extensions.
         <progID>: Programmatic Identifier to which the extensions are attached, contains the available commands to be invoked on each file type.
         <scope>: Choose between system or user scope when installing the association  - Allowed values:
                  user: User
                  system: System
         <commandList>: List of commands that can be invoked on each given file type.
  -->
  <element name="associateWindowsFileExtension">
    <interleave>
    <ref name="actionCommonProperties"/>
    <optional>
      <choice>
        <attribute name="extensions"/>
        <element name="extensions"><text/></element>
      </choice>
    </optional>
    <optional>
      <choice>
        <attribute name="friendlyName"/>
        <element name="friendlyName"><text/></element>
      </choice>
    </optional>
    <optional>
      <choice>
        <attribute name="icon"/>
        <element name="icon"><text/></element>
      </choice>
    </optional>
    <optional>
      <choice>
        <attribute name="mimeType"/>
        <element name="mimeType"><text/></element>
      </choice>
    </optional>
    <optional>
      <choice>
        <attribute name="progID"/>
        <element name="progID"><text/></element>
      </choice>
    </optional>
    <optional>
      <choice>
        <attribute name="scope"/>
        <element name="scope"><text/></element>
      </choice>
    </optional>
    <optional>
      <element name="commandList">
        <zeroOrMore>
          <ref name="command"/>
        </zeroOrMore>
      </element>
    </optional>
    </interleave>
  </element>
 
 
  <!--   wow64FsRedirection - Modifies the Windows x64 File System Redirection behavior. It mainly redirects %Windir%System32 to %Windir%SysWOW64 for 32-bit processes running on Windows x64 systems. A similar effect is also applied to 'Program Files'
         Specific properties for <wow64FsRedirection>:

  -->
  <element name="wow64FsRedirection">
    <interleave>
    <ref name="actionCommonProperties"/>
    <optional>
      <choice>
        <attribute name="action"/>
        <element name="action"><text/></element>
      </choice>
    </optional>
    </interleave>
  </element>
 
 
  <!--   deleteGroup - Delete a group from the system. Equivalent to the Unix 'groupdel' command
         Specific properties for <deleteGroup>:

         <groupname>: Group name to delete.
  -->
  <element name="deleteGroup">
    <interleave>
    <ref name="actionCommonProperties"/>
    <optional>
      <choice>
        <attribute name="groupname"/>
        <element name="groupname"><text/></element>
      </choice>
    </optional>
    </interleave>
  </element>
 
 
  <!--   sha256 - Generate a SHA-256 from a given text.
         Specific properties for <sha256>:

         <text>: Text to calculate the SHA-256 on.
         <variable>: Variable to which to save the SHA-256 to.
  -->
  <element name="sha256">
    <interleave>
    <ref name="actionCommonProperties"/>
    <optional>
      <choice>
        <attribute name="text"/>
        <element name="text"><text/></element>
      </choice>
    </optional>
    <optional>
      <choice>
        <attribute name="variable"/>
        <element name="variable"><text/></element>
      </choice>
    </optional>
    </interleave>
  </element>
 
 
  <!--   globalVariables - Mark a list of variables as global. Global variables defined or modified inside custom actions preserve their values after the execution while regular variables are not visible outside.
         Specific properties for <globalVariables>:

         <names>: Variable names
  -->
  <element name="globalVariables">
    <interleave>
    <ref name="actionCommonProperties"/>
    <optional>
      <choice>
        <attribute name="names"/>
        <element name="names"><text/></element>
      </choice>
    </optional>
    </interleave>
  </element>
 
 
  <!--   addFonts - Add fonts to the Windows system
         Specific properties for <addFonts>:

         <excludeFiles>: Patterns to exclude files
         <files>: File patterns to apply action to
         <matchHiddenFiles>: Whether or not to attempt to match Windows hidden files
  -->
  <element name="addFonts">
    <interleave>
    <ref name="actionCommonProperties"/>
    <optional>
      <choice>
        <attribute name="excludeFiles"/>
        <element name="excludeFiles"><text/></element>
      </choice>
    </optional>
    <optional>
      <choice>
        <attribute name="files"/>
        <element name="files"><text/></element>
      </choice>
    </optional>
    <optional>
      <choice>
        <attribute name="matchHiddenFiles"/>
        <element name="matchHiddenFiles"><text/></element>
      </choice>
    </optional>
    </interleave>
  </element>
 
 
  <!--   addUnixService - This action allows you to create a new service in a Linux based system. Note that you will need to run the installer as root to be able to create new services.
         Specific properties for <addUnixService>:

         <description>: Product description
         <name>: Service Name
         <program>: Path to the program
  -->
  <element name="addUnixService">
    <interleave>
    <ref name="actionCommonProperties"/>
    <optional>
      <choice>
        <attribute name="description"/>
        <element name="description"><text/></element>
      </choice>
    </optional>
    <optional>
      <choice>
        <attribute name="name"/>
        <element name="name"><text/></element>
      </choice>
    </optional>
    <optional>
      <choice>
        <attribute name="program"/>
        <element name="program"><text/></element>
      </choice>
    </optional>
    </interleave>
  </element>
 
 
  <!--   createBackupFile - Create a backup of a file or directory. The backup will be named with a .bak extension if no destination is specified. If a backup file already exists, new backups will be named .bak1, .bak2 and so on.
         Specific properties for <createBackupFile>:

         <destination>: Path to the destination backup folder.
         <path>: Path to original file you wish to backup.
  -->
  <element name="createBackupFile">
    <interleave>
    <ref name="actionCommonProperties"/>
    <optional>
      <choice>
        <attribute name="destination"/>
        <element name="destination"><text/></element>
      </choice>
    </optional>
    <optional>
      <choice>
        <attribute name="path"/>
        <element name="path"><text/></element>
      </choice>
    </optional>
    </interleave>
  </element>
 
 
  <!--   clearWindowsACL - Clear Windows ACL permissions of a file or directory
         Specific properties for <clearWindowsACL>:

         <excludeFiles>: Patterns to exclude files
         <files>: File patterns to apply action to
         <matchHiddenFiles>: Whether or not to attempt to match Windows hidden files
  -->
  <element name="clearWindowsACL">
    <interleave>
    <ref name="actionCommonProperties"/>
    <optional>
      <choice>
        <attribute name="excludeFiles"/>
        <element name="excludeFiles"><text/></element>
      </choice>
    </optional>
    <optional>
      <choice>
        <attribute name="files"/>
        <element name="files"><text/></element>
      </choice>
    </optional>
    <optional>
      <choice>
        <attribute name="matchHiddenFiles"/>
        <element name="matchHiddenFiles"><text/></element>
      </choice>
    </optional>
    </interleave>
  </element>
 
 
  <!--   registryDelete - Delete a registry entry. If the entry to delete is only a registry key and it does not exist, the action will be ignored. Deleting a registry value (key + name combination) that does not exist will trigger a regular error.
         Specific properties for <registryDelete>:

         <key>: Registry key
         <name>: Entry name to delete
         <wowMode>: Determines whether we want to access a 32-bit or 64-bit view of the Registry  - Allowed values:
                    none: None
                    32: 32
                    64: 64
  -->
  <element name="registryDelete">
    <interleave>
    <ref name="actionCommonProperties"/>
    <optional>
      <choice>
        <attribute name="key"/>
        <element name="key"><text/></element>
      </choice>
    </optional>
    <optional>
      <choice>
        <attribute name="name"/>
        <element name="name"><text/></element>
      </choice>
    </optional>
    <optional>
      <choice>
        <attribute name="wowMode"/>
        <element name="wowMode"><text/></element>
      </choice>
    </optional>
    </interleave>
  </element>
 
 
  <!--   getWindowsFileVersionInfo - Get file information.
         Specific properties for <getWindowsFileVersionInfo>:

         <path>: Path to the file
         <type>: Type of the file info.  - Allowed values:
                 codepage: Code Page
                 flags: Flags
                 os: Operating System
                 productversion: Product Version
                 signature: Signature
                 structversion: Structure Version
                 type: Type
                 version: Version
         <variable>: Variable to save the file info to
  -->
  <element name="getWindowsFileVersionInfo">
    <interleave>
    <ref name="actionCommonProperties"/>
    <optional>
      <choice>
        <attribute name="path"/>
        <element name="path"><text/></element>
      </choice>
    </optional>
    <optional>
      <choice>
        <attribute name="type"/>
        <element name="type"><text/></element>
      </choice>
    </optional>
    <optional>
      <choice>
        <attribute name="variable"/>
        <element name="variable"><text/></element>
      </choice>
    </optional>
    </interleave>
  </element>
 
 
  <!--   startOSXService - Start Mac OS X service.
         Specific properties for <startOSXService>:

         <serviceName>: Identifier for the service name
  -->
  <element name="startOSXService">
    <interleave>
    <ref name="actionCommonProperties"/>
    <optional>
      <choice>
        <attribute name="serviceName"/>
        <element name="serviceName"><text/></element>
      </choice>
    </optional>
    </interleave>
  </element>
 
 
  <!--   getFreeDiskSpace - Calculate the free disk (KiloBytes) space and save the value in the given variable. Returns -1 if free space cannot be determined.
         Specific properties for <getFreeDiskSpace>:

         <path>: Path to the folder or disk
         <units>: Size units for the returned value.  - Allowed values:
                  KB: KiloBytes
                  MB: MegaBytes
                  GB: GigaBytes
         <variable>: Variable to which to save the result of the calculation
  -->
  <element name="getFreeDiskSpace">
    <interleave>
    <ref name="actionCommonProperties"/>
    <optional>
      <choice>
        <attribute name="path"/>
        <element name="path"><text/></element>
      </choice>
    </optional>
    <optional>
      <choice>
        <attribute name="units"/>
        <element name="units"><text/></element>
      </choice>
    </optional>
    <optional>
      <choice>
        <attribute name="variable"/>
        <element name="variable"><text/></element>
      </choice>
    </optional>
    </interleave>
  </element>
 
 
  <!--   getWindowsACL - Get Windows ACL permissions of a file or directory
         Specific properties for <getWindowsACL>:

         <deniedPermissions>: Variable name to save denied permissions
         <file>: File to retrieve ACL
         <grantedPermissions>: Variable name to save granted permissions
         <username>: User to retrieve ACL
  -->
  <element name="getWindowsACL">
    <interleave>
    <ref name="actionCommonProperties"/>
    <optional>
      <choice>
        <attribute name="deniedPermissions"/>
        <element name="deniedPermissions"><text/></element>
      </choice>
    </optional>
    <optional>
      <choice>
        <attribute name="file"/>
        <element name="file"><text/></element>
      </choice>
    </optional>
    <optional>
      <choice>
        <attribute name="grantedPermissions"/>
        <element name="grantedPermissions"><text/></element>
      </choice>
    </optional>
    <optional>
      <choice>
        <attribute name="username"/>
        <element name="username"><text/></element>
      </choice>
    </optional>
    </interleave>
  </element>
 
 
  <!--   substitute - Substitute a value in a file.
         Specific properties for <substitute>:

         <encoding>: Encoding of the files to substitute  - Allowed values:
                     iso8859-1: ISO8859-1
                     iso8859-2: ISO8859-2
                     utf-8: UTF-8
                     cp1251: CP1251
                     cp1252: CP1252
                     ascii: ASCII
                     macRoman: MacRoman
                     unicode: Unicode
                     binary: Binary
         <excludeFiles>: Patterns to exclude files
         <files>: File patterns to apply action to
         <matchHiddenFiles>: Whether or not to attempt to match Windows hidden files
         <type>: Type of substitution, regular expression or exact  - Allowed values:
                 regexp: Regular expression
                 exact: Exact match
         <substitutionList>: List of patterns/values for a substitution
  -->
  <element name="substitute">
    <interleave>
    <ref name="actionCommonProperties"/>
    <optional>
      <choice>
        <attribute name="encoding"/>
        <element name="encoding"><text/></element>
      </choice>
    </optional>
    <optional>
      <choice>
        <attribute name="excludeFiles"/>
        <element name="excludeFiles"><text/></element>
      </choice>
    </optional>
    <optional>
      <choice>
        <attribute name="files"/>
        <element name="files"><text/></element>
      </choice>
    </optional>
    <optional>
      <choice>
        <attribute name="matchHiddenFiles"/>
        <element name="matchHiddenFiles"><text/></element>
      </choice>
    </optional>
    <optional>
      <choice>
        <attribute name="type"/>
        <element name="type"><text/></element>
      </choice>
    </optional>
    <optional>
      <element name="substitutionList">
        <zeroOrMore>
          <ref name="substitution"/>
        </zeroOrMore>
      </element>
    </optional>
    </interleave>
  </element>
 
 
  <!--   iniFileSet - Set property values of a INI file.
         Specific properties for <iniFileSet>:

         <file>: Path to INI file
         <key>: Property Key
         <section>: INI section
         <value>: Property Value
  -->
  <element name="iniFileSet">
    <interleave>
    <ref name="actionCommonProperties"/>
    <optional>
      <choice>
        <attribute name="file"/>
        <element name="file"><text/></element>
      </choice>
    </optional>
    <optional>
      <choice>
        <attribute name="key"/>
        <element name="key"><text/></element>
      </choice>
    </optional>
    <optional>
      <choice>
        <attribute name="section"/>
        <element name="section"><text/></element>
      </choice>
    </optional>
    <optional>
      <choice>
        <attribute name="value"/>
        <element name="value"><text/></element>
      </choice>
    </optional>
    </interleave>
  </element>
 
 
  <!--   registrySet - Create a new registry key or modify the value of an existing registry key.
         Specific properties for <registrySet>:

         <key>: Registry key
         <name>: Entry name to set or modify value to
         <type>: Type of key to add  - Allowed values:
                 REG_BINARY: binary
                 REG_NONE: none
                 REG_SZ: sz
                 REG_EXPAND_SZ: expand_sz
                 REG_DWORD: dword
                 REG_BIG_ENDIAN: big_endian
                 REG_LINK: link
                 REG_MULTI_SZ: multi_sz
                 REG_RESOURCE_LIST: resource_list
         <value>: Value to set to the registry key
         <wowMode>: Determines whether we want to access a 32-bit or 64-bit view of the Registry  - Allowed values:
                    none: None
                    32: 32
                    64: 64
  -->
  <element name="registrySet">
    <interleave>
    <ref name="actionCommonProperties"/>
    <optional>
      <choice>
        <attribute name="key"/>
        <element name="key"><text/></element>
      </choice>
    </optional>
    <optional>
      <choice>
        <attribute name="name"/>
        <element name="name"><text/></element>
      </choice>
    </optional>
    <optional>
      <choice>
        <attribute name="type"/>
        <element name="type"><text/></element>
      </choice>
    </optional>
    <optional>
      <choice>
        <attribute name="value"/>
        <element name="value"><text/></element>
      </choice>
    </optional>
    <optional>
      <choice>
        <attribute name="wowMode"/>
        <element name="wowMode"><text/></element>
      </choice>
    </optional>
    </interleave>
  </element>
 
 
  <!--   showProgressDialog - Display an indeterminate progressmeter in a popup window to execute a list of actions.
         Specific properties for <showProgressDialog>:

         <height>: Popup window height
         <title>: Title of the progress dialog window
         <width>: Popup window width
         <actionList>: Actions to Execute
  -->
  <element name="showProgressDialog">
    <interleave>
    <ref name="actionCommonProperties"/>
    <optional>
      <choice>
        <attribute name="height"/>
        <element name="height"><text/></element>
      </choice>
    </optional>
    <optional>
      <choice>
        <attribute name="title"/>
        <element name="title"><text/></element>
      </choice>
    </optional>
    <optional>
      <choice>
        <attribute name="width"/>
        <element name="width"><text/></element>
      </choice>
    </optional>
    <optional>
      <element name="actionList">
        <zeroOrMore>
          <ref name="action"/>
        </zeroOrMore>
      </element>
    </optional>
    </interleave>
  </element>
 
 
  <!--   removeFilesFromUninstaller - Remove files or directories from uninstaller.
         Specific properties for <removeFilesFromUninstaller>:

         <excludeFiles>: Patterns to exclude files
         <files>: File patterns to apply action to
         <matchHiddenFiles>: Whether or not to attempt to match Windows hidden files
  -->
  <element name="removeFilesFromUninstaller">
    <interleave>
    <ref name="actionCommonProperties"/>
    <optional>
      <choice>
        <attribute name="excludeFiles"/>
        <element name="excludeFiles"><text/></element>
      </choice>
    </optional>
    <optional>
      <choice>
        <attribute name="files"/>
        <element name="files"><text/></element>
      </choice>
    </optional>
    <optional>
      <choice>
        <attribute name="matchHiddenFiles"/>
        <element name="matchHiddenFiles"><text/></element>
      </choice>
    </optional>
    </interleave>
  </element>
 
 
  <!--   createDirectory - Create a new directory
         Specific properties for <createDirectory>:

         <path>: Path to the new directory
  -->
  <element name="createDirectory">
    <interleave>
    <ref name="actionCommonProperties"/>
    <optional>
      <choice>
        <attribute name="path"/>
        <element name="path"><text/></element>
      </choice>
    </optional>
    </interleave>
  </element>
 
 
  <!--   unzip - Extract content from a zip file to a destination folder.
         Specific properties for <unzip>:

         <destinationDirectory>: Path to the folder where you want the file content to be extracted. The folder must exist and must be writable
         <zipFile>: ZIP file that will be uncompressed
  -->
  <element name="unzip">
    <interleave>
    <ref name="actionCommonProperties"/>
    <optional>
      <choice>
        <attribute name="destinationDirectory"/>
        <element name="destinationDirectory"><text/></element>
      </choice>
    </optional>
    <optional>
      <choice>
        <attribute name="zipFile"/>
        <element name="zipFile"><text/></element>
      </choice>
    </optional>
    </interleave>
  </element>
 
 
  <!--   propertiesFileSet - Writes out property values to a properties file, creating a new file if it does not exist.
         Specific properties for <propertiesFileSet>:

         <encoding>: Encoding of the text file  - Allowed values:
                     iso8859-1: ISO8859-1
                     iso8859-2: ISO8859-2
                     utf-8: UTF-8
                     cp1251: CP1251
                     cp1252: CP1252
                     ascii: ASCII
                     macRoman: MacRoman
                     unicode: Unicode
                     default: Default
                     binary: Binary
         <endOfLineConversion>: End Of Line Conversion  - Allowed values:
                                auto: Auto
                                none: None
                                cr: OS X (cr)
                                crlf: Windows (crlf)
                                lf: Linux (lf)
         <file>: Path to the property file
         <key>: Property key
         <value>: Value to set the key to.
  -->
  <element name="propertiesFileSet">
    <interleave>
    <ref name="actionCommonProperties"/>
    <optional>
      <choice>
        <attribute name="encoding"/>
        <element name="encoding"><text/></element>
      </choice>
    </optional>
    <optional>
      <choice>
        <attribute name="endOfLineConversion"/>
        <element name="endOfLineConversion"><text/></element>
      </choice>
    </optional>
    <optional>
      <choice>
        <attribute name="file"/>
        <element name="file"><text/></element>
      </choice>
    </optional>
    <optional>
      <choice>
        <attribute name="key"/>
        <element name="key"><text/></element>
      </choice>
    </optional>
    <optional>
      <choice>
        <attribute name="value"/>
        <element name="value"><text/></element>
      </choice>
    </optional>
    </interleave>
  </element>
 
 
  <!--   setInstallerVariableFromScriptOutput - Set a installer variable to the output of a script. If the name of the variable matches a parameter name, the value of the parameter will be updated.
         Specific properties for <setInstallerVariableFromScriptOutput>:

         <exec>: Path to the script to run
         <execArgs>: Arguments to pass to the script
         <name>: Name of the variable to set
         <workingDirectory>: Working directory. This is important for scripts that expect to be run from a specific location
  -->
  <element name="setInstallerVariableFromScriptOutput">
    <interleave>
    <ref name="actionCommonProperties"/>
    <optional>
      <choice>
        <attribute name="exec"/>
        <element name="exec"><text/></element>
      </choice>
    </optional>
    <optional>
      <choice>
        <attribute name="execArgs"/>
        <element name="execArgs"><text/></element>
      </choice>
    </optional>
    <optional>
      <choice>
        <attribute name="name"/>
        <element name="name"><text/></element>
      </choice>
    </optional>
    <optional>
      <choice>
        <attribute name="workingDirectory"/>
        <element name="workingDirectory"><text/></element>
      </choice>
    </optional>
    </interleave>
  </element>
 
 
  <!--   registryGetKey - Store in 'variable' the first registry key that matches the given pattern, or set the variable to empty otherwise. The search is case-sensitive for the whole key provided.
         Specific properties for <registryGetKey>:

         <key>: Registry key
         <variable>: Variable to store result
         <wowMode>: Determines whether we want to access a 32-bit or 64-bit view of the Registry  - Allowed values:
                    none: None
                    32: 32
                    64: 64
  -->
  <element name="registryGetKey">
    <interleave>
    <ref name="actionCommonProperties"/>
    <optional>
      <choice>
        <attribute name="key"/>
        <element name="key"><text/></element>
      </choice>
    </optional>
    <optional>
      <choice>
        <attribute name="variable"/>
        <element name="variable"><text/></element>
      </choice>
    </optional>
    <optional>
      <choice>
        <attribute name="wowMode"/>
        <element name="wowMode"><text/></element>
      </choice>
    </optional>
    </interleave>
  </element>
 
 
  <!--   touchFile - Update the access and modification times of a file or directory. If the file does not exist, it can be specified whether to create an empty file or not. It is equivalent to the 'touch' Unix command.
         Specific properties for <touchFile>:

         <createIfNotExists>: Whether or not to create the file in case it does not exist
         <matchHiddenFiles>: Whether or not to attempt to match Windows hidden files
         <path>: Path to the file/directory to be touched
  -->
  <element name="touchFile">
    <interleave>
    <ref name="actionCommonProperties"/>
    <optional>
      <choice>
        <attribute name="createIfNotExists"/>
        <element name="createIfNotExists"><text/></element>
      </choice>
    </optional>
    <optional>
      <choice>
        <attribute name="matchHiddenFiles"/>
        <element name="matchHiddenFiles"><text/></element>
      </choice>
    </optional>
    <optional>
      <choice>
        <attribute name="path"/>
        <element name="path"><text/></element>
      </choice>
    </optional>
    </interleave>
  </element>
 
 
  <!--   getUniqueWindowsServiceName - Return a unique service name
         Specific properties for <getUniqueWindowsServiceName>:

         <displayName>: Initial display name for the service
         <selectedDisplayNameVariable>: Variable to store the service display name
         <selectedServiceNameVariable>: Variable to store the Service name
         <serviceName>: Initial name for the service
  -->
  <element name="getUniqueWindowsServiceName">
    <interleave>
    <ref name="actionCommonProperties"/>
    <optional>
      <choice>
        <attribute name="displayName"/>
        <element name="displayName"><text/></element>
      </choice>
    </optional>
    <optional>
      <choice>
        <attribute name="selectedDisplayNameVariable"/>
        <element name="selectedDisplayNameVariable"><text/></element>
      </choice>
    </optional>
    <optional>
      <choice>
        <attribute name="selectedServiceNameVariable"/>
        <element name="selectedServiceNameVariable"><text/></element>
      </choice>
    </optional>
    <optional>
      <choice>
        <attribute name="serviceName"/>
        <element name="serviceName"><text/></element>
      </choice>
    </optional>
    </interleave>
  </element>
 
 
  <!--   getSymLinkTarget - Get the destination path referenced by the given symbolic link. Returns an empty value if the file doesn't exist or is not a symbolic link.
         Specific properties for <getSymLinkTarget>:

         <link>: Symbolic link path
         <variable>: Variable to store result
  -->
  <element name="getSymLinkTarget">
    <interleave>
    <ref name="actionCommonProperties"/>
    <optional>
      <choice>
        <attribute name="link"/>
        <element name="link"><text/></element>
      </choice>
    </optional>
    <optional>
      <choice>
        <attribute name="variable"/>
        <element name="variable"><text/></element>
      </choice>
    </optional>
    </interleave>
  </element>
 
 
  <!--   addDirectoryToPath - Add a directory to the system path. This will modify the registry on windows and the appropiate shell initialization files on Unix systems
         Specific properties for <addDirectoryToPath>:

         <insertAt>: Where to insert the new directory in the PATH (currently Unix only)  - Allowed values:
                     beginning: Beginning
                     end: End
         <path>: Path to the directory
         <scope>: Select user path or system path.  - Allowed values:
                  system: System
                  user: User
  -->
  <element name="addDirectoryToPath">
    <interleave>
    <ref name="actionCommonProperties"/>
    <optional>
      <choice>
        <attribute name="insertAt"/>
        <element name="insertAt"><text/></element>
      </choice>
    </optional>
    <optional>
      <choice>
        <attribute name="path"/>
        <element name="path"><text/></element>
      </choice>
    </optional>
    <optional>
      <choice>
        <attribute name="scope"/>
        <element name="scope"><text/></element>
      </choice>
    </optional>
    </interleave>
  </element>
 
 
  <!--   getFreePort - Returns the number of the first available port in a range of port numbers specified by initialPort and finalPort (both inclusive).
         Specific properties for <getFreePort>:

         <finalPort>: The final port number on the range (inclusive).
         <initialPort>: The initial port number on the range (inclusive).
         <variable>: Variable that will store the free port number.
  -->
  <element name="getFreePort">
    <interleave>
    <ref name="actionCommonProperties"/>
    <optional>
      <choice>
        <attribute name="finalPort"/>
        <element name="finalPort"><text/></element>
      </choice>
    </optional>
    <optional>
      <choice>
        <attribute name="initialPort"/>
        <element name="initialPort"><text/></element>
      </choice>
    </optional>
    <optional>
      <choice>
        <attribute name="variable"/>
        <element name="variable"><text/></element>
      </choice>
    </optional>
    </interleave>
  </element>
 
 
  <!--   showWarning - Shows a warning dialog with the given text.
         Specific properties for <showWarning>:

         <text>: Warning message that will be shown.
         <title>: Title of the dialog window
  -->
  <element name="showWarning">
    <interleave>
    <ref name="actionCommonProperties"/>
    <optional>
      <choice>
        <attribute name="text"/>
        <element name="text"><text/></element>
      </choice>
    </optional>
    <optional>
      <choice>
        <attribute name="title"/>
        <element name="title"><text/></element>
      </choice>
    </optional>
    </interleave>
  </element>
 
 
  <!--   removeSharedDLL - Decrements the reference count for a shared DLL. If it reaches zero, the file will be removed
         Specific properties for <removeSharedDLL>:

         <path>: Path to the shared DLL
  -->
  <element name="removeSharedDLL">
    <interleave>
    <ref name="actionCommonProperties"/>
    <optional>
      <choice>
        <attribute name="path"/>
        <element name="path"><text/></element>
      </choice>
    </optional>
    </interleave>
  </element>
 
 
  <!--   addEnvironmentVariable - Add a system environment variable.This will modify the registry on windows and the appropiate shell initialization files on Unix systems
         Specific properties for <addEnvironmentVariable>:

         <name>: Environment variable name.
         <scope>: Scope.  - Allowed values:
                  system: System
                  user: User
         <username>: User to modify the environment for. If empty, the current user will be used
         <value>: Variable name
  -->
  <element name="addEnvironmentVariable">
    <interleave>
    <ref name="actionCommonProperties"/>
    <optional>
      <choice>
        <attribute name="name"/>
        <element name="name"><text/></element>
      </choice>
    </optional>
    <optional>
      <choice>
        <attribute name="scope"/>
        <element name="scope"><text/></element>
      </choice>
    </optional>
    <optional>
      <choice>
        <attribute name="username"/>
        <element name="username"><text/></element>
      </choice>
    </optional>
    <optional>
      <choice>
        <attribute name="value"/>
        <element name="value"><text/></element>
      </choice>
    </optional>
    </interleave>
  </element>
 
 
  <!--   urlDecode - Decode a given text using URL formatting specifications and place the result in a variable.
         Specific properties for <urlDecode>:

         <text>: Text to decode
         <variable>: Variable to store the result in
  -->
  <element name="urlDecode">
    <interleave>
    <ref name="actionCommonProperties"/>
    <optional>
      <choice>
        <attribute name="text"/>
        <element name="text"><text/></element>
      </choice>
    </optional>
    <optional>
      <choice>
        <attribute name="variable"/>
        <element name="variable"><text/></element>
      </choice>
    </optional>
    </interleave>
  </element>
 
 
  <!--   getProcessUsingPort - Gets Name Of Process Using Specified Port
         Specific properties for <getProcessUsingPort>:

         <pidVariable>: Variable to use for storing id of the process using the port
         <port>: TCP port to check
         <variable>: Variable to use for storing name of the process using the port
  -->
  <element name="getProcessUsingPort">
    <interleave>
    <ref name="actionCommonProperties"/>
    <optional>
      <choice>
        <attribute name="pidVariable"/>
        <element name="pidVariable"><text/></element>
      </choice>
    </optional>
    <optional>
      <choice>
        <attribute name="port"/>
        <element name="port"><text/></element>
      </choice>
    </optional>
    <optional>
      <choice>
        <attribute name="variable"/>
        <element name="variable"><text/></element>
      </choice>
    </optional>
    </interleave>
  </element>
 
 
  <!--   readFile - Read the contents of a file and save it in a variable.
         Specific properties for <readFile>:

         <encoding>: Encoding of the text file  - Allowed values:
                     iso8859-1: ISO8859-1
                     iso8859-2: ISO8859-2
                     utf-8: UTF-8
                     cp1251: CP1251
                     cp1252: CP1252
                     ascii: ASCII
                     macRoman: MacRoman
                     unicode: Unicode
                     default: Default
                     binary: Binary
         <endOfLineConversion>: End Of Line Conversion  - Allowed values:
                                auto: Auto
                                none: None
                                cr: OS X (cr)
                                crlf: Windows (crlf)
                                lf: Linux (lf)
         <name>: Variable to which to save the file contents
         <path>: Path to the file you wish to read the contents from
         <removeBOM>: Whether or not to remove or not Byte Order Mark on Unicode files
  -->
  <element name="readFile">
    <interleave>
    <ref name="actionCommonProperties"/>
    <optional>
      <choice>
        <attribute name="encoding"/>
        <element name="encoding"><text/></element>
      </choice>
    </optional>
    <optional>
      <choice>
        <attribute name="endOfLineConversion"/>
        <element name="endOfLineConversion"><text/></element>
      </choice>
    </optional>
    <optional>
      <choice>
        <attribute name="name"/>
        <element name="name"><text/></element>
      </choice>
    </optional>
    <optional>
      <choice>
        <attribute name="path"/>
        <element name="path"><text/></element>
      </choice>
    </optional>
    <optional>
      <choice>
        <attribute name="removeBOM"/>
        <element name="removeBOM"><text/></element>
      </choice>
    </optional>
    </interleave>
  </element>
 
 
  <!--   autodetectJava - Autodetects an existing Java (tm) installation in the system and creates corresponding installer variables: java_executable java_vendor java_version java_version_major java_version_full java_bitness. If a valid java version was found, the variable java_autodetected will be set to 1
         Specific properties for <autodetectJava>:

         <promptUser>: Prompt user to choose appropriate version
         <selectionOrder>: Order of the Java versions detected  - Allowed values:
                           first: First
                           oldest: Oldest
                           newest: Newest
         <validVersionList>: List of supported Java versions
  -->
  <element name="autodetectJava">
    <interleave>
    <ref name="actionCommonProperties"/>
    <optional>
      <choice>
        <attribute name="promptUser"/>
        <element name="promptUser"><text/></element>
      </choice>
    </optional>
    <optional>
      <choice>
        <attribute name="selectionOrder"/>
        <element name="selectionOrder"><text/></element>
      </choice>
    </optional>
    <optional>
      <element name="validVersionList">
        <zeroOrMore>
          <ref name="validVersion"/>
        </zeroOrMore>
      </element>
    </optional>
    </interleave>
  </element>
 
 
  <!--   addUser - Add a user to the system.
         Specific properties for <addUser>:

         <homedir>: Path to the users homedir
         <password>: Password for the user account.
         <username>: Username to add to the system
  -->
  <element name="addUser">
    <interleave>
    <ref name="actionCommonProperties"/>
    <optional>
      <choice>
        <attribute name="homedir"/>
        <element name="homedir"><text/></element>
      </choice>
    </optional>
    <optional>
      <choice>
        <attribute name="password"/>
        <element name="password"><text/></element>
      </choice>
    </optional>
    <optional>
      <choice>
        <attribute name="username"/>
        <element name="username"><text/></element>
      </choice>
    </optional>
    </interleave>
  </element>
 
 
  <!--   addUnixDesktopStartUpItem - Adds a program to be executed whenever a window manager session starts (only Linux KDE/Gnome supported).
         Specific properties for <addUnixDesktopStartUpItem>:

         <description>: The description of the program.
         <name>: The name of this startup item.
         <program>: Path to the program to be executed when the session starts.
         <programArguments>: Arguments to be considered when running the program (only available for GNOME).
         <username>: User to add the Startup item for. If empty, the current user will be used
  -->
  <element name="addUnixDesktopStartUpItem">
    <interleave>
    <ref name="actionCommonProperties"/>
    <optional>
      <choice>
        <attribute name="description"/>
        <element name="description"><text/></element>
      </choice>
    </optional>
    <optional>
      <choice>
        <attribute name="name"/>
        <element name="name"><text/></element>
      </choice>
    </optional>
    <optional>
      <choice>
        <attribute name="program"/>
        <element name="program"><text/></element>
      </choice>
    </optional>
    <optional>
      <choice>
        <attribute name="programArguments"/>
        <element name="programArguments"><text/></element>
      </choice>
    </optional>
    <optional>
      <choice>
        <attribute name="username"/>
        <element name="username"><text/></element>
      </choice>
    </optional>
    </interleave>
  </element>
 
 
  <!--   getTotalDiskSpace - Get the total disk (KiloBytes) space and save the value in the given variable. Returns -1 if total space cannot be determined.
         Specific properties for <getTotalDiskSpace>:

         <path>: Path to the folder or disk
         <units>: Size units for the returned value.  - Allowed values:
                  KB: KiloBytes
                  MB: MegaBytes
                  GB: GigaBytes
         <variable>: Variable to which to save the result of the calculation
  -->
  <element name="getTotalDiskSpace">
    <interleave>
    <ref name="actionCommonProperties"/>
    <optional>
      <choice>
        <attribute name="path"/>
        <element name="path"><text/></element>
      </choice>
    </optional>
    <optional>
      <choice>
        <attribute name="units"/>
        <element name="units"><text/></element>
      </choice>
    </optional>
    <optional>
      <choice>
        <attribute name="variable"/>
        <element name="variable"><text/></element>
      </choice>
    </optional>
    </interleave>
  </element>
 
 
  <!--   renameFile - Change the name of a file or directory
         Specific properties for <renameFile>:

         <destination>: New name of the file.
         <excludeFiles>: Patterns to exclude files
         <matchHiddenFiles>: Whether or not to attempt to match Windows hidden files
         <origin>: Original name of the file.
  -->
  <element name="renameFile">
    <interleave>
    <ref name="actionCommonProperties"/>
    <optional>
      <choice>
        <attribute name="destination"/>
        <element name="destination"><text/></element>
      </choice>
    </optional>
    <optional>
      <choice>
        <attribute name="excludeFiles"/>
        <element name="excludeFiles"><text/></element>
      </choice>
    </optional>
    <optional>
      <choice>
        <attribute name="matchHiddenFiles"/>
        <element name="matchHiddenFiles"><text/></element>
      </choice>
    </optional>
    <optional>
      <choice>
        <attribute name="origin"/>
        <element name="origin"><text/></element>
      </choice>
    </optional>
    </interleave>
  </element>
 
 
  <!--   addChoiceOptions - Add options to an existing choice parameter
         Specific properties for <addChoiceOptions>:

         <name>: Name of an existing choice parameter.
         <optionList>: List of options to give to a choice parameter
  -->
  <element name="addChoiceOptions">
    <interleave>
    <ref name="actionCommonProperties"/>
    <optional>
      <choice>
        <attribute name="name"/>
        <element name="name"><text/></element>
      </choice>
    </optional>
    <optional>
      <element name="optionList">
        <zeroOrMore>
          <ref name="option"/>
        </zeroOrMore>
      </element>
    </optional>
    </interleave>
  </element>
 
 
  <!--   createJavaLaunchers - Creates one or more Java launchers in specified location.
         Specific properties for <createJavaLaunchers>:

         <destination>: Path to the location where you want to create the launchers.
         <javaLauncherList>: List of launchers to create.
  -->
  <element name="createJavaLaunchers">
    <interleave>
    <ref name="actionCommonProperties"/>
    <optional>
      <choice>
        <attribute name="destination"/>
        <element name="destination"><text/></element>
      </choice>
    </optional>
    <optional>
      <element name="javaLauncherList">
        <zeroOrMore>
          <ref name="javaLauncher"/>
        </zeroOrMore>
      </element>
    </optional>
    </interleave>
  </element>
 
 
  <!--   createSymLink - Create a symbolic link to a file. It is the equivalent to the Unix 'ln' command.
         Specific properties for <createSymLink>:

         <linkName>: Symbolic link name.
         <target>: Path to the file to which you want to create a symbolic link.
  -->
  <element name="createSymLink">
    <interleave>
    <ref name="actionCommonProperties"/>
    <optional>
      <choice>
        <attribute name="linkName"/>
        <element name="linkName"><text/></element>
      </choice>
    </optional>
    <optional>
      <choice>
        <attribute name="target"/>
        <element name="target"><text/></element>
      </choice>
    </optional>
    </interleave>
  </element>
 
 
  <!--   wait - Pause the installation for given time
         Specific properties for <wait>:

         <ms>: Number of milliseconds to wait
  -->
  <element name="wait">
    <interleave>
    <ref name="actionCommonProperties"/>
    <optional>
      <choice>
        <attribute name="ms"/>
        <element name="ms"><text/></element>
      </choice>
    </optional>
    </interleave>
  </element>
 
 
  <!--   removeWindowsFileAssociation - Unregisters the associations between the given file types and any set of actions (commands) that may be defined on them.
         Specific properties for <removeWindowsFileAssociation>:

         <extensions>: Space-separated list of extensions to remove.
         <mimeType>: MIME type to remove, associated to all the file extensions. It must be specified if you want to delete MIME associations added previously with associateWindowsFileExtension action.
         <progID>: Programmatic Identifier to remove, to which the extensions are attached.
         <scope>: Choose between system or user scope when installing the association  - Allowed values:
                  user: User
                  system: System
  -->
  <element name="removeWindowsFileAssociation">
    <interleave>
    <ref name="actionCommonProperties"/>
    <optional>
      <choice>
        <attribute name="extensions"/>
        <element name="extensions"><text/></element>
      </choice>
    </optional>
    <optional>
      <choice>
        <attribute name="mimeType"/>
        <element name="mimeType"><text/></element>
      </choice>
    </optional>
    <optional>
      <choice>
        <attribute name="progID"/>
        <element name="progID"><text/></element>
      </choice>
    </optional>
    <optional>
      <choice>
        <attribute name="scope"/>
        <element name="scope"><text/></element>
      </choice>
    </optional>
    </interleave>
  </element>
 
 
  <!--   removeFonts - Remove fonts from the Windows system
         Specific properties for <removeFonts>:

         <excludeFiles>: Patterns to exclude files
         <files>: File patterns to apply action to
         <matchHiddenFiles>: Whether or not to attempt to match Windows hidden files
  -->
  <element name="removeFonts">
    <interleave>
    <ref name="actionCommonProperties"/>
    <optional>
      <choice>
        <attribute name="excludeFiles"/>
        <element name="excludeFiles"><text/></element>
      </choice>
    </optional>
    <optional>
      <choice>
        <attribute name="files"/>
        <element name="files"><text/></element>
      </choice>
    </optional>
    <optional>
      <choice>
        <attribute name="matchHiddenFiles"/>
        <element name="matchHiddenFiles"><text/></element>
      </choice>
    </optional>
    </interleave>
  </element>
 
 
  <!--   addFilesToUninstaller - Add files to uninstaller.
         Specific properties for <addFilesToUninstaller>:

         <excludeFiles>: Patterns to exclude files
         <files>: File patterns to apply action to
         <matchHiddenFiles>: Whether or not to attempt to match Windows hidden files
  -->
  <element name="addFilesToUninstaller">
    <interleave>
    <ref name="actionCommonProperties"/>
    <optional>
      <choice>
        <attribute name="excludeFiles"/>
        <element name="excludeFiles"><text/></element>
      </choice>
    </optional>
    <optional>
      <choice>
        <attribute name="files"/>
        <element name="files"><text/></element>
      </choice>
    </optional>
    <optional>
      <choice>
        <attribute name="matchHiddenFiles"/>
        <element name="matchHiddenFiles"><text/></element>
      </choice>
    </optional>
    </interleave>
  </element>
 
 
  <!--   iniFileGet - Extract property values out of a INI file.
         Specific properties for <iniFileGet>:

         <file>: Path to INI file
         <key>: Property Key
         <section>: INI section
         <variable>: Variable name to save property to
  -->
  <element name="iniFileGet">
    <interleave>
    <ref name="actionCommonProperties"/>
    <optional>
      <choice>
        <attribute name="file"/>
        <element name="file"><text/></element>
      </choice>
    </optional>
    <optional>
      <choice>
        <attribute name="key"/>
        <element name="key"><text/></element>
      </choice>
    </optional>
    <optional>
      <choice>
        <attribute name="section"/>
        <element name="section"><text/></element>
      </choice>
    </optional>
    <optional>
      <choice>
        <attribute name="variable"/>
        <element name="variable"><text/></element>
      </choice>
    </optional>
    </interleave>
  </element>
 
 
  <!--   stopOSXService - Stop Mac OS X service.
         Specific properties for <stopOSXService>:

         <serviceName>: Identifier for the service name
  -->
  <element name="stopOSXService">
    <interleave>
    <ref name="actionCommonProperties"/>
    <optional>
      <choice>
        <attribute name="serviceName"/>
        <element name="serviceName"><text/></element>
      </choice>
    </optional>
    </interleave>
  </element>
 
 
  <!--   registryGet - Store the value of a registry key in an installer variable. If the key or name does not exist, then the variable will be created empty.
         Specific properties for <registryGet>:

         <key>: Registry key
         <name>: Entry name to read value from
         <variable>: Variable name to store registry value to
         <wowMode>: Determines whether we want to access a 32-bit or 64-bit view of the Registry  - Allowed values:
                    none: None
                    32: 32
                    64: 64
  -->
  <element name="registryGet">
    <interleave>
    <ref name="actionCommonProperties"/>
    <optional>
      <choice>
        <attribute name="key"/>
        <element name="key"><text/></element>
      </choice>
    </optional>
    <optional>
      <choice>
        <attribute name="name"/>
        <element name="name"><text/></element>
      </choice>
    </optional>
    <optional>
      <choice>
        <attribute name="variable"/>
        <element name="variable"><text/></element>
      </choice>
    </optional>
    <optional>
      <choice>
        <attribute name="wowMode"/>
        <element name="wowMode"><text/></element>
      </choice>
    </optional>
    </interleave>
  </element>
 
 
  <!--   exit - Exit the installer/uninstaller.
         Specific properties for <exit>:

         <exitCode>: exit code returned by the installer/uninstaller
  -->
  <element name="exit">
    <interleave>
    <ref name="actionCommonProperties"/>
    <optional>
      <choice>
        <attribute name="exitCode"/>
        <element name="exitCode"><text/></element>
      </choice>
    </optional>
    </interleave>
  </element>
 
 
  <!--   zip - Pack one or more files to a zip file, relative to base directory.
         Specific properties for <zip>:

         <baseDirectory>: Directory that all files will be packed relatively to
         <excludeFiles>: Patterns to exclude files
         <files>: File patterns to apply action to
         <matchHiddenFiles>: Whether or not to attempt to match Windows hidden files
         <zipFile>: ZIP file that will be created
  -->
  <element name="zip">
    <interleave>
    <ref name="actionCommonProperties"/>
    <optional>
      <choice>
        <attribute name="baseDirectory"/>
        <element name="baseDirectory"><text/></element>
      </choice>
    </optional>
    <optional>
      <choice>
        <attribute name="excludeFiles"/>
        <element name="excludeFiles"><text/></element>
      </choice>
    </optional>
    <optional>
      <choice>
        <attribute name="files"/>
        <element name="files"><text/></element>
      </choice>
    </optional>
    <optional>
      <choice>
        <attribute name="matchHiddenFiles"/>
        <element name="matchHiddenFiles"><text/></element>
      </choice>
    </optional>
    <optional>
      <choice>
        <attribute name="zipFile"/>
        <element name="zipFile"><text/></element>
      </choice>
    </optional>
    </interleave>
  </element>
 
 
  <!--   stringModify - Perform one of the allowed transformations in the specified text, storing the result into a variable.
         Specific properties for <stringModify>:

         <logic>: Transformation to perform.  - Allowed values:
                  toupper: Convert to uppercase
                  tolower: Convert to lowercase
                  totitle: Convert the first character to uppercase
                  trimleft: Remove leading whitespace
                  trimright: Remove trailing whitespace
                  trim: Remove leading and trailing whitespace
         <text>: Text which will be transformed.
         <variable>: Variable name which will store the result.
  -->
  <element name="stringModify">
    <interleave>
    <ref name="actionCommonProperties"/>
    <optional>
      <choice>
        <attribute name="logic"/>
        <element name="logic"><text/></element>
      </choice>
    </optional>
    <optional>
      <choice>
        <attribute name="text"/>
        <element name="text"><text/></element>
      </choice>
    </optional>
    <optional>
      <choice>
        <attribute name="variable"/>
        <element name="variable"><text/></element>
      </choice>
    </optional>
    </interleave>
  </element>
 
 
  <!--   addChoiceOptionsFromText - Add options to an existing choice parameter from a given text
         Specific properties for <addChoiceOptionsFromText>:

         <name>: Name of an existing choice parameter.
         <text>: Text with the options to give to a choice parameter
  -->
  <element name="addChoiceOptionsFromText">
    <interleave>
    <ref name="actionCommonProperties"/>
    <optional>
      <choice>
        <attribute name="name"/>
        <element name="name"><text/></element>
      </choice>
    </optional>
    <optional>
      <choice>
        <attribute name="text"/>
        <element name="text"><text/></element>
      </choice>
    </optional>
    </interleave>
  </element>
 
 
  <!--   break - Break current loop
         Specific properties for <break>:

  -->
  <element name="break">
    <interleave>
    <ref name="actionCommonProperties"/>
    </interleave>
  </element>
 
 
  <!--   propertiesFileGet - Extract property values out of a properties file.
         Specific properties for <propertiesFileGet>:

         <encoding>: Encoding of the text file  - Allowed values:
                     iso8859-1: ISO8859-1
                     iso8859-2: ISO8859-2
                     utf-8: UTF-8
                     cp1251: CP1251
                     cp1252: CP1252
                     ascii: ASCII
                     macRoman: MacRoman
                     unicode: Unicode
                     default: Default
                     binary: Binary
         <endOfLineConversion>: End Of Line Conversion  - Allowed values:
                                auto: Auto
                                none: None
                                cr: OS X (cr)
                                crlf: Windows (crlf)
                                lf: Linux (lf)
         <file>: Path to the property file
         <key>: Property key
         <variable>: Variable name to save property to
  -->
  <element name="propertiesFileGet">
    <interleave>
    <ref name="actionCommonProperties"/>
    <optional>
      <choice>
        <attribute name="encoding"/>
        <element name="encoding"><text/></element>
      </choice>
    </optional>
    <optional>
      <choice>
        <attribute name="endOfLineConversion"/>
        <element name="endOfLineConversion"><text/></element>
      </choice>
    </optional>
    <optional>
      <choice>
        <attribute name="file"/>
        <element name="file"><text/></element>
      </choice>
    </optional>
    <optional>
      <choice>
        <attribute name="key"/>
        <element name="key"><text/></element>
      </choice>
    </optional>
    <optional>
      <choice>
        <attribute name="variable"/>
        <element name="variable"><text/></element>
      </choice>
    </optional>
    </interleave>
  </element>
 
 
  <!--   launchBrowser - Launch the default web browser with a given URL.
         Specific properties for <launchBrowser>:

         <url>: URL of the page to be shown.
  -->
  <element name="launchBrowser">
    <interleave>
    <ref name="actionCommonProperties"/>
    <optional>
      <choice>
        <attribute name="url"/>
        <element name="url"><text/></element>
      </choice>
    </optional>
    </interleave>
  </element>
 
 
  <!--   deleteWindowsService - Delete a Windows service
         Specific properties for <deleteWindowsService>:

         <displayName>: Name displayed in the Windows service control panel
         <serviceName>: Internal service name
  -->
  <element name="deleteWindowsService">
    <interleave>
    <ref name="actionCommonProperties"/>
    <optional>
      <choice>
        <attribute name="displayName"/>
        <element name="displayName"><text/></element>
      </choice>
    </optional>
    <optional>
      <choice>
        <attribute name="serviceName"/>
        <element name="serviceName"><text/></element>
      </choice>
    </optional>
    </interleave>
  </element>
 
 
  <!--   setInstallerVariable - Set a installer variable. If the name of the variable matches a parameter name, the value of the parameter will be updated.
         Specific properties for <setInstallerVariable>:

         <name>: Variable name
         <persist>: Whether the variable will be available in the uninstaller as well.
         <value>: Value to set the variable to
  -->
  <element name="setInstallerVariable">
    <interleave>
    <ref name="actionCommonProperties"/>
    <optional>
      <choice>
        <attribute name="name"/>
        <element name="name"><text/></element>
      </choice>
    </optional>
    <optional>
      <choice>
        <attribute name="persist"/>
        <element name="persist"><text/></element>
      </choice>
    </optional>
    <optional>
      <choice>
        <attribute name="value"/>
        <element name="value"><text/></element>
      </choice>
    </optional>
    </interleave>
  </element>
 
 
  <!--   writeFile - Create or replace a file with a certain text content.
         Specific properties for <writeFile>:

         <encoding>: Encoding of the text file  - Allowed values:
                     iso8859-1: ISO8859-1
                     iso8859-2: ISO8859-2
                     utf-8: UTF-8
                     cp1251: CP1251
                     cp1252: CP1252
                     ascii: ASCII
                     macRoman: MacRoman
                     unicode: Unicode
                     default: Default
                     binary: Binary
         <endOfLineConversion>: End Of Line Conversion  - Allowed values:
                                auto: Auto
                                none: None
                                cr: OS X (cr)
                                crlf: Windows (crlf)
                                lf: Linux (lf)
         <path>: Path of the file to be created or replaced
         <text>: Text to write
  -->
  <element name="writeFile">
    <interleave>
    <ref name="actionCommonProperties"/>
    <optional>
      <choice>
        <attribute name="encoding"/>
        <element name="encoding"><text/></element>
      </choice>
    </optional>
    <optional>
      <choice>
        <attribute name="endOfLineConversion"/>
        <element name="endOfLineConversion"><text/></element>
      </choice>
    </optional>
    <optional>
      <choice>
        <attribute name="path"/>
        <element name="path"><text/></element>
      </choice>
    </optional>
    <optional>
      <choice>
        <attribute name="text"/>
        <element name="text"><text/></element>
      </choice>
    </optional>
    </interleave>
  </element>
 
 
  <!--   runProgram - Run a program or script
         Specific properties for <runProgram>:

         <program>: Path to program or script to run
         <programArguments>: Program arguments
         <runAs>: Run the program or script as a specific user id. It will only take effect on Unix system and when running the installer as root
         <stdin>: Text to send to program's standard input.
         <useMSDOSPath>: Whether or not to use or not MSDOS program name path on Windows
         <workingDirectory>: Working directory. This is important for scripts that expect to be run from a specific location. By default, it will be the directory where the script or program is located
  -->
  <element name="runProgram">
    <interleave>
    <ref name="actionCommonProperties"/>
    <optional>
      <choice>
        <attribute name="program"/>
        <element name="program"><text/></element>
      </choice>
    </optional>
    <optional>
      <choice>
        <attribute name="programArguments"/>
        <element name="programArguments"><text/></element>
      </choice>
    </optional>
    <optional>
      <choice>
        <attribute name="runAs"/>
        <element name="runAs"><text/></element>
      </choice>
    </optional>
    <optional>
      <choice>
        <attribute name="stdin"/>
        <element name="stdin"><text/></element>
      </choice>
    </optional>
    <optional>
      <choice>
        <attribute name="useMSDOSPath"/>
        <element name="useMSDOSPath"><text/></element>
      </choice>
    </optional>
    <optional>
      <choice>
        <attribute name="workingDirectory"/>
        <element name="workingDirectory"><text/></element>
      </choice>
    </optional>
    </interleave>
  </element>
 
 
  <!--   httpPost - Access a URL using HTTP POST and save the result into a file.
         Specific properties for <httpPost>:

         <filename>: Filename to which to save the result to
         <password>: Password for URLs that require authentication
         <url>: URL to launch
         <username>: Username for URLs that require authentication
         <httpHeadersList>: List of headers for the request
         <queryParameterList>: List of variables that will be included in the POST query.
  -->
  <element name="httpPost">
    <interleave>
    <ref name="actionCommonProperties"/>
    <optional>
      <choice>
        <attribute name="filename"/>
        <element name="filename"><text/></element>
      </choice>
    </optional>
    <optional>
      <choice>
        <attribute name="password"/>
        <element name="password"><text/></element>
      </choice>
    </optional>
    <optional>
      <choice>
        <attribute name="url"/>
        <element name="url"><text/></element>
      </choice>
    </optional>
    <optional>
      <choice>
        <attribute name="username"/>
        <element name="username"><text/></element>
      </choice>
    </optional>
    <optional>
      <element name="httpHeadersList">
        <zeroOrMore>
          <ref name="httpHeader"/>
        </zeroOrMore>
      </element>
    </optional>
    <optional>
      <element name="queryParameterList">
        <zeroOrMore>
          <ref name="queryParameter"/>
        </zeroOrMore>
      </element>
    </optional>
    </interleave>
  </element>
 
 
  <!--   removeWindowsAccountRights - Remove rights from user or group on Windows
         Specific properties for <removeWindowsAccountRights>:

         <account>: User or group name
         <rights>: Account rights, separated by spaces; Example value: SeServiceLogonRight. A complete list can be obtained from http://msdn.microsoft.com/en-us/library/aa375728(v=VS.85).aspx
  -->
  <element name="removeWindowsAccountRights">
    <interleave>
    <ref name="actionCommonProperties"/>
    <optional>
      <choice>
        <attribute name="account"/>
        <element name="account"><text/></element>
      </choice>
    </optional>
    <optional>
      <choice>
        <attribute name="rights"/>
        <element name="rights"><text/></element>
      </choice>
    </optional>
    </interleave>
  </element>
 
 
  <!--   setInstallerVariableFromRegEx - Set a installer variable to the result of a regular expression. If the name of the variable matches a parameter name, the value of the parameter will be updated.
         Specific properties for <setInstallerVariableFromRegEx>:

         <name>: Name of the variable to set
         <pattern>: Pattern to match
         <substitution>: Value to replace matched text with
         <text>: Text to match
  -->
  <element name="setInstallerVariableFromRegEx">
    <interleave>
    <ref name="actionCommonProperties"/>
    <optional>
      <choice>
        <attribute name="name"/>
        <element name="name"><text/></element>
      </choice>
    </optional>
    <optional>
      <choice>
        <attribute name="pattern"/>
        <element name="pattern"><text/></element>
      </choice>
    </optional>
    <optional>
      <choice>
        <attribute name="substitution"/>
        <element name="substitution"><text/></element>
      </choice>
    </optional>
    <optional>
      <choice>
        <attribute name="text"/>
        <element name="text"><text/></element>
      </choice>
    </optional>
    </interleave>
  </element>
 
 
  <!--   waitForPort - Pause the installation for a maximum timeout until a server process is listening in the specified port
         Specific properties for <waitForPort>:

         <port>: TCP port to check
         <state>: Wait for port to be free or in use.  - Allowed values:
                  free: Free
                  in_use: In use
         <timeout>: Maximum amount of time to wait (in milliseconds)
  -->
  <element name="waitForPort">
    <interleave>
    <ref name="actionCommonProperties"/>
    <optional>
      <choice>
        <attribute name="port"/>
        <element name="port"><text/></element>
      </choice>
    </optional>
    <optional>
      <choice>
        <attribute name="state"/>
        <element name="state"><text/></element>
      </choice>
    </optional>
    <optional>
      <choice>
        <attribute name="timeout"/>
        <element name="timeout"><text/></element>
      </choice>
    </optional>
    </interleave>
  </element>
 
 
  <!--   deleteUser - Delete a user from the system. Equivalent to the Unix 'userdel' command
         Specific properties for <deleteUser>:

         <username>: Username
  -->
  <element name="deleteUser">
    <interleave>
    <ref name="actionCommonProperties"/>
    <optional>
      <choice>
        <attribute name="username"/>
        <element name="username"><text/></element>
      </choice>
    </optional>
    </interleave>
  </element>
 
 
  <!--   showChoiceQuestion - Prompt a choice question dialog to the user.
         Specific properties for <showChoiceQuestion>:

         <defaultValue>: Default value
         <text>: Information message that will be shown
         <title>: Dialog title
         <variable>: Variable to store choice
         <optionList>: Predefined list of options that allows the user to select a value
  -->
  <element name="showChoiceQuestion">
    <interleave>
    <ref name="actionCommonProperties"/>
    <optional>
      <choice>
        <attribute name="defaultValue"/>
        <element name="defaultValue"><text/></element>
      </choice>
    </optional>
    <optional>
      <choice>
        <attribute name="text"/>
        <element name="text"><text/></element>
      </choice>
    </optional>
    <optional>
      <choice>
        <attribute name="title"/>
        <element name="title"><text/></element>
      </choice>
    </optional>
    <optional>
      <choice>
        <attribute name="variable"/>
        <element name="variable"><text/></element>
      </choice>
    </optional>
    <optional>
      <element name="optionList">
        <zeroOrMore>
          <ref name="option"/>
        </zeroOrMore>
      </element>
    </optional>
    </interleave>
  </element>
 
 
  <!--   deleteScheduledTask - Delete Windows Scheduled Task
         Specific properties for <deleteScheduledTask>:

         <name>: Name of the Task
  -->
  <element name="deleteScheduledTask">
    <interleave>
    <ref name="actionCommonProperties"/>
    <optional>
      <choice>
        <attribute name="name"/>
        <element name="name"><text/></element>
      </choice>
    </optional>
    </interleave>
  </element>
 
 
  <!--   changeOSXAttributes - Change OSX attributes of a file or directory. Trying to set an attribute on a read only file will result in a failure. Make sure the file is writable before attempting to change any attribute other than, of course, readOnly
         Specific properties for <changeOSXAttributes>:

         <creator>: Creator to set to file or directory
         <excludeFiles>: Patterns to exclude files
         <files>: File patterns to apply action to
         <hidden>: Whether the file is visible or not  - Allowed values:
                   1: Yes
                   0: No
                   unchanged: Unchanged
         <readOnly>: Whether the file is read only or writable  - Allowed values:
                     1: Yes
                     0: No
                     unchanged: Unchanged
         <type>: Type to set to file or directory
  -->
  <element name="changeOSXAttributes">
    <interleave>
    <ref name="actionCommonProperties"/>
    <optional>
      <choice>
        <attribute name="creator"/>
        <element name="creator"><text/></element>
      </choice>
    </optional>
    <optional>
      <choice>
        <attribute name="excludeFiles"/>
        <element name="excludeFiles"><text/></element>
      </choice>
    </optional>
    <optional>
      <choice>
        <attribute name="files"/>
        <element name="files"><text/></element>
      </choice>
    </optional>
    <optional>
      <choice>
        <attribute name="hidden"/>
        <element name="hidden"><text/></element>
      </choice>
    </optional>
    <optional>
      <choice>
        <attribute name="readOnly"/>
        <element name="readOnly"><text/></element>
      </choice>
    </optional>
    <optional>
      <choice>
        <attribute name="type"/>
        <element name="type"><text/></element>
      </choice>
    </optional>
    </interleave>
  </element>
 
 
  <!--   httpGet - Access a URL and save the result into a file.
         Specific properties for <httpGet>:

         <filename>: Filename to which to save the result to
         <password>: Password for URLs that require authentication
         <url>: URL to launch
         <username>: Username for URLs that require authentication
         <httpHeadersList>: List of headers for the request
  -->
  <element name="httpGet">
    <interleave>
    <ref name="actionCommonProperties"/>
    <optional>
      <choice>
        <attribute name="filename"/>
        <element name="filename"><text/></element>
      </choice>
    </optional>
    <optional>
      <choice>
        <attribute name="password"/>
        <element name="password"><text/></element>
      </choice>
    </optional>
    <optional>
      <choice>
        <attribute name="url"/>
        <element name="url"><text/></element>
      </choice>
    </optional>
    <optional>
      <choice>
        <attribute name="username"/>
        <element name="username"><text/></element>
      </choice>
    </optional>
    <optional>
      <element name="httpHeadersList">
        <zeroOrMore>
          <ref name="httpHeader"/>
        </zeroOrMore>
      </element>
    </optional>
    </interleave>
  </element>
 
 
  <!--   decodeBase64 - Decode a string using base64.
         Specific properties for <decodeBase64>:

         <text>: Text to process
         <variable>: Variable to save the final result to.
  -->
  <element name="decodeBase64">
    <interleave>
    <ref name="actionCommonProperties"/>
    <optional>
      <choice>
        <attribute name="text"/>
        <element name="text"><text/></element>
      </choice>
    </optional>
    <optional>
      <choice>
        <attribute name="variable"/>
        <element name="variable"><text/></element>
      </choice>
    </optional>
    </interleave>
  </element>
 
 
  <!--   changeOwnerAndGroup - Change the owner and group of a file or directory
         Specific properties for <changeOwnerAndGroup>:

         <excludeFiles>: Patterns to exclude files
         <files>: File patterns to apply action to
         <group>: Group to set to file or directory
         <owner>: Owner to set to file or directory
  -->
  <element name="changeOwnerAndGroup">
    <interleave>
    <ref name="actionCommonProperties"/>
    <optional>
      <choice>
        <attribute name="excludeFiles"/>
        <element name="excludeFiles"><text/></element>
      </choice>
    </optional>
    <optional>
      <choice>
        <attribute name="files"/>
        <element name="files"><text/></element>
      </choice>
    </optional>
    <optional>
      <choice>
        <attribute name="group"/>
        <element name="group"><text/></element>
      </choice>
    </optional>
    <optional>
      <choice>
        <attribute name="owner"/>
        <element name="owner"><text/></element>
      </choice>
    </optional>
    </interleave>
  </element>
 
 
  <!--   createShortcuts - Creates one or more shortcuts in specified location.
         Specific properties for <createShortcuts>:

         <destination>: Path to the location where you want to create the shortcuts.
         <shortcutList>: List of shortcuts to create.
  -->
  <element name="createShortcuts">
    <interleave>
    <ref name="actionCommonProperties"/>
    <optional>
      <choice>
        <attribute name="destination"/>
        <element name="destination"><text/></element>
      </choice>
    </optional>
    <optional>
      <element name="shortcutList">
        <zeroOrMore>
          <choice>
            <ref name="shortcut"/>
            <ref name="startMenuShortcut"/>
            <ref name="fileShortcut"/>
            <ref name="quickLaunchLinkShortcut"/>
            <ref name="startMenuLinkShortcut"/>
            <ref name="quickLaunchFileShortcut"/>
            <ref name="startMenuFileShortcut"/>
            <ref name="linkShortcut"/>
            <ref name="quickLaunchShortcut"/>
          </choice>
        </zeroOrMore>
      </element>
    </optional>
    </interleave>
  </element>
 
 
  <!--   addScheduledTask - Create a new task or modify the value of an existing one.
         Specific properties for <addScheduledTask>:

         <dayOfMonth>: This parameter is used only for Task of MONTHLY type. It specifies the day of the month the task will be executed.
         <disallowStartIfOnBatteries>: Don't start the task if the system is running on batteries
         <duration>: (minutes) How long the Task is active.
         <endDate>: (year-month-day) Specify the date on which the task becomes inactive.
         <executionTimeLimit>: Maximum execution time in hours
         <interval>: (minutes) How often do you want to execute the given  Task in specified duration time.
         <name>: Name of the  Task
         <password>: The user password associated with the account specified in runAs parameter.
         <period>: This parameter is used only for Task of DAILY/WEEKLY type. It specifies how often (every PERIOD days for type DAILY / every PERIOD weeks for type WEEKLY) the task will be executed.
         <program>: Path to program or script to run.
         <programArguments>: Program arguments.
         <runAs>: Run the  Task as the specified user. 
         <runAsAdmin>: Run with highest privileges.
         <runOnlyIfLoggedOn>: Run task only if the user specified by runAs parameter is logged on.
         <startDate>: (year-month-day) Specify the date on which the task becomes activated.
         <startTime>: (hours:minutes) The time the Task becomes activated.
         <type>: Type of the Task.  - Allowed values:
                 DAILY: daily
                 WEEKLY: weekly
                 ONCE: once
                 ONIDLE: onidle
                 ONSTART: atsystemstart
                 ONLOGON: atlogon
                 MONTHLY: monthlydate
         <weekDays>: Specifies days to run the task on (MON, TUE, ... SUN) or * for all days of week
         <workingDirectory>: Working directory. This is important for scripts that expect to be run from a specific location. By default, it will be the directory where the script or program is located.
  -->
  <element name="addScheduledTask">
    <interleave>
    <ref name="actionCommonProperties"/>
    <optional>
      <choice>
        <attribute name="dayOfMonth"/>
        <element name="dayOfMonth"><text/></element>
      </choice>
    </optional>
    <optional>
      <choice>
        <attribute name="disallowStartIfOnBatteries"/>
        <element name="disallowStartIfOnBatteries"><text/></element>
      </choice>
    </optional>
    <optional>
      <choice>
        <attribute name="duration"/>
        <element name="duration"><text/></element>
      </choice>
    </optional>
    <optional>
      <choice>
        <attribute name="endDate"/>
        <element name="endDate"><text/></element>
      </choice>
    </optional>
    <optional>
      <choice>
        <attribute name="executionTimeLimit"/>
        <element name="executionTimeLimit"><text/></element>
      </choice>
    </optional>
    <optional>
      <choice>
        <attribute name="interval"/>
        <element name="interval"><text/></element>
      </choice>
    </optional>
    <optional>
      <choice>
        <attribute name="name"/>
        <element name="name"><text/></element>
      </choice>
    </optional>
    <optional>
      <choice>
        <attribute name="password"/>
        <element name="password"><text/></element>
      </choice>
    </optional>
    <optional>
      <choice>
        <attribute name="period"/>
        <element name="period"><text/></element>
      </choice>
    </optional>
    <optional>
      <choice>
        <attribute name="program"/>
        <element name="program"><text/></element>
      </choice>
    </optional>
    <optional>
      <choice>
        <attribute name="programArguments"/>
        <element name="programArguments"><text/></element>
      </choice>
    </optional>
    <optional>
      <choice>
        <attribute name="runAs"/>
        <element name="runAs"><text/></element>
      </choice>
    </optional>
    <optional>
      <choice>
        <attribute name="runAsAdmin"/>
        <element name="runAsAdmin"><text/></element>
      </choice>
    </optional>
    <optional>
      <choice>
        <attribute name="runOnlyIfLoggedOn"/>
        <element name="runOnlyIfLoggedOn"><text/></element>
      </choice>
    </optional>
    <optional>
      <choice>
        <attribute name="startDate"/>
        <element name="startDate"><text/></element>
      </choice>
    </optional>
    <optional>
      <choice>
        <attribute name="startTime"/>
        <element name="startTime"><text/></element>
      </choice>
    </optional>
    <optional>
      <choice>
        <attribute name="type"/>
        <element name="type"><text/></element>
      </choice>
    </optional>
    <optional>
      <choice>
        <attribute name="weekDays"/>
        <element name="weekDays"><text/></element>
      </choice>
    </optional>
    <optional>
      <choice>
        <attribute name="workingDirectory"/>
        <element name="workingDirectory"><text/></element>
      </choice>
    </optional>
    </interleave>
  </element>
 
 
  <!--   throwError - Generate an error inside the installer so the installer will exit. The only exception to this is when abortOnError equals zero or the action is inside a validationActionList, in which case it will prompt an error dialog to the user, but will not exit the installer.
         Specific properties for <throwError>:

         <text>: Error message
  -->
  <element name="throwError">
    <interleave>
    <ref name="actionCommonProperties"/>
    <optional>
      <choice>
        <attribute name="text"/>
        <element name="text"><text/></element>
      </choice>
    </optional>
    </interleave>
  </element>
 
 
  <!--   showStringQuestion - Ask the user a question.
         Specific properties for <showStringQuestion>:

         <text>: Question message that will be shown.
         <title>: Dialog window title.
         <variable>: Variable name where the answer will be stored.
  -->
  <element name="showStringQuestion">
    <interleave>
    <ref name="actionCommonProperties"/>
    <optional>
      <choice>
        <attribute name="text"/>
        <element name="text"><text/></element>
      </choice>
    </optional>
    <optional>
      <choice>
        <attribute name="title"/>
        <element name="title"><text/></element>
      </choice>
    </optional>
    <optional>
      <choice>
        <attribute name="variable"/>
        <element name="variable"><text/></element>
      </choice>
    </optional>
    </interleave>
  </element>
 
 
  <!--   createOSXService - Create Mac OS X service.
         Specific properties for <createOSXService>:

         <abandonProcessGroup>: Don't kill the remaining processes with the same group ID.
         <groupname>: Groupname
         <keepAlive>: Keep process alive by launchctl
         <program>: Path to program
         <programArguments>: Arguments to pass to the program
         <scope>: Scope of service  - Allowed values:
                  user: Per User
                  system: System Wide
         <serviceName>: Identifier for the service name
         <username>: Username
  -->
  <element name="createOSXService">
    <interleave>
    <ref name="actionCommonProperties"/>
    <optional>
      <choice>
        <attribute name="abandonProcessGroup"/>
        <element name="abandonProcessGroup"><text/></element>
      </choice>
    </optional>
    <optional>
      <choice>
        <attribute name="groupname"/>
        <element name="groupname"><text/></element>
      </choice>
    </optional>
    <optional>
      <choice>
        <attribute name="keepAlive"/>
        <element name="keepAlive"><text/></element>
      </choice>
    </optional>
    <optional>
      <choice>
        <attribute name="program"/>
        <element name="program"><text/></element>
      </choice>
    </optional>
    <optional>
      <choice>
        <attribute name="programArguments"/>
        <element name="programArguments"><text/></element>
      </choice>
    </optional>
    <optional>
      <choice>
        <attribute name="scope"/>
        <element name="scope"><text/></element>
      </choice>
    </optional>
    <optional>
      <choice>
        <attribute name="serviceName"/>
        <element name="serviceName"><text/></element>
      </choice>
    </optional>
    <optional>
      <choice>
        <attribute name="username"/>
        <element name="username"><text/></element>
      </choice>
    </optional>
    </interleave>
  </element>
 
 
  <!--   yamlFileSet - Set the value of an element in a YAML file
         Specific properties for <yamlFileSet>:

         <element>: Path expression pointing to the selected element
         <file>: Path to YAML file
         <value>: Value to store in element
  -->
  <element name="yamlFileSet">
    <interleave>
    <ref name="actionCommonProperties"/>
    <optional>
      <choice>
        <attribute name="element"/>
        <element name="element"><text/></element>
      </choice>
    </optional>
    <optional>
      <choice>
        <attribute name="file"/>
        <element name="file"><text/></element>
      </choice>
    </optional>
    <optional>
      <choice>
        <attribute name="value"/>
        <element name="value"><text/></element>
      </choice>
    </optional>
    </interleave>
  </element>
 
 
  <!--   urlEncode - Encode a given text using URL formatting specifications and place the result in a variable.
         Specific properties for <urlEncode>:

         <text>: Text to encode
         <variable>: Variable to store the result in
  -->
  <element name="urlEncode">
    <interleave>
    <ref name="actionCommonProperties"/>
    <optional>
      <choice>
        <attribute name="text"/>
        <element name="text"><text/></element>
      </choice>
    </optional>
    <optional>
      <choice>
        <attribute name="variable"/>
        <element name="variable"><text/></element>
      </choice>
    </optional>
    </interleave>
  </element>
 
 
  <!--   restartWindowsService - Restart a Windows service
         Specific properties for <restartWindowsService>:

         <delay>: Amount of milliseconds to wait for the service to start / stop.
         <displayName>: Name displayed in the Windows service control panel
         <serviceName>: Internal service name
  -->
  <element name="restartWindowsService">
    <interleave>
    <ref name="actionCommonProperties"/>
    <optional>
      <choice>
        <attribute name="delay"/>
        <element name="delay"><text/></element>
      </choice>
    </optional>
    <optional>
      <choice>
        <attribute name="displayName"/>
        <element name="displayName"><text/></element>
      </choice>
    </optional>
    <optional>
      <choice>
        <attribute name="serviceName"/>
        <element name="serviceName"><text/></element>
      </choice>
    </optional>
    </interleave>
  </element>
 
 
  <!--   addWindowsAccountRights - Add rights to user or group on Windows
         Specific properties for <addWindowsAccountRights>:

         <account>: User or group name
         <rights>: Account rights, separated by spaces; Example value: SeServiceLogonRight. A complete list can be obtained from http://msdn.microsoft.com/en-us/library/aa375728(v=VS.85).aspx
  -->
  <element name="addWindowsAccountRights">
    <interleave>
    <ref name="actionCommonProperties"/>
    <optional>
      <choice>
        <attribute name="account"/>
        <element name="account"><text/></element>
      </choice>
    </optional>
    <optional>
      <choice>
        <attribute name="rights"/>
        <element name="rights"><text/></element>
      </choice>
    </optional>
    </interleave>
  </element>
 
 
  <!--   unpackFile - Extract files from an installer before files are unpacked during the installation phase
         Specific properties for <unpackFile>:

         <component>: Project component where the file you want to extract is located
         <destination>: Path to the location where you want to extract the file
         <folder>: Project folder name where where the file you want to extract is located
         <origin>: File name you want to extract
  -->
  <element name="unpackFile">
    <interleave>
    <ref name="actionCommonProperties"/>
    <optional>
      <choice>
        <attribute name="component"/>
        <element name="component"><text/></element>
      </choice>
    </optional>
    <optional>
      <choice>
        <attribute name="destination"/>
        <element name="destination"><text/></element>
      </choice>
    </optional>
    <optional>
      <choice>
        <attribute name="folder"/>
        <element name="folder"><text/></element>
      </choice>
    </optional>
    <optional>
      <choice>
        <attribute name="origin"/>
        <element name="origin"><text/></element>
      </choice>
    </optional>
    </interleave>
  </element>
 
 
  <!--   getPermissions - Get permissions of a file or directory
         Specific properties for <getPermissions>:

         <file>: File or directory to retrieve permissions
         <variable>: Variable name to save permissions
  -->
  <element name="getPermissions">
    <interleave>
    <ref name="actionCommonProperties"/>
    <optional>
      <choice>
        <attribute name="file"/>
        <element name="file"><text/></element>
      </choice>
    </optional>
    <optional>
      <choice>
        <attribute name="variable"/>
        <element name="variable"><text/></element>
      </choice>
    </optional>
    </interleave>
  </element>
 
 
  <!--   shutdown - Shut down the machine (Windows only)
         Specific properties for <shutdown>:

         <delay>: Delay in seconds before shut down.
  -->
  <element name="shutdown">
    <interleave>
    <ref name="actionCommonProperties"/>
    <optional>
      <choice>
        <attribute name="delay"/>
        <element name="delay"><text/></element>
      </choice>
    </optional>
    </interleave>
  </element>
 
 
  <!--   xmlFileSet - Set the value of an element or attribute in an XML file
         Specific properties for <xmlFileSet>:

         <attribute>: If present, the action will refer to the attribute instead of the element
         <element>: XPath expression pointing to the selected element
         <file>: Path to XML file
         <value>: Value to store in element or attribute
  -->
  <element name="xmlFileSet">
    <interleave>
    <ref name="actionCommonProperties"/>
    <optional>
      <choice>
        <attribute name="attribute"/>
        <element name="attribute"><text/></element>
      </choice>
    </optional>
    <optional>
      <choice>
        <attribute name="element"/>
        <element name="element"><text/></element>
      </choice>
    </optional>
    <optional>
      <choice>
        <attribute name="file"/>
        <element name="file"><text/></element>
      </choice>
    </optional>
    <optional>
      <choice>
        <attribute name="value"/>
        <element name="value"><text/></element>
      </choice>
    </optional>
    </interleave>
  </element>
 
 
  <!--   consoleWrite - Write text to console
         Specific properties for <consoleWrite>:

         <text>: Text to write
  -->
  <element name="consoleWrite">
    <interleave>
    <ref name="actionCommonProperties"/>
    <optional>
      <choice>
        <attribute name="text"/>
        <element name="text"><text/></element>
      </choice>
    </optional>
    </interleave>
  </element>
 
 
  <!--   deleteEnvironmentVariable - Delete an environment variable from the system.
         Specific properties for <deleteEnvironmentVariable>:

         <name>: Environment variable name.
         <scope>: Scope.  - Allowed values:
                  system: System
                  user: User
         <username>: User to modify the environment for. If empty, the current user will be used
  -->
  <element name="deleteEnvironmentVariable">
    <interleave>
    <ref name="actionCommonProperties"/>
    <optional>
      <choice>
        <attribute name="name"/>
        <element name="name"><text/></element>
      </choice>
    </optional>
    <optional>
      <choice>
        <attribute name="scope"/>
        <element name="scope"><text/></element>
      </choice>
    </optional>
    <optional>
      <choice>
        <attribute name="username"/>
        <element name="username"><text/></element>
      </choice>
    </optional>
    </interleave>
  </element>
 
 
  <!--   addGroup - Add a group to the system. Equal to the Unix 'groupadd' command
         Specific properties for <addGroup>:

         <groupname>: Group to add to the system
  -->
  <element name="addGroup">
    <interleave>
    <ref name="actionCommonProperties"/>
    <optional>
      <choice>
        <attribute name="groupname"/>
        <element name="groupname"><text/></element>
      </choice>
    </optional>
    </interleave>
  </element>
 
 
  <!--   sha1 - Generate a SHA-1 from a given text.
         Specific properties for <sha1>:

         <text>: Text to calculate the SHA-1 on.
         <variable>: Variable to which to save the SHA-1 to.
  -->
  <element name="sha1">
    <interleave>
    <ref name="actionCommonProperties"/>
    <optional>
      <choice>
        <attribute name="text"/>
        <element name="text"><text/></element>
      </choice>
    </optional>
    <optional>
      <choice>
        <attribute name="variable"/>
        <element name="variable"><text/></element>
      </choice>
    </optional>
    </interleave>
  </element>
 
 
  <!--   addLibraryToPath - Add a path in which the system will search for shared libraries on Linux
         Specific properties for <addLibraryToPath>:

         <path>: Path to add to the system search for dynamic libraries on Linux
  -->
  <element name="addLibraryToPath">
    <interleave>
    <ref name="actionCommonProperties"/>
    <optional>
      <choice>
        <attribute name="path"/>
        <element name="path"><text/></element>
      </choice>
    </optional>
    </interleave>
  </element>
 
  </choice>
</define>

<!-- These properties are common to all rules -->
<define name="ruleCommonProperties">
  <interleave>
    <optional>
      <choice>
        <attribute name="negate"/>
        <element name="negate"><text/></element>
      </choice>
    </optional>
  </interleave>
</define>

 
<!--   rule can be any of:
         - componentTest
         - firewallTest
         - compareTextLength
         - stringTest
         - windowsAccountTest
         - hostValidation
         - regExMatch
         - compareText
         - portTest
         - singleInstanceCheck
         - fileIsLocked
         - programTest
         - platformTest
         - isTrue
         - compareValues
         - fileTest
         - fileContentTest
         - ruleGroup
         - compareVersions
         - userTest
         - isFalse
         - osxServiceTest
         - antivirusTest
         - resourceLimitTest
         - fileExists
         - checkFreeDiskSpace
         - processTest
         - registryTest
         - windowsServiceTest
-->
<define name="rule">
  <choice>
 
  <!--   componentTest - Perform check on a given component.
         Specific properties for <componentTest>:

         <logic>: Comparison type  - Allowed values:
                  exists: Exists
                  does_not_exist: Does not exist
                  selected: Is selected
                  not_selected: Is not selected
                  hidden: Is hidden
                  visible: Is visible
                  editable: Is editable
                  not_editable: Is not editable
         <name>: Name of the component
         <negate>: Negate the rule result
  -->
  <element name="componentTest">
    <interleave>
    <optional>
      <choice>
        <attribute name="logic"/>
        <element name="logic"><text/></element>
      </choice>
    </optional>
    <optional>
      <choice>
        <attribute name="name"/>
        <element name="name"><text/></element>
      </choice>
    </optional>
    <optional>
      <choice>
        <attribute name="negate"/>
        <element name="negate"><text/></element>
      </choice>
    </optional>
    </interleave>
  </element>
 
 
  <!--   firewallTest - Check whether or not a firewall is set up and running. Only available on Windows platform
         Specific properties for <firewallTest>:

         <negate>: Negate the rule result
         <type>: Type of test  - Allowed values:
                 enabled: Enabled
                 disabled: Disabled
  -->
  <element name="firewallTest">
    <interleave>
    <optional>
      <choice>
        <attribute name="negate"/>
        <element name="negate"><text/></element>
      </choice>
    </optional>
    <optional>
      <choice>
        <attribute name="type"/>
        <element name="type"><text/></element>
      </choice>
    </optional>
    </interleave>
  </element>
 
 
  <!--   compareTextLength - Compare the length of a text.
         Specific properties for <compareTextLength>:

         <length>: Length to compare with
         <logic>: Comparison type  - Allowed values:
                  equals: Equals
                  does_not_equal: Does not equal
                  greater_or_equal: Greater or equal
                  greater: Greater
                  less: Less
                  less_or_equal: Less or equal
         <negate>: Negate the rule result
         <text>: Text to compare the length of
  -->
  <element name="compareTextLength">
    <interleave>
    <optional>
      <choice>
        <attribute name="length"/>
        <element name="length"><text/></element>
      </choice>
    </optional>
    <optional>
      <choice>
        <attribute name="logic"/>
        <element name="logic"><text/></element>
      </choice>
    </optional>
    <optional>
      <choice>
        <attribute name="negate"/>
        <element name="negate"><text/></element>
      </choice>
    </optional>
    <optional>
      <choice>
        <attribute name="text"/>
        <element name="text"><text/></element>
      </choice>
    </optional>
    </interleave>
  </element>
 
 
  <!--   stringTest - Check the string type
         Specific properties for <stringTest>:

         <negate>: Negate the rule result
         <text>: Text
         <type>: Type of string  - Allowed values:
                 ascii: ASCII
                 digit: Digit
                 alphanumeric: Alphanumeric
                 empty: Empty
                 not_ascii: Not ASCII
                 not_digit: Not digit
                 not_alphanumeric: Not alphanumeric
                 not_empty: Not empty
  -->
  <element name="stringTest">
    <interleave>
    <optional>
      <choice>
        <attribute name="negate"/>
        <element name="negate"><text/></element>
      </choice>
    </optional>
    <optional>
      <choice>
        <attribute name="text"/>
        <element name="text"><text/></element>
      </choice>
    </optional>
    <optional>
      <choice>
        <attribute name="type"/>
        <element name="type"><text/></element>
      </choice>
    </optional>
    </interleave>
  </element>
 
 
  <!--   windowsAccountTest - Check whether or not a specified account has proper rights
         Specific properties for <windowsAccountTest>:

         <account>: User or group name to check; if account does not exist, rule always returns false
         <negate>: Negate the rule result
         <rights>: Account rights to test for, separated by spaces; Example value: SeServiceLogonRight. A complete list can be obtained from http://msdn.microsoft.com/en-us/library/aa375728(v=VS.85).aspx
  -->
  <element name="windowsAccountTest">
    <interleave>
    <optional>
      <choice>
        <attribute name="account"/>
        <element name="account"><text/></element>
      </choice>
    </optional>
    <optional>
      <choice>
        <attribute name="negate"/>
        <element name="negate"><text/></element>
      </choice>
    </optional>
    <optional>
      <choice>
        <attribute name="rights"/>
        <element name="rights"><text/></element>
      </choice>
    </optional>
    </interleave>
  </element>
 
 
  <!--   hostValidation - Validates whether or not a given hostname or IP address meets the given condition
         Specific properties for <hostValidation>:

         <condition>: A valid host is one that can be resolved to an IP address and a valid IP is one that is syntactically correct  - Allowed values:
                      is_valid: Host is a valid ip/hostname
                      is_not_valid: Host is not a valid ip/hostname
         <host>: Hostname or IP address to be checked
         <negate>: Negate the rule result
         <type>: Type of host specification  - Allowed values:
                 ip: IPv4 validation
                 ipv6: IPv6 validation
                 hostname: Hostname validation
                 any: IPv4 and hostname validation
  -->
  <element name="hostValidation">
    <interleave>
    <optional>
      <choice>
        <attribute name="condition"/>
        <element name="condition"><text/></element>
      </choice>
    </optional>
    <optional>
      <choice>
        <attribute name="host"/>
        <element name="host"><text/></element>
      </choice>
    </optional>
    <optional>
      <choice>
        <attribute name="negate"/>
        <element name="negate"><text/></element>
      </choice>
    </optional>
    <optional>
      <choice>
        <attribute name="type"/>
        <element name="type"><text/></element>
      </choice>
    </optional>
    </interleave>
  </element>
 
 
  <!--   regExMatch - Compare a text with a regular expression.
         Specific properties for <regExMatch>:

         <logic>: Whether or not the rule will apply if the regular expression matches.  - Allowed values:
                  matches: Matches
                  does_not_match: Does not match
         <negate>: Negate the rule result
         <pattern>: Regular expression
         <text>: Text
  -->
  <element name="regExMatch">
    <interleave>
    <optional>
      <choice>
        <attribute name="logic"/>
        <element name="logic"><text/></element>
      </choice>
    </optional>
    <optional>
      <choice>
        <attribute name="negate"/>
        <element name="negate"><text/></element>
      </choice>
    </optional>
    <optional>
      <choice>
        <attribute name="pattern"/>
        <element name="pattern"><text/></element>
      </choice>
    </optional>
    <optional>
      <choice>
        <attribute name="text"/>
        <element name="text"><text/></element>
      </choice>
    </optional>
    </interleave>
  </element>
 
 
  <!--   compareText - Compare a text with a value.
         Specific properties for <compareText>:

         <logic>: Comparison type  - Allowed values:
                  equals: Equals
                  contains: Contains
                  does_not_contain: Does not contain
                  does_not_equal: Does not equal
         <negate>: Negate the rule result
         <nocase>: Case insensitive comparison
         <text>: Text
         <value>: Value
  -->
  <element name="compareText">
    <interleave>
    <optional>
      <choice>
        <attribute name="logic"/>
        <element name="logic"><text/></element>
      </choice>
    </optional>
    <optional>
      <choice>
        <attribute name="negate"/>
        <element name="negate"><text/></element>
      </choice>
    </optional>
    <optional>
      <choice>
        <attribute name="nocase"/>
        <element name="nocase"><text/></element>
      </choice>
    </optional>
    <optional>
      <choice>
        <attribute name="text"/>
        <element name="text"><text/></element>
      </choice>
    </optional>
    <optional>
      <choice>
        <attribute name="value"/>
        <element name="value"><text/></element>
      </choice>
    </optional>
    </interleave>
  </element>
 
 
  <!--   portTest - Allows you to test whether a port is free in the local machine.
         Specific properties for <portTest>:

         <condition>: Condition to test for  - Allowed values:
                      can_bind: Can bind
                      cannot_bind: Cannot bind
         <negate>: Negate the rule result
         <port>: A port number
  -->
  <element name="portTest">
    <interleave>
    <optional>
      <choice>
        <attribute name="condition"/>
        <element name="condition"><text/></element>
      </choice>
    </optional>
    <optional>
      <choice>
        <attribute name="negate"/>
        <element name="negate"><text/></element>
      </choice>
    </optional>
    <optional>
      <choice>
        <attribute name="port"/>
        <element name="port"><text/></element>
      </choice>
    </optional>
    </interleave>
  </element>
 
 
  <!--   singleInstanceCheck - This rule allows you to check if there is another instance of the installer being executed.
         Specific properties for <singleInstanceCheck>:

         <logic>: Condition to check.  - Allowed values:
                  is_running: is running already
                  is_not_running: is not running already
         <negate>: Negate the rule result
  -->
  <element name="singleInstanceCheck">
    <interleave>
    <optional>
      <choice>
        <attribute name="logic"/>
        <element name="logic"><text/></element>
      </choice>
    </optional>
    <optional>
      <choice>
        <attribute name="negate"/>
        <element name="negate"><text/></element>
      </choice>
    </optional>
    </interleave>
  </element>
 
 
  <!--   fileIsLocked - Check if file is locked.
         Specific properties for <fileIsLocked>:

         <negate>: Negate the rule result
         <path>: File or directory path to check
  -->
  <element name="fileIsLocked">
    <interleave>
    <optional>
      <choice>
        <attribute name="negate"/>
        <element name="negate"><text/></element>
      </choice>
    </optional>
    <optional>
      <choice>
        <attribute name="path"/>
        <element name="path"><text/></element>
      </choice>
    </optional>
    </interleave>
  </element>
 
 
  <!--   programTest - Check whether or not a program can be found in the system path.
         Specific properties for <programTest>:

         <condition>: Condition to test for  - Allowed values:
                      is_in_path: Is in path
                      is_not_in_path: Is not in path
         <name>: Program name
         <negate>: Negate the rule result
  -->
  <element name="programTest">
    <interleave>
    <optional>
      <choice>
        <attribute name="condition"/>
        <element name="condition"><text/></element>
      </choice>
    </optional>
    <optional>
      <choice>
        <attribute name="name"/>
        <element name="name"><text/></element>
      </choice>
    </optional>
    <optional>
      <choice>
        <attribute name="negate"/>
        <element name="negate"><text/></element>
      </choice>
    </optional>
    </interleave>
  </element>
 
 
  <!--   platformTest - Compare the system platform with a given platform name.
         Specific properties for <platformTest>:

         <negate>: Negate the rule result
         <type>: Type of platform to test for  - Allowed values:
                 aix: AIX, OS/400
                 freebsd: Any FreeBSD
                 freebsd4: FreeBSD 4
                 freebsd6: FreeBSD 6
                 freebsd6-x64: FreeBSD 6 64 bits
                 freebsd7: FreeBSD 7/8
                 freebsd7-x64: FreeBSD 7/8 64 bits
                 hpux: HP-UX
                 hpux-ia64: HP-UX Itanium
                 hpux-parisc: HP-UX PARISC
                 irix-n32: IRIX
                 linux: Any Linux
                 linux-ia64: Linux IA64
                 linux-ppc: Linux PPC
                 linux-s390: Linux s390
                 linux-s390x: Linux s390x
                 linux-x64: Linux x86 64 bits
                 linux-x86: Linux x86
                 openbsd: Any OpenBSD
                 openbsd3: OpenBSD x86
                 osx: Mac OS X
                 osx-intel: OS X Intel
                 osx-ppc: OS X PPC
                 solaris: Any Solaris
                 solaris-intel: Solaris Intel
                 solaris-sparc: Solaris Sparc
                 unix: Unix
                 windows: Any Windows
                 windows-10: Windows 10
                 windows-2000: Windows 2000
                 windows-2003: Windows 2003
                 windows-2008: Windows 2008
                 windows-2008-r2: Windows 2008 R2
                 windows-2012: Windows 2012
                 windows-2012-r2: Windows 2012 R2
                 windows-7: Windows 7
                 windows-8: Windows 8
                 windows-8.1: Windows 8.1
                 windows-9x: Windows 9x
                 windows-nt: Windows NT
                 windows-vista: Windows Vista
                 windows-x64: Windows 64 bits
                 windows-x86: Windows 32 bits
                 windows-xp: Windows XP
  -->
  <element name="platformTest">
    <interleave>
    <optional>
      <choice>
        <attribute name="negate"/>
        <element name="negate"><text/></element>
      </choice>
    </optional>
    <optional>
      <choice>
        <attribute name="type"/>
        <element name="type"><text/></element>
      </choice>
    </optional>
    </interleave>
  </element>
 
 
  <!--   isTrue - The rule returns true if 'value' is one of 1, yes or true. Otherwise it evaluates to false.
         Specific properties for <isTrue>:

         <negate>: Negate the rule result
         <value>: String to test if it is true
  -->
  <element name="isTrue">
    <interleave>
    <optional>
      <choice>
        <attribute name="negate"/>
        <element name="negate"><text/></element>
      </choice>
    </optional>
    <optional>
      <choice>
        <attribute name="value"/>
        <element name="value"><text/></element>
      </choice>
    </optional>
    </interleave>
  </element>
 
 
  <!--   compareValues - Compare two values with each other.
         Specific properties for <compareValues>:

         <logic>: Comparison type  - Allowed values:
                  equals: Equals
                  does_not_equal: Does not equal
                  greater_or_equal: Greater or equal
                  greater: Greater
                  less: Less
                  less_or_equal: Less or equal
         <negate>: Negate the rule result
         <value1>: First comparison operand
         <value2>: Second comparison operand
  -->
  <element name="compareValues">
    <interleave>
    <optional>
      <choice>
        <attribute name="logic"/>
        <element name="logic"><text/></element>
      </choice>
    </optional>
    <optional>
      <choice>
        <attribute name="negate"/>
        <element name="negate"><text/></element>
      </choice>
    </optional>
    <optional>
      <choice>
        <attribute name="value1"/>
        <element name="value1"><text/></element>
      </choice>
    </optional>
    <optional>
      <choice>
        <attribute name="value2"/>
        <element name="value2"><text/></element>
      </choice>
    </optional>
    </interleave>
  </element>
 
 
  <!--   fileTest - Perform test on a given directory or file.
         Specific properties for <fileTest>:

         <condition>: Specifies the requirement to test over the given file  - Allowed values:
                      exists: Exists
                      not_exists: Does not exist
                      writable: Is writable
                      not_writable: Is not writable
                      readable: Is readable
                      not_readable: Is not readable
                      executable: Is executable
                      not_executable: Is not executable
                      is_directory: Is a directory
                      is_not_directory: Is not a directory
                      is_symlink: Is a symbolic link
                      is_not_symlink: Is not a symbolic link
                      is_file: Is a file
                      is_not_file: Is not a file
                      is_empty: Is empty
                      is_not_empty: Is not empty
         <negate>: Negate the rule result
         <path>: File or directory path for the test
  -->
  <element name="fileTest">
    <interleave>
    <optional>
      <choice>
        <attribute name="condition"/>
        <element name="condition"><text/></element>
      </choice>
    </optional>
    <optional>
      <choice>
        <attribute name="negate"/>
        <element name="negate"><text/></element>
      </choice>
    </optional>
    <optional>
      <choice>
        <attribute name="path"/>
        <element name="path"><text/></element>
      </choice>
    </optional>
    </interleave>
  </element>
 
 
  <!--   fileContentTest - Check whether a file contains or does not contain a text.
         Specific properties for <fileContentTest>:

         <encoding>: Encoding of the text file  - Allowed values:
                     iso8859-1: ISO8859-1
                     iso8859-2: ISO8859-2
                     utf-8: UTF-8
                     cp1251: CP1251
                     cp1252: CP1252
                     ascii: ASCII
                     macRoman: MacRoman
                     unicode: Unicode
                     binary: Binary
         <logic>: Test type  - Allowed values:
                  contains: Contains
                  does_not_contain: Does not contain
         <negate>: Negate the rule result
         <path>: Path to file that contains text for comparison
         <text>: Text to compare with
  -->
  <element name="fileContentTest">
    <interleave>
    <optional>
      <choice>
        <attribute name="encoding"/>
        <element name="encoding"><text/></element>
      </choice>
    </optional>
    <optional>
      <choice>
        <attribute name="logic"/>
        <element name="logic"><text/></element>
      </choice>
    </optional>
    <optional>
      <choice>
        <attribute name="negate"/>
        <element name="negate"><text/></element>
      </choice>
    </optional>
    <optional>
      <choice>
        <attribute name="path"/>
        <element name="path"><text/></element>
      </choice>
    </optional>
    <optional>
      <choice>
        <attribute name="text"/>
        <element name="text"><text/></element>
      </choice>
    </optional>
    </interleave>
  </element>
 
 
  <!--   ruleGroup - Group a set of rules.
         Specific properties for <ruleGroup>:

         <negate>: Negate the rule result
         <ruleEvaluationLogic>: Rule evaluation logic  - Allowed values:
                                and: And
                                or: Or
         <ruleList>: List of rules to be grouped
  -->
  <element name="ruleGroup">
    <interleave>
    <optional>
      <choice>
        <attribute name="negate"/>
        <element name="negate"><text/></element>
      </choice>
    </optional>
    <optional>
      <choice>
        <attribute name="ruleEvaluationLogic"/>
        <element name="ruleEvaluationLogic"><text/></element>
      </choice>
    </optional>
    <optional>
      <element name="ruleList">
        <zeroOrMore>
          <ref name="rule"/>
        </zeroOrMore>
      </element>
    </optional>
    </interleave>
  </element>
 
 
  <!--   compareVersions - Compare two versions.
         Specific properties for <compareVersions>:

         <logic>: Test type  - Allowed values:
                  equals: Equals
                  does_not_equal: Does not equal
                  greater: Greater
                  greater_or_equal: Greater or equal
                  less: Less
                  less_or_equal: Less or equal
         <negate>: Negate the rule result
         <version1>: First comparison operand
         <version2>: Second comparison operand
  -->
  <element name="compareVersions">
    <interleave>
    <optional>
      <choice>
        <attribute name="logic"/>
        <element name="logic"><text/></element>
      </choice>
    </optional>
    <optional>
      <choice>
        <attribute name="negate"/>
        <element name="negate"><text/></element>
      </choice>
    </optional>
    <optional>
      <choice>
        <attribute name="version1"/>
        <element name="version1"><text/></element>
      </choice>
    </optional>
    <optional>
      <choice>
        <attribute name="version2"/>
        <element name="version2"><text/></element>
      </choice>
    </optional>
    </interleave>
  </element>
 
 
  <!--   userTest - Check if a particular user exists in the system or has a valid password.
         Specific properties for <userTest>:

         <logic>: Specifies the requirement to test over the given username.  - Allowed values:
                  exists: Exists
                  not_exists: Does not exist
                  valid_password: Valid password
                  invalid_password: Invalid password
                  is_windows_admin_account: Is Windows administrator account
                  is_windows_user_account: Is Windows regular user account (non-administrator)
                  is_windows_guest_account: Is Windows limited (guest) account
         <negate>: Negate the rule result
         <password>: If test logic is set to verify the password, the password to be checked. Currently only available on the Windows platform
         <username>: User name that will be checked. In the case of using Windows domains, it needs to be specified in the form username@DOMAIN
  -->
  <element name="userTest">
    <interleave>
    <optional>
      <choice>
        <attribute name="logic"/>
        <element name="logic"><text/></element>
      </choice>
    </optional>
    <optional>
      <choice>
        <attribute name="negate"/>
        <element name="negate"><text/></element>
      </choice>
    </optional>
    <optional>
      <choice>
        <attribute name="password"/>
        <element name="password"><text/></element>
      </choice>
    </optional>
    <optional>
      <choice>
        <attribute name="username"/>
        <element name="username"><text/></element>
      </choice>
    </optional>
    </interleave>
  </element>
 
 
  <!--   isFalse - The rule returns false if 'value' is one of 1, yes or true. Otherwise it evaluates to true.
         Specific properties for <isFalse>:

         <negate>: Negate the rule result
         <value>: String to test if it is false
  -->
  <element name="isFalse">
    <interleave>
    <optional>
      <choice>
        <attribute name="negate"/>
        <element name="negate"><text/></element>
      </choice>
    </optional>
    <optional>
      <choice>
        <attribute name="value"/>
        <element name="value"><text/></element>
      </choice>
    </optional>
    </interleave>
  </element>
 
 
  <!--   osxServiceTest - Check whether or not a service exists and whether or not it is running. Checking if service exists requires Mac OS X version 10.4 or later. Checking if service is running requires Mac OS X 10.5 or later.
         Specific properties for <osxServiceTest>:

         <condition>: Condition to test for  - Allowed values:
                      exists: Exists
                      not_exists: Not exists
                      is_running: Is running
                      is_not_running: Is not running
         <negate>: Negate the rule result
         <service>: Name of service
  -->
  <element name="osxServiceTest">
    <interleave>
    <optional>
      <choice>
        <attribute name="condition"/>
        <element name="condition"><text/></element>
      </choice>
    </optional>
    <optional>
      <choice>
        <attribute name="negate"/>
        <element name="negate"><text/></element>
      </choice>
    </optional>
    <optional>
      <choice>
        <attribute name="service"/>
        <element name="service"><text/></element>
      </choice>
    </optional>
    </interleave>
  </element>
 
 
  <!--   antivirusTest - Check whether or not antivirus is set up and running. Only available on Windows platform
         Specific properties for <antivirusTest>:

         <negate>: Negate the rule result
         <product>: Product to test, or any product  - Allowed values:
                    any: Any product
                    windows_defender: Windows Defender
         <type>: Type of test  - Allowed values:
                 enabled: Enabled
                 disabled: Disabled
  -->
  <element name="antivirusTest">
    <interleave>
    <optional>
      <choice>
        <attribute name="negate"/>
        <element name="negate"><text/></element>
      </choice>
    </optional>
    <optional>
      <choice>
        <attribute name="product"/>
        <element name="product"><text/></element>
      </choice>
    </optional>
    <optional>
      <choice>
        <attribute name="type"/>
        <element name="type"><text/></element>
      </choice>
    </optional>
    </interleave>
  </element>
 
 
  <!--   resourceLimitTest - Check if resource limit matches requirements.
         Specific properties for <resourceLimitTest>:

         <limitType>: Limit type  - Allowed values:
                      hard: Hard
                      soft: Soft
         <logic>: Comparison type  - Allowed values:
                  equals: Equals
                  does_not_equal: Does not equal
                  greater_or_equal: Greater or equal
                  greater: Greater
                  less: Less
                  less_or_equal: Less or equal
                  is_unlimited: Is unlimited
                  is_not_unlimited: Is not unlimited
         <negate>: Negate the rule result
         <type>: Resource Type To Check  - Allowed values:
                 core_file_size: Core File Size
                 data_seg_size: Data Segment Size
                 file_size: File Size
                 max_locked_memory: Max Locked Memory
                 max_memory_size: Max Memory Size
                 open_files: Open Files
                 pipe_size: Pipe Size
                 stack_size: Stack Size
                 cpu_time: CPU Time
                 max_user_processes: Max User Processes
                 virtual_memory: Virtual Memory
         <value>: Value
  -->
  <element name="resourceLimitTest">
    <interleave>
    <optional>
      <choice>
        <attribute name="limitType"/>
        <element name="limitType"><text/></element>
      </choice>
    </optional>
    <optional>
      <choice>
        <attribute name="logic"/>
        <element name="logic"><text/></element>
      </choice>
    </optional>
    <optional>
      <choice>
        <attribute name="negate"/>
        <element name="negate"><text/></element>
      </choice>
    </optional>
    <optional>
      <choice>
        <attribute name="type"/>
        <element name="type"><text/></element>
      </choice>
    </optional>
    <optional>
      <choice>
        <attribute name="value"/>
        <element name="value"><text/></element>
      </choice>
    </optional>
    </interleave>
  </element>
 
 
  <!--   fileExists - Check for the existence of a given directory or file.
         Specific properties for <fileExists>:

         <negate>: Negate the rule result
         <path>: File or directory path for the test, accepts wildcards.
  -->
  <element name="fileExists">
    <interleave>
    <optional>
      <choice>
        <attribute name="negate"/>
        <element name="negate"><text/></element>
      </choice>
    </optional>
    <optional>
      <choice>
        <attribute name="path"/>
        <element name="path"><text/></element>
      </choice>
    </optional>
    </interleave>
  </element>
 
 
  <!--   checkFreeDiskSpace - Check whether or not enough free disk space is available
         Specific properties for <checkFreeDiskSpace>:

         <logic>: Comparison type  - Allowed values:
                  equals: Equals
                  does_not_equal: Does not equal
                  greater_or_equal: Greater or equal
                  greater: Greater
                  less: Less
                  less_or_equal: Less or equal
         <negate>: Negate the rule result
         <path>: Path to the folder or disk
         <size>: Size of free disk space to check for
         <units>: Size units for the checked value.  - Allowed values:
                  KB: KiloBytes
                  MB: MegaBytes
                  GB: GigaBytes
  -->
  <element name="checkFreeDiskSpace">
    <interleave>
    <optional>
      <choice>
        <attribute name="logic"/>
        <element name="logic"><text/></element>
      </choice>
    </optional>
    <optional>
      <choice>
        <attribute name="negate"/>
        <element name="negate"><text/></element>
      </choice>
    </optional>
    <optional>
      <choice>
        <attribute name="path"/>
        <element name="path"><text/></element>
      </choice>
    </optional>
    <optional>
      <choice>
        <attribute name="size"/>
        <element name="size"><text/></element>
      </choice>
    </optional>
    <optional>
      <choice>
        <attribute name="units"/>
        <element name="units"><text/></element>
      </choice>
    </optional>
    </interleave>
  </element>
 
 
  <!--   processTest - Check if a particular process exists in the system. Currently only supported in Windows, Linux, OS X.
         Specific properties for <processTest>:

         <logic>: Check whether or not the process is running.  - Allowed values:
                  is_running: Is running
                  is_not_running: Is not running
         <name>: Exact process name that will be checked.
         <negate>: Negate the rule result
  -->
  <element name="processTest">
    <interleave>
    <optional>
      <choice>
        <attribute name="logic"/>
        <element name="logic"><text/></element>
      </choice>
    </optional>
    <optional>
      <choice>
        <attribute name="name"/>
        <element name="name"><text/></element>
      </choice>
    </optional>
    <optional>
      <choice>
        <attribute name="negate"/>
        <element name="negate"><text/></element>
      </choice>
    </optional>
    </interleave>
  </element>
 
 
  <!--   registryTest - Perform tests over a registry entry. You can provide either a key or a key and a name
         Specific properties for <registryTest>:

         <key>: Registry key
         <logic>: Comparison type  - Allowed values:
                  exists: Exists
                  does_not_exist: Does not exist
                  is_empty: Is empty
                  is_not_empty: Is not empty
                  is_type: Is type
                  is_not_type: Is not type
         <name>: Entry name to test for existence
         <negate>: Negate the rule result
         <type>: Type of the key to check with the is_type or is_not_type logic  - Allowed values:
                 REG_BINARY: binary
                 REG_NONE: none
                 REG_SZ: sz
                 REG_EXPAND_SZ: expand_sz
                 REG_DWORD: dword
                 REG_BIG_ENDIAN: big_endian
                 REG_LINK: link
                 REG_MULTI_SZ: multi_sz
                 REG_RESOURCE_LIST: resource_list
         <wowMode>: Determines whether we want to access a 32-bit or 64-bit view of the Registry  - Allowed values:
                    none: None
                    32: 32
                    64: 64
  -->
  <element name="registryTest">
    <interleave>
    <optional>
      <choice>
        <attribute name="key"/>
        <element name="key"><text/></element>
      </choice>
    </optional>
    <optional>
      <choice>
        <attribute name="logic"/>
        <element name="logic"><text/></element>
      </choice>
    </optional>
    <optional>
      <choice>
        <attribute name="name"/>
        <element name="name"><text/></element>
      </choice>
    </optional>
    <optional>
      <choice>
        <attribute name="negate"/>
        <element name="negate"><text/></element>
      </choice>
    </optional>
    <optional>
      <choice>
        <attribute name="type"/>
        <element name="type"><text/></element>
      </choice>
    </optional>
    <optional>
      <choice>
        <attribute name="wowMode"/>
        <element name="wowMode"><text/></element>
      </choice>
    </optional>
    </interleave>
  </element>
 
 
  <!--   windowsServiceTest - Check whether a service exists and whether is running
         Specific properties for <windowsServiceTest>:

         <condition>: Condition to test for  - Allowed values:
                      exists: Exists
                      not_exists: Not exists
                      is_running: Is running
                      is_not_running: Is not running
         <negate>: Negate the rule result
         <service>: Name of service
  -->
  <element name="windowsServiceTest">
    <interleave>
    <optional>
      <choice>
        <attribute name="condition"/>
        <element name="condition"><text/></element>
      </choice>
    </optional>
    <optional>
      <choice>
        <attribute name="negate"/>
        <element name="negate"><text/></element>
      </choice>
    </optional>
    <optional>
      <choice>
        <attribute name="service"/>
        <element name="service"><text/></element>
      </choice>
    </optional>
    </interleave>
  </element>
 
  </choice>
</define>

  <!--   validDotNetVersion - .NET Framework versions to allow
         Specific properties for <validDotNetVersion>:

         <frameworkType>: .NET Framework type; currently only valid for .NET FRamework version 4.0  - Allowed values:
                          any: Any
                          client: Client
                          full: Full
         <maxVersion>: Max. .NET Framework version to allow
         <minVersion>: Min. .NET Framework version to allow
  -->
<define name="validDotNetVersion">
 <element name="validDotNetVersion">
  <interleave>
    <optional>
      <choice>
        <attribute name="frameworkType"/>
        <element name="frameworkType"><text/></element>
      </choice>
    </optional>
    <optional>
      <choice>
        <attribute name="maxVersion"/>
        <element name="maxVersion"><text/></element>
      </choice>
    </optional>
    <optional>
      <choice>
        <attribute name="minVersion"/>
        <element name="minVersion"><text/></element>
      </choice>
    </optional>
  </interleave>
 </element>
</define>

  <!--   command - Defines a command executed when an action is invoked on the file
         Specific properties for <command>:

         <makeDefault>: Enable this verb as the primary / default action.
         <runProgram>: Program that will be executed when the action is invoked.
         <runProgramArguments>: Program Arguments.
         <verb>: Action that can be invoked on the file.
  -->
<define name="command">
 <element name="command">
  <interleave>
    <optional>
      <choice>
        <attribute name="makeDefault"/>
        <element name="makeDefault"><text/></element>
      </choice>
    </optional>
    <optional>
      <choice>
        <attribute name="runProgram"/>
        <element name="runProgram"><text/></element>
      </choice>
    </optional>
    <optional>
      <choice>
        <attribute name="runProgramArguments"/>
        <element name="runProgramArguments"><text/></element>
      </choice>
    </optional>
    <optional>
      <choice>
        <attribute name="verb"/>
        <element name="verb"><text/></element>
      </choice>
    </optional>
  </interleave>
 </element>
</define>

  <!--   substitution - Replace the specified pattern with a value
         Specific properties for <substitution>:

         <pattern>: Pattern or expression that will be replaced.
         <ruleEvaluationLogic>: Rule evaluation logic, by default rules are evaluated with and logic  - Allowed values:
                                and: And
                                or: Or
         <value>: Value to replace the pattern with.
         <ruleList>: Contains a set of rules or conditions
  -->
<define name="substitution">
 <element name="substitution">
  <interleave>
    <optional>
      <choice>
        <attribute name="pattern"/>
        <element name="pattern"><text/></element>
      </choice>
    </optional>
    <optional>
      <choice>
        <attribute name="ruleEvaluationLogic"/>
        <element name="ruleEvaluationLogic"><text/></element>
      </choice>
    </optional>
    <optional>
      <choice>
        <attribute name="value"/>
        <element name="value"><text/></element>
      </choice>
    </optional>
    <optional>
      <element name="ruleList">
        <zeroOrMore>
          <ref name="rule"/>
        </zeroOrMore>
      </element>
    </optional>
  </interleave>
 </element>
</define>

  <!--   validVersion - Java VM versions to allow
         Specific properties for <validVersion>:

         <bitness>: Whether only 32 or 64 bit version can be used  - Allowed values:
                    32: 32
                    64: 64
                    : Any
         <maxVersion>: Max. Java version to allow
         <minVersion>: Min. Java version to allow
         <requireJDK>: Whether the Java version is a JDK
         <vendor>: Java VM vendor to allow  - Allowed values:
                   sun: Oracle/Sun
                   ibm: IBM
                   openjdk: OpenJDK
                   kaffe: Kaffe
                   : Any
  -->
<define name="validVersion">
 <element name="validVersion">
  <interleave>
    <optional>
      <choice>
        <attribute name="bitness"/>
        <element name="bitness"><text/></element>
      </choice>
    </optional>
    <optional>
      <choice>
        <attribute name="maxVersion"/>
        <element name="maxVersion"><text/></element>
      </choice>
    </optional>
    <optional>
      <choice>
        <attribute name="minVersion"/>
        <element name="minVersion"><text/></element>
      </choice>
    </optional>
    <optional>
      <choice>
        <attribute name="requireJDK"/>
        <element name="requireJDK"><text/></element>
      </choice>
    </optional>
    <optional>
      <choice>
        <attribute name="vendor"/>
        <element name="vendor"><text/></element>
      </choice>
    </optional>
  </interleave>
 </element>
</define>

  <!--   option - 
         Specific properties for <option>:

         <description>: 
         <image>: Image that will be shown.
         <text>: 
         <value>: 
  -->
<define name="option">
 <element name="option">
  <interleave>
    <optional>
      <choice>
        <attribute name="description"/>
        <element name="description"><text/></element>
      </choice>
    </optional>
    <optional>
      <choice>
        <attribute name="image"/>
        <element name="image"><text/></element>
      </choice>
    </optional>
    <optional>
      <choice>
        <attribute name="text"/>
        <element name="text"><text/></element>
      </choice>
    </optional>
    <optional>
      <choice>
        <attribute name="value"/>
        <element name="value"><text/></element>
      </choice>
    </optional>
  </interleave>
 </element>
</define>

  <!--   javaLauncher - Creates a Java Launcher
         Specific properties for <javaLauncher>:

         <allowCommandLineArguments>: Whether to pass arguments that launcher is given through command line.
         <arguments>: Arguments to pass to application
         <binaryName>: Name of the launcher executable
         <classpath>: Classpath to provide to JVM, separated by semi colons
         <jarFile>: JAR archive to use; overrides <classpath> and <mainClass>
         <mainClass>: Class to run
         <osxApplicationBundleIcon>: ICNS file to include in the Application Bundle
         <osxApplicationBundleIdentifier>: Identifier used to uniquely identify this autoupdate package
         <preferredJavaBinary>: Path to preferred JRE; if Java runtime is found there, it will be used
         <requestedExecutionLevel>: UAC execution level of the application on Windows  - Allowed values:
                                    requireAdministrator: Require administrator
                                    asInvoker: As invoker
                                    highestAvailable: Highest available
         <runInBackground>: Whether to run this application in the background and exit launcher immediately
         <runInConsole>: Whether to run this application as console application in Windows.
         <selectionOrder>: Order of the Java versions detected  - Allowed values:
                           first: First
                           oldest: Oldest
                           newest: Newest
         <usePropertiesFile>: Whether to read properties file (named same as binary with .properties or launcher.properties on Mac OS X) to allow overriding certain parameters
         <vmParameters>: Additional parameters to pass to JVM
         <windowsExecutableIcon>: ICO file with a specific format to set the icon for the autoupdate executable file on Windows systems. The icon file can contain up to three different icons that must match one of the following formats: 16x16 pixels and 256 colors, 32x32 pixels and 256 colors, 48x48 pixels and 256 colors.
         <windowsResourceComments>: Comments for resources embedded in Windows executable
         <windowsResourceCompanyName>: Company Name for resources embedded in Windows executable
         <windowsResourceFileDescription>: File Description for resources embedded in Windows executable
         <windowsResourceFileVersion>: File version for resources embedded in Windows executable
         <windowsResourceInternalName>: Internal Name for resources embedded in Windows executable
         <windowsResourceLegalCopyright>: Legal Copyright for resources embedded in Windows executable
         <windowsResourceLegalTrademarks>: Legal Trademarks for resources embedded in Windows executable
         <windowsResourceOriginalFilename>: Original Filename for resources embedded in Windows executable
         <windowsResourceProductName>: Product Name for resources embedded in Windows executable
         <windowsResourceProductVersion>: Product Version for resources embedded in Windows executable
         <workingDirectory>: Working directory to go to before launching
         <validVersionList>: List of supported Java versions
  -->
<define name="javaLauncher">
 <element name="javaLauncher">
  <interleave>
    <optional>
      <choice>
        <attribute name="allowCommandLineArguments"/>
        <element name="allowCommandLineArguments"><text/></element>
      </choice>
    </optional>
    <optional>
      <choice>
        <attribute name="arguments"/>
        <element name="arguments"><text/></element>
      </choice>
    </optional>
    <optional>
      <choice>
        <attribute name="binaryName"/>
        <element name="binaryName"><text/></element>
      </choice>
    </optional>
    <optional>
      <choice>
        <attribute name="classpath"/>
        <element name="classpath"><text/></element>
      </choice>
    </optional>
    <optional>
      <choice>
        <attribute name="jarFile"/>
        <element name="jarFile"><text/></element>
      </choice>
    </optional>
    <optional>
      <choice>
        <attribute name="mainClass"/>
        <element name="mainClass"><text/></element>
      </choice>
    </optional>
    <optional>
      <choice>
        <attribute name="osxApplicationBundleIcon"/>
        <element name="osxApplicationBundleIcon"><text/></element>
      </choice>
    </optional>
    <optional>
      <choice>
        <attribute name="osxApplicationBundleIdentifier"/>
        <element name="osxApplicationBundleIdentifier"><text/></element>
      </choice>
    </optional>
    <optional>
      <choice>
        <attribute name="preferredJavaBinary"/>
        <element name="preferredJavaBinary"><text/></element>
      </choice>
    </optional>
    <optional>
      <choice>
        <attribute name="requestedExecutionLevel"/>
        <element name="requestedExecutionLevel"><text/></element>
      </choice>
    </optional>
    <optional>
      <choice>
        <attribute name="runInBackground"/>
        <element name="runInBackground"><text/></element>
      </choice>
    </optional>
    <optional>
      <choice>
        <attribute name="runInConsole"/>
        <element name="runInConsole"><text/></element>
      </choice>
    </optional>
    <optional>
      <choice>
        <attribute name="selectionOrder"/>
        <element name="selectionOrder"><text/></element>
      </choice>
    </optional>
    <optional>
      <choice>
        <attribute name="usePropertiesFile"/>
        <element name="usePropertiesFile"><text/></element>
      </choice>
    </optional>
    <optional>
      <choice>
        <attribute name="vmParameters"/>
        <element name="vmParameters"><text/></element>
      </choice>
    </optional>
    <optional>
      <choice>
        <attribute name="windowsExecutableIcon"/>
        <element name="windowsExecutableIcon"><text/></element>
      </choice>
    </optional>
    <optional>
      <choice>
        <attribute name="windowsResourceComments"/>
        <element name="windowsResourceComments"><text/></element>
      </choice>
    </optional>
    <optional>
      <choice>
        <attribute name="windowsResourceCompanyName"/>
        <element name="windowsResourceCompanyName"><text/></element>
      </choice>
    </optional>
    <optional>
      <choice>
        <attribute name="windowsResourceFileDescription"/>
        <element name="windowsResourceFileDescription"><text/></element>
      </choice>
    </optional>
    <optional>
      <choice>
        <attribute name="windowsResourceFileVersion"/>
        <element name="windowsResourceFileVersion"><text/></element>
      </choice>
    </optional>
    <optional>
      <choice>
        <attribute name="windowsResourceInternalName"/>
        <element name="windowsResourceInternalName"><text/></element>
      </choice>
    </optional>
    <optional>
      <choice>
        <attribute name="windowsResourceLegalCopyright"/>
        <element name="windowsResourceLegalCopyright"><text/></element>
      </choice>
    </optional>
    <optional>
      <choice>
        <attribute name="windowsResourceLegalTrademarks"/>
        <element name="windowsResourceLegalTrademarks"><text/></element>
      </choice>
    </optional>
    <optional>
      <choice>
        <attribute name="windowsResourceOriginalFilename"/>
        <element name="windowsResourceOriginalFilename"><text/></element>
      </choice>
    </optional>
    <optional>
      <choice>
        <attribute name="windowsResourceProductName"/>
        <element name="windowsResourceProductName"><text/></element>
      </choice>
    </optional>
    <optional>
      <choice>
        <attribute name="windowsResourceProductVersion"/>
        <element name="windowsResourceProductVersion"><text/></element>
      </choice>
    </optional>
    <optional>
      <choice>
        <attribute name="workingDirectory"/>
        <element name="workingDirectory"><text/></element>
      </choice>
    </optional>
    <optional>
      <element name="validVersionList">
        <zeroOrMore>
          <ref name="validVersion"/>
        </zeroOrMore>
      </element>
    </optional>
  </interleave>
 </element>
</define>

  <!--   httpHeader - 
         Specific properties for <httpHeader>:

         <name>: Name of the header
         <value>: Value of the header
  -->
<define name="httpHeader">
 <element name="httpHeader">
  <interleave>
    <optional>
      <choice>
        <attribute name="name"/>
        <element name="name"><text/></element>
      </choice>
    </optional>
    <optional>
      <choice>
        <attribute name="value"/>
        <element name="value"><text/></element>
      </choice>
    </optional>
  </interleave>
 </element>
</define>

  <!--   queryParameter - 
         Specific properties for <queryParameter>:

         <name>: Query string variable name.
         <value>: Query string value.
  -->
<define name="queryParameter">
 <element name="queryParameter">
  <interleave>
    <optional>
      <choice>
        <attribute name="name"/>
        <element name="name"><text/></element>
      </choice>
    </optional>
    <optional>
      <choice>
        <attribute name="value"/>
        <element name="value"><text/></element>
      </choice>
    </optional>
  </interleave>
 </element>
</define>

  <!--   shortcut - Creates a specific-OS compliant symbolic-link/shortcut
         Specific properties for <shortcut>:

         <comment>: Tooltip text for the shortcut
         <exec>: Program to execute, including command line arguments
         <icon>: GIF or PNG Image to use for the shortcut
         <name>: Shortcut text
         <noPinToStart>: Prevent pinning start screen or show as newly installed on Windows 7 and Windows 8
         <path>: Working directory for the program being executed
         <platforms>: Platforms in which the shortcut will be created  - Allowed values:
                      all: All Platforms
                      linux: Linux
                      linux-x64: Linux x86 64 bits
                      linux-ia64: Linux IA64
                      windows: Windows
                      osx: Mac OS X
                      solaris-sparc: Solaris Sparc
                      solaris-intel: Solaris Intel
                      linux-ppc: Linux PPC
                      linux-s390: Linux s390
                      linux-s390x: Linux s390x
                      freebsd: FreeBSD 5
                      freebsd4: FreeBSD 4
                      freebsd6: FreeBSD 6
                      freebsd6-x64: FreeBSD 6 64 bits
                      freebsd7: FreeBSD 7/8
                      freebsd7-x64: FreeBSD 7/8 64 bits
                      openbsd3: OpenBSD x86
                      hpux: HP-UX
                      aix: AIX, OS/400
                      irix-n32: IRIX
         <ruleEvaluationLogic>: Rule evaluation logic, by default, rules are evaluated with and logic
         <runAsAdmin>: Run program as administrator
         <runInTerminal>: Whether or not to run the program inside a terminal (Unix only)
         <shouldPackRuleEvaluationLogic>: Packing rules evaluation logic  - Allowed values:
                                          and: And
                                          or: Or
         <windowsExec>: Program to execute
         <windowsExecArgs>: Command line arguments for Program to Execute
         <windowsIcon>: File containing .ico image
         <windowsIconIndex>: Index for the icon within the icon file
         <windowsPath>: Working directory for the program being executed
         <ruleList>: Contains a set of rules or conditions
         <shouldPackRuleList>: Contains a set of rules or conditions that determines whether the element will be packed into the installer
  -->
<define name="shortcut">
 <element name="shortcut">
  <interleave>
    <optional>
      <choice>
        <attribute name="comment"/>
        <element name="comment"><text/></element>
      </choice>
    </optional>
    <optional>
      <choice>
        <attribute name="exec"/>
        <element name="exec"><text/></element>
      </choice>
    </optional>
    <optional>
      <choice>
        <attribute name="icon"/>
        <element name="icon"><text/></element>
      </choice>
    </optional>
    <optional>
      <choice>
        <attribute name="name"/>
        <element name="name"><text/></element>
      </choice>
    </optional>
    <optional>
      <choice>
        <attribute name="noPinToStart"/>
        <element name="noPinToStart"><text/></element>
      </choice>
    </optional>
    <optional>
      <choice>
        <attribute name="path"/>
        <element name="path"><text/></element>
      </choice>
    </optional>
    <optional>
      <choice>
        <attribute name="platforms"/>
        <element name="platforms"><text/></element>
      </choice>
    </optional>
    <optional>
      <choice>
        <attribute name="ruleEvaluationLogic"/>
        <element name="ruleEvaluationLogic"><text/></element>
      </choice>
    </optional>
    <optional>
      <choice>
        <attribute name="runAsAdmin"/>
        <element name="runAsAdmin"><text/></element>
      </choice>
    </optional>
    <optional>
      <choice>
        <attribute name="runInTerminal"/>
        <element name="runInTerminal"><text/></element>
      </choice>
    </optional>
    <optional>
      <choice>
        <attribute name="shouldPackRuleEvaluationLogic"/>
        <element name="shouldPackRuleEvaluationLogic"><text/></element>
      </choice>
    </optional>
    <optional>
      <choice>
        <attribute name="windowsExec"/>
        <element name="windowsExec"><text/></element>
      </choice>
    </optional>
    <optional>
      <choice>
        <attribute name="windowsExecArgs"/>
        <element name="windowsExecArgs"><text/></element>
      </choice>
    </optional>
    <optional>
      <choice>
        <attribute name="windowsIcon"/>
        <element name="windowsIcon"><text/></element>
      </choice>
    </optional>
    <optional>
      <choice>
        <attribute name="windowsIconIndex"/>
        <element name="windowsIconIndex"><text/></element>
      </choice>
    </optional>
    <optional>
      <choice>
        <attribute name="windowsPath"/>
        <element name="windowsPath"><text/></element>
      </choice>
    </optional>
    <optional>
      <element name="ruleList">
        <zeroOrMore>
          <ref name="rule"/>
        </zeroOrMore>
      </element>
    </optional>
    <optional>
      <element name="shouldPackRuleList">
        <zeroOrMore>
          <ref name="rule"/>
        </zeroOrMore>
      </element>
    </optional>
  </interleave>
 </element>
</define>

  <!--   licenseFile - 
         Specific properties for <licenseFile>:

         <code>: Language identifier code, i.e. "en" (for english)  - Allowed values:
                 sq: Albanian - Gjuha shqipe
                 ar: Arabic - العربية
                 es_AR: Argentine Spanish - Español Argentino
                 az: Azerbaijani - Azərbaycan
                 eu: Basque - Euskara
                 pt_BR: Brazilian Portuguese - Português Brasileiro
                 en_GB: British English - British English
                 bg: Bulgarian - български език
                 fr_CA: Canadian French - Français canadien
                 ca: Catalan - Català
                 hr: Croatian - Hrvatski jezik
                 cs: Czech - Čeština
                 da: Danish - Dansk
                 nl: Dutch - Nederlands
                 en: English - English
                 et: Estonian - Eesti keel
                 fi: Finnish - Suomi
                 fr: French - Français
                 de: German - Deutsch
                 el: Greek - ελληνικά
                 he: Hebrew - עברית
                 hu: Hungarian - Magyar
                 id: Indonesian - Bahasa Indonesia
                 it: Italian - Italiano
                 ja: Japanese - 日本語
                 kk: Kazakh - қазақ тілі
                 ko: Korean - 한국어
                 lv: Latvian - Latvijas
                 lt: Lithuanian - lietuvių kalba
                 es_MX: Mexican Spanish - Español de México
                 no: Norwegian - Norsk bokmål
                 fa: Persian - فارسی
                 pl: Polish - Polski
                 pt: Portuguese - Português
                 ro: Romanian - Română
                 ru: Russian - Русский
                 sr: Serbian - српски
                 zh_CN: Simplified Chinese - 简体中文
                 sk: Slovak - Slovenský jazyk
                 sl: Slovenian - Slovenščina
                 es: Spanish - Español
                 sv: Swedish - Svenska
                 th: Thai - ภาษาไทย
                 zh_TW: Traditional Chinese - 繁体中文
                 tr: Turkish - Türkçe
                 tk: Turkmen - Türkmençe
                 va: Valencian - Valencià
                 vi: Vietnamese - Tiếng Việt
                 cy: Welsh - Cymraeg
         <encoding>: Text file encoding, i.e. "utf-8"  - Allowed values:
                     iso8859-1: ISO8859-1
                     iso8859-2: ISO8859-2
                     utf-8: UTF-8
                     cp1251: CP1251
                     cp1252: CP1252
                     ascii: ASCII
                     macRoman: MacRoman
                     unicode: Unicode
         <file>: Path that points to a license text file.
         <htmlFile>: Path that points to a license HTML file (just allowed in qt mode)
         <resolveUCN>: Whether to resolve or not UCN escaped characters
  -->
<define name="licenseFile">
 <element name="licenseFile">
  <interleave>
    <optional>
      <choice>
        <attribute name="code"/>
        <element name="code"><text/></element>
      </choice>
    </optional>
    <optional>
      <choice>
        <attribute name="encoding"/>
        <element name="encoding"><text/></element>
      </choice>
    </optional>
    <optional>
      <choice>
        <attribute name="file"/>
        <element name="file"><text/></element>
      </choice>
    </optional>
    <optional>
      <choice>
        <attribute name="htmlFile"/>
        <element name="htmlFile"><text/></element>
      </choice>
    </optional>
    <optional>
      <choice>
        <attribute name="resolveUCN"/>
        <element name="resolveUCN"><text/></element>
      </choice>
    </optional>
  </interleave>
 </element>
</define>

<!-- These properties are common to all parameters -->
<define name="parameterCommonProperties">
  <interleave>
    <optional>
      <choice>
        <attribute name="name"/>
        <element name="name"><text/></element>
      </choice>
    </optional>
    <optional>
      <choice>
        <attribute name="title"/>
        <element name="title"><text/></element>
      </choice>
    </optional>
    <optional>
      <choice>
        <attribute name="description"/>
        <element name="description"><text/></element>
      </choice>
    </optional>
    <optional>
      <choice>
        <attribute name="explanation"/>
        <element name="explanation"><text/></element>
      </choice>
    </optional>
    <optional>
      <choice>
        <attribute name="value"/>
        <element name="value"><text/></element>
      </choice>
    </optional>
    <optional>
      <choice>
        <attribute name="default"/>
        <element name="default"><text/></element>
      </choice>
    </optional>
    <optional>
      <choice>
        <attribute name="ask"/>
        <element name="ask"><text/></element>
      </choice>
    </optional>
    <optional>
      <choice>
        <attribute name="cliOptionName"/>
        <element name="cliOptionName"><text/></element>
      </choice>
    </optional>
    <optional>
      <choice>
        <attribute name="cliOptionShow"/>
        <element name="cliOptionShow"><text/></element>
      </choice>
    </optional>
    <optional>
      <choice>
        <attribute name="cliOptionText"/>
        <element name="cliOptionText"><text/></element>
      </choice>
    </optional>
    <optional>
      <choice>
        <attribute name="insertAfter"/>
        <element name="insertAfter"><text/></element>
      </choice>
    </optional>
    <optional>
      <choice>
        <attribute name="insertBefore"/>
        <element name="insertBefore"><text/></element>
      </choice>
    </optional>
    <optional>
      <choice>
        <attribute name="leftImage"/>
        <element name="leftImage"><text/></element>
      </choice>
    </optional>
    <optional>
      <choice>
        <attribute name="ruleEvaluationLogic"/>
        <element name="ruleEvaluationLogic"><text/></element>
      </choice>
    </optional>
    <optional>
      <element name="postShowPageActionList">
        <zeroOrMore>
          <ref name="action"/>
        </zeroOrMore>
      </element>
    </optional>
    <optional>
      <element name="preShowPageActionList">
        <zeroOrMore>
          <ref name="action"/>
        </zeroOrMore>
      </element>
    </optional>
    <optional>
      <element name="ruleList">
        <zeroOrMore>
          <ref name="rule"/>
        </zeroOrMore>
      </element>
    </optional>
    <optional>
      <element name="validationActionList">
        <zeroOrMore>
          <ref name="action"/>
        </zeroOrMore>
      </element>
    </optional>
  </interleave>
</define>

 
<!--   parameter can be any of:
         - licenseParameter
         - stringParameter
         - passwordParameter
         - parameterGroup
         - fileParameter
         - linkParameter
         - directoryParameter
         - labelParameter
         - choiceParameterGroup
         - booleanParameter
         - choiceParameter
         - booleanParameterGroup
         - infoParameter
-->
<define name="parameter">
  <choice>
 
  <!--   licenseParameter - Display a license
         Specific properties for <licenseParameter>:

         <file>: File that will be displayed as license
         <fileEncoding>: File encoding type  - Allowed values:
                         iso8859-1: ISO8859-1
                         iso8859-2: ISO8859-2
                         utf-8: UTF-8
                         cp1251: CP1251
                         cp1252: CP1252
                         ascii: ASCII
                         macRoman: MacRoman
                         unicode: Unicode
         <htmlFile>: HTML file that will be displayed as license
         <wrapText>: Wrap text
         <licenseFileList>: List of licenses
  -->
  <element name="licenseParameter">
    <interleave>
    <ref name="parameterCommonProperties"/>
    <optional>
      <choice>
        <attribute name="file"/>
        <element name="file"><text/></element>
      </choice>
    </optional>
    <optional>
      <choice>
        <attribute name="fileEncoding"/>
        <element name="fileEncoding"><text/></element>
      </choice>
    </optional>
    <optional>
      <choice>
        <attribute name="htmlFile"/>
        <element name="htmlFile"><text/></element>
      </choice>
    </optional>
    <optional>
      <choice>
        <attribute name="wrapText"/>
        <element name="wrapText"><text/></element>
      </choice>
    </optional>
    <optional>
      <element name="licenseFileList">
        <zeroOrMore>
          <ref name="licenseFile"/>
        </zeroOrMore>
      </element>
    </optional>
    </interleave>
  </element>
 
 
  <!--   stringParameter - The string parameter allows you to request a text string from the user. It accepts all of the common options.
         Specific properties for <stringParameter>:

         <allowEmptyValue>: Whether or not to allow an empty value
         <width>: Width in characters of the corresponding field in the GUI page. If not specified, it defaults to 40.
  -->
  <element name="stringParameter">
    <interleave>
    <ref name="parameterCommonProperties"/>
    <optional>
      <choice>
        <attribute name="allowEmptyValue"/>
        <element name="allowEmptyValue"><text/></element>
      </choice>
    </optional>
    <optional>
      <choice>
        <attribute name="width"/>
        <element name="width"><text/></element>
      </choice>
    </optional>
    </interleave>
  </element>
 
 
  <!--   passwordParameter - Allow the user to input a password.
         Specific properties for <passwordParameter>:

         <allowEmptyValue>: Whether or not to allow an empty value
         <askForConfirmation>: If set to zero, the retype password field won't be shown.
         <descriptionRetype>: Description of retype field
         <width>: Width in characters of the corresponding field in the GUI page. If not specified, it defaults to 40.
  -->
  <element name="passwordParameter">
    <interleave>
    <ref name="parameterCommonProperties"/>
    <optional>
      <choice>
        <attribute name="allowEmptyValue"/>
        <element name="allowEmptyValue"><text/></element>
      </choice>
    </optional>
    <optional>
      <choice>
        <attribute name="askForConfirmation"/>
        <element name="askForConfirmation"><text/></element>
      </choice>
    </optional>
    <optional>
      <choice>
        <attribute name="descriptionRetype"/>
        <element name="descriptionRetype"><text/></element>
      </choice>
    </optional>
    <optional>
      <choice>
        <attribute name="width"/>
        <element name="width"><text/></element>
      </choice>
    </optional>
    </interleave>
  </element>
 
 
  <!--   parameterGroup - Allows you to create custom pages
         Specific properties for <parameterGroup>:

         <orientation>: Set orientation for objects in the group. It can only be horizontal or vertical. If not specified, defaults to vertical.  - Allowed values:
                        vertical: Vertical
                        horizontal: Horizontal
         <parameterList>: List of parameters to group
  -->
  <element name="parameterGroup">
    <interleave>
    <ref name="parameterCommonProperties"/>
    <optional>
      <choice>
        <attribute name="orientation"/>
        <element name="orientation"><text/></element>
      </choice>
    </optional>
    <optional>
      <element name="parameterList">
        <zeroOrMore>
          <ref name="parameter"/>
        </zeroOrMore>
      </element>
    </optional>
    </interleave>
  </element>
 
 
  <!--   fileParameter - Ask the user to enter a file
         Specific properties for <fileParameter>:

         <allowEmptyValue>: Whether or not to allow an empty value
         <mustBeWritable>: Whether or not to require that the file must be writable.
         <mustExist>: Whether or not to require that the file must already exist.
         <osxBundlesAreFiles>: Whether or not OS X bundles (*.app and *.bundle) will be considered files. The setting will just have effect on OS X, in other platforms they will be always considered directories
         <width>: Width in characters of the corresponding field in the GUI page. If not specified, it defaults to 40.
  -->
  <element name="fileParameter">
    <interleave>
    <ref name="parameterCommonProperties"/>
    <optional>
      <choice>
        <attribute name="allowEmptyValue"/>
        <element name="allowEmptyValue"><text/></element>
      </choice>
    </optional>
    <optional>
      <choice>
        <attribute name="mustBeWritable"/>
        <element name="mustBeWritable"><text/></element>
      </choice>
    </optional>
    <optional>
      <choice>
        <attribute name="mustExist"/>
        <element name="mustExist"><text/></element>
      </choice>
    </optional>
    <optional>
      <choice>
        <attribute name="osxBundlesAreFiles"/>
        <element name="osxBundlesAreFiles"><text/></element>
      </choice>
    </optional>
    <optional>
      <choice>
        <attribute name="width"/>
        <element name="width"><text/></element>
      </choice>
    </optional>
    </interleave>
  </element>
 
 
  <!--   linkParameter - The linkParameter displays an hyperlink-like label or a button, which executes an actionList when clicked.
         Specific properties for <linkParameter>:

         <clickedActionList>: List of actions to execute on click
  -->
  <element name="linkParameter">
    <interleave>
    <ref name="parameterCommonProperties"/>
    <optional>
      <element name="clickedActionList">
        <zeroOrMore>
          <ref name="action"/>
        </zeroOrMore>
      </element>
    </optional>
    </interleave>
  </element>
 
 
  <!--   directoryParameter - Ask the user to enter a directory
         Specific properties for <directoryParameter>:

         <allowEmptyValue>: Whether or not to allow an empty value
         <mustBeWritable>: Whether or not to require that the directory must be writable.
         <mustExist>: Whether or not to require that the directory must already exist.
         <osxBundlesAreFiles>: Whether or not OS X bundles (*.app and *.bundle) will be considered files. The setting will just have effect on OS X, in other platforms they will be always considered directories
         <width>: Width in characters of the corresponding field in the GUI page. If not specified, it defaults to 40.
  -->
  <element name="directoryParameter">
    <interleave>
    <ref name="parameterCommonProperties"/>
    <optional>
      <choice>
        <attribute name="allowEmptyValue"/>
        <element name="allowEmptyValue"><text/></element>
      </choice>
    </optional>
    <optional>
      <choice>
        <attribute name="mustBeWritable"/>
        <element name="mustBeWritable"><text/></element>
      </choice>
    </optional>
    <optional>
      <choice>
        <attribute name="mustExist"/>
        <element name="mustExist"><text/></element>
      </choice>
    </optional>
    <optional>
      <choice>
        <attribute name="osxBundlesAreFiles"/>
        <element name="osxBundlesAreFiles"><text/></element>
      </choice>
    </optional>
    <optional>
      <choice>
        <attribute name="width"/>
        <element name="width"><text/></element>
      </choice>
    </optional>
    </interleave>
  </element>
 
 
  <!--   labelParameter - The label parameter displays a string of read-only text.
         Specific properties for <labelParameter>:

         <image>: Optional image to display
  -->
  <element name="labelParameter">
    <interleave>
    <ref name="parameterCommonProperties"/>
    <optional>
      <choice>
        <attribute name="image"/>
        <element name="image"><text/></element>
      </choice>
    </optional>
    </interleave>
  </element>
 
 
  <!--   choiceParameterGroup - Allows you to create custom pages
         Specific properties for <choiceParameterGroup>:

         <orientation>: Set orientation for objects in the group. It can only be horizontal or vertical. If not specified, defaults to vertical.  - Allowed values:
                        vertical: Vertical
                        horizontal: Horizontal
         <unselectedOptionsBehavior>: How unselected options will behave  - Allowed values:
                                      disable: Disable
                                      none: None
         <parameterList>: List of parameters to group
  -->
  <element name="choiceParameterGroup">
    <interleave>
    <ref name="parameterCommonProperties"/>
    <optional>
      <choice>
        <attribute name="orientation"/>
        <element name="orientation"><text/></element>
      </choice>
    </optional>
    <optional>
      <choice>
        <attribute name="unselectedOptionsBehavior"/>
        <element name="unselectedOptionsBehavior"><text/></element>
      </choice>
    </optional>
    <optional>
      <element name="parameterList">
        <zeroOrMore>
          <ref name="parameter"/>
        </zeroOrMore>
      </element>
    </optional>
    </interleave>
  </element>
 
 
  <!--   booleanParameter - Request a boolean value from the user.
         Specific properties for <booleanParameter>:

         <displayStyle>: Display style in GUI mode  - Allowed values:
                         radiobuttons: Radiobuttons
                         checkbox-left: Checkbox left
                         checkbox-right: Checkbox right
  -->
  <element name="booleanParameter">
    <interleave>
    <ref name="parameterCommonProperties"/>
    <optional>
      <choice>
        <attribute name="displayStyle"/>
        <element name="displayStyle"><text/></element>
      </choice>
    </optional>
    </interleave>
  </element>
 
 
  <!--   choiceParameter - Ask the user to select a value among a predefined list.
         Specific properties for <choiceParameter>:

         <allowEmptyValue>: Whether or not to allow an empty value
         <displayType>: Choose an entry in a listbox or among a number of radiobuttons.  - Allowed values:
                        combobox: Combobox
                        radiobuttons: Radiobuttons
         <ordering>: Order in which the text of choices will be displayed at runtime  - Allowed values:
                     default: Default
                     alphabetical: Alphabetical
                     alphabeticalreverse: Alphabetical Reverse
         <width>: Width in characters of the corresponding field in the GUI page. If not specified, it defaults to 40.
         <optionList>: Predefined list of options that allows the user to select a value
  -->
  <element name="choiceParameter">
    <interleave>
    <ref name="parameterCommonProperties"/>
    <optional>
      <choice>
        <attribute name="allowEmptyValue"/>
        <element name="allowEmptyValue"><text/></element>
      </choice>
    </optional>
    <optional>
      <choice>
        <attribute name="displayType"/>
        <element name="displayType"><text/></element>
      </choice>
    </optional>
    <optional>
      <choice>
        <attribute name="ordering"/>
        <element name="ordering"><text/></element>
      </choice>
    </optional>
    <optional>
      <choice>
        <attribute name="width"/>
        <element name="width"><text/></element>
      </choice>
    </optional>
    <optional>
      <element name="optionList">
        <zeroOrMore>
          <ref name="option"/>
        </zeroOrMore>
      </element>
    </optional>
    </interleave>
  </element>
 
 
  <!--   booleanParameterGroup - Allows you to create custom pages
         Specific properties for <booleanParameterGroup>:

         <orientation>: Set orientation for objects in the group. It can only be horizontal or vertical. If not specified, defaults to vertical.  - Allowed values:
                        vertical: Vertical
                        horizontal: Horizontal
         <validationType>: Validation type  - Allowed values:
                           always: Always
                           ifSelected: Only if Selected
         <parameterList>: List of parameters to group
  -->
  <element name="booleanParameterGroup">
    <interleave>
    <ref name="parameterCommonProperties"/>
    <optional>
      <choice>
        <attribute name="orientation"/>
        <element name="orientation"><text/></element>
      </choice>
    </optional>
    <optional>
      <choice>
        <attribute name="validationType"/>
        <element name="validationType"><text/></element>
      </choice>
    </optional>
    <optional>
      <element name="parameterList">
        <zeroOrMore>
          <ref name="parameter"/>
        </zeroOrMore>
      </element>
    </optional>
    </interleave>
  </element>
 
 
  <!--   infoParameter - Display a read-only text information page.
         Specific properties for <infoParameter>:

         <htmlValue>: HTML text that will be shown in Qt mode. Note that regular text still needs to be provided in case the installer is run in another mode
         <trimMarginNumChars>: Removes the specified number of characters from the left margin
  -->
  <element name="infoParameter">
    <interleave>
    <ref name="parameterCommonProperties"/>
    <optional>
      <choice>
        <attribute name="htmlValue"/>
        <element name="htmlValue"><text/></element>
      </choice>
    </optional>
    <optional>
      <choice>
        <attribute name="trimMarginNumChars"/>
        <element name="trimMarginNumChars"><text/></element>
      </choice>
    </optional>
    </interleave>
  </element>
 
  </choice>
</define>

  <!--   language - 
         Specific properties for <language>:

         <code>: Language identifier code, i.e. "en" (for english)  - Allowed values:
                 sq: Albanian - Gjuha shqipe
                 ar: Arabic - العربية
                 es_AR: Argentine Spanish - Español Argentino
                 az: Azerbaijani - Azərbaycan
                 eu: Basque - Euskara
                 pt_BR: Brazilian Portuguese - Português Brasileiro
                 en_GB: British English - British English
                 bg: Bulgarian - български език
                 fr_CA: Canadian French - Français canadien
                 ca: Catalan - Català
                 hr: Croatian - Hrvatski jezik
                 cs: Czech - Čeština
                 da: Danish - Dansk
                 nl: Dutch - Nederlands
                 en: English - English
                 et: Estonian - Eesti keel
                 fi: Finnish - Suomi
                 fr: French - Français
                 de: German - Deutsch
                 el: Greek - ελληνικά
                 he: Hebrew - עברית
                 hu: Hungarian - Magyar
                 id: Indonesian - Bahasa Indonesia
                 it: Italian - Italiano
                 ja: Japanese - 日本語
                 kk: Kazakh - қазақ тілі
                 ko: Korean - 한국어
                 lv: Latvian - Latvijas
                 lt: Lithuanian - lietuvių kalba
                 es_MX: Mexican Spanish - Español de México
                 no: Norwegian - Norsk bokmål
                 fa: Persian - فارسی
                 pl: Polish - Polski
                 pt: Portuguese - Português
                 ro: Romanian - Română
                 ru: Russian - Русский
                 sr: Serbian - српски
                 zh_CN: Simplified Chinese - 简体中文
                 sk: Slovak - Slovenský jazyk
                 sl: Slovenian - Slovenščina
                 es: Spanish - Español
                 sv: Swedish - Svenska
                 th: Thai - ภาษาไทย
                 zh_TW: Traditional Chinese - 繁体中文
                 tr: Turkish - Türkçe
                 tk: Turkmen - Türkmençe
                 va: Valencian - Valencià
                 vi: Vietnamese - Tiếng Việt
                 cy: Welsh - Cymraeg
         <encoding>: Text file encoding, i.e. "utf-8"  - Allowed values:
                     iso8859-1: ISO8859-1
                     iso8859-2: ISO8859-2
                     utf-8: UTF-8
                     cp1251: CP1251
                     cp1252: CP1252
                     ascii: ASCII
                     macRoman: MacRoman
                     unicode: Unicode
         <file>: 
         <resolveUCN>: Whether to resolve or not UCN escaped characters
  -->
<define name="language">
 <element name="language">
  <interleave>
    <optional>
      <choice>
        <attribute name="code"/>
        <element name="code"><text/></element>
      </choice>
    </optional>
    <optional>
      <choice>
        <attribute name="encoding"/>
        <element name="encoding"><text/></element>
      </choice>
    </optional>
    <optional>
      <choice>
        <attribute name="file"/>
        <element name="file"><text/></element>
      </choice>
    </optional>
    <optional>
      <choice>
        <attribute name="resolveUCN"/>
        <element name="resolveUCN"><text/></element>
      </choice>
    </optional>
  </interleave>
 </element>
</define>

  <!--   linkShortcut - Creates a specific-OS compliant symbolic-link/shortcut
         Specific properties for <linkShortcut>:

         <comment>: Tooltip text for the shortcut
         <icon>: GIF or PNG Image to use for the shortcut
         <name>: Shortcut text
         <noPinToStart>: Prevent pinning start screen or show as newly installed on Windows 7 and Windows 8
         <platforms>: Platforms in which the shortcut will be created  - Allowed values:
                      all: All Platforms
                      linux: Linux
                      linux-x64: Linux x86 64 bits
                      linux-ia64: Linux IA64
                      windows: Windows
                      osx: Mac OS X
                      solaris-sparc: Solaris Sparc
                      solaris-intel: Solaris Intel
                      linux-ppc: Linux PPC
                      linux-s390: Linux s390
                      linux-s390x: Linux s390x
                      freebsd: FreeBSD 5
                      freebsd4: FreeBSD 4
                      freebsd6: FreeBSD 6
                      freebsd6-x64: FreeBSD 6 64 bits
                      freebsd7: FreeBSD 7/8
                      freebsd7-x64: FreeBSD 7/8 64 bits
                      openbsd3: OpenBSD x86
                      hpux: HP-UX
                      aix: AIX, OS/400
                      irix-n32: IRIX
         <ruleEvaluationLogic>: Rule evaluation logic, by default, rules are evaluated with and logic
         <runAsAdmin>: Run program as administrator
         <runInTerminal>: Whether or not to run the program inside a terminal (Unix only)
         <shouldPackRuleEvaluationLogic>: Packing rules evaluation logic  - Allowed values:
                                          and: And
                                          or: Or
         <url>: URL
         <windowsIcon>: File containing .ico image
         <windowsIconIndex>: Index for the icon within the icon file
         <ruleList>: Contains a set of rules or conditions
         <shouldPackRuleList>: Contains a set of rules or conditions that determines whether the element will be packed into the installer
  -->
<define name="linkShortcut">
 <element name="linkShortcut">
  <interleave>
    <optional>
      <choice>
        <attribute name="comment"/>
        <element name="comment"><text/></element>
      </choice>
    </optional>
    <optional>
      <choice>
        <attribute name="icon"/>
        <element name="icon"><text/></element>
      </choice>
    </optional>
    <optional>
      <choice>
        <attribute name="name"/>
        <element name="name"><text/></element>
      </choice>
    </optional>
    <optional>
      <choice>
        <attribute name="noPinToStart"/>
        <element name="noPinToStart"><text/></element>
      </choice>
    </optional>
    <optional>
      <choice>
        <attribute name="platforms"/>
        <element name="platforms"><text/></element>
      </choice>
    </optional>
    <optional>
      <choice>
        <attribute name="ruleEvaluationLogic"/>
        <element name="ruleEvaluationLogic"><text/></element>
      </choice>
    </optional>
    <optional>
      <choice>
        <attribute name="runAsAdmin"/>
        <element name="runAsAdmin"><text/></element>
      </choice>
    </optional>
    <optional>
      <choice>
        <attribute name="runInTerminal"/>
        <element name="runInTerminal"><text/></element>
      </choice>
    </optional>
    <optional>
      <choice>
        <attribute name="shouldPackRuleEvaluationLogic"/>
        <element name="shouldPackRuleEvaluationLogic"><text/></element>
      </choice>
    </optional>
    <optional>
      <choice>
        <attribute name="url"/>
        <element name="url"><text/></element>
      </choice>
    </optional>
    <optional>
      <choice>
        <attribute name="windowsIcon"/>
        <element name="windowsIcon"><text/></element>
      </choice>
    </optional>
    <optional>
      <choice>
        <attribute name="windowsIconIndex"/>
        <element name="windowsIconIndex"><text/></element>
      </choice>
    </optional>
    <optional>
      <element name="ruleList">
        <zeroOrMore>
          <ref name="rule"/>
        </zeroOrMore>
      </element>
    </optional>
    <optional>
      <element name="shouldPackRuleList">
        <zeroOrMore>
          <ref name="rule"/>
        </zeroOrMore>
      </element>
    </optional>
  </interleave>
 </element>
</define>

  <!--   fileShortcut - Creates a specific-OS compliant symbolic-link/shortcut
         Specific properties for <fileShortcut>:

         <comment>: Tooltip text for the shortcut
         <filePath>: Path to file
         <icon>: GIF or PNG Image to use for the shortcut
         <name>: Shortcut text
         <noPinToStart>: Prevent pinning start screen or show as newly installed on Windows 7 and Windows 8
         <platforms>: Platforms in which the shortcut will be created  - Allowed values:
                      all: All Platforms
                      linux: Linux
                      linux-x64: Linux x86 64 bits
                      linux-ia64: Linux IA64
                      windows: Windows
                      osx: Mac OS X
                      solaris-sparc: Solaris Sparc
                      solaris-intel: Solaris Intel
                      linux-ppc: Linux PPC
                      linux-s390: Linux s390
                      linux-s390x: Linux s390x
                      freebsd: FreeBSD 5
                      freebsd4: FreeBSD 4
                      freebsd6: FreeBSD 6
                      freebsd6-x64: FreeBSD 6 64 bits
                      freebsd7: FreeBSD 7/8
                      freebsd7-x64: FreeBSD 7/8 64 bits
                      openbsd3: OpenBSD x86
                      hpux: HP-UX
                      aix: AIX, OS/400
                      irix-n32: IRIX
         <ruleEvaluationLogic>: Rule evaluation logic, by default, rules are evaluated with and logic
         <runAsAdmin>: Run program as administrator
         <runInTerminal>: Whether or not to run the program inside a terminal (Unix only)
         <shouldPackRuleEvaluationLogic>: Packing rules evaluation logic  - Allowed values:
                                          and: And
                                          or: Or
         <windowsIcon>: File containing .ico image
         <windowsIconIndex>: Index for the icon within the icon file
         <ruleList>: Contains a set of rules or conditions
         <shouldPackRuleList>: Contains a set of rules or conditions that determines whether the element will be packed into the installer
  -->
<define name="fileShortcut">
 <element name="fileShortcut">
  <interleave>
    <optional>
      <choice>
        <attribute name="comment"/>
        <element name="comment"><text/></element>
      </choice>
    </optional>
    <optional>
      <choice>
        <attribute name="filePath"/>
        <element name="filePath"><text/></element>
      </choice>
    </optional>
    <optional>
      <choice>
        <attribute name="icon"/>
        <element name="icon"><text/></element>
      </choice>
    </optional>
    <optional>
      <choice>
        <attribute name="name"/>
        <element name="name"><text/></element>
      </choice>
    </optional>
    <optional>
      <choice>
        <attribute name="noPinToStart"/>
        <element name="noPinToStart"><text/></element>
      </choice>
    </optional>
    <optional>
      <choice>
        <attribute name="platforms"/>
        <element name="platforms"><text/></element>
      </choice>
    </optional>
    <optional>
      <choice>
        <attribute name="ruleEvaluationLogic"/>
        <element name="ruleEvaluationLogic"><text/></element>
      </choice>
    </optional>
    <optional>
      <choice>
        <attribute name="runAsAdmin"/>
        <element name="runAsAdmin"><text/></element>
      </choice>
    </optional>
    <optional>
      <choice>
        <attribute name="runInTerminal"/>
        <element name="runInTerminal"><text/></element>
      </choice>
    </optional>
    <optional>
      <choice>
        <attribute name="shouldPackRuleEvaluationLogic"/>
        <element name="shouldPackRuleEvaluationLogic"><text/></element>
      </choice>
    </optional>
    <optional>
      <choice>
        <attribute name="windowsIcon"/>
        <element name="windowsIcon"><text/></element>
      </choice>
    </optional>
    <optional>
      <choice>
        <attribute name="windowsIconIndex"/>
        <element name="windowsIconIndex"><text/></element>
      </choice>
    </optional>
    <optional>
      <element name="ruleList">
        <zeroOrMore>
          <ref name="rule"/>
        </zeroOrMore>
      </element>
    </optional>
    <optional>
      <element name="shouldPackRuleList">
        <zeroOrMore>
          <ref name="rule"/>
        </zeroOrMore>
      </element>
    </optional>
  </interleave>
 </element>
</define>

 
<!--   fileFilter can be any of:
         - filterGroup
         - fileNameFilter
-->
<define name="fileFilter">
  <choice>
 
  <!--   filterGroup - Group a set of filters
         Specific properties for <filterGroup>:

         <filterEvaluationLogic>: Filter evaluation logic  - Allowed values:
                                  and: And
                                  or: Or
         <onPackingFilterList>: Filter list
  -->
  <element name="filterGroup">
    <interleave>
    <optional>
      <choice>
        <attribute name="filterEvaluationLogic"/>
        <element name="filterEvaluationLogic"><text/></element>
      </choice>
    </optional>
    <optional>
      <element name="onPackingFilterList">
        <zeroOrMore>
          <ref name="fileFilter"/>
        </zeroOrMore>
      </element>
    </optional>
    </interleave>
  </element>
 
 
  <!--   fileNameFilter - Whether to pack or not matched files
         Specific properties for <fileNameFilter>:

         <logic>: Whether or not the pattern must match to pass the filter.  - Allowed values:
                  matches: Matches
                  does_not_match: Does not match
         <pattern>: Pattern to match against the path of the file
         <patternType>: Whether to use glob or regular expressions matching  - Allowed values:
                        glob: Glob
                        regexp: Regexp
  -->
  <element name="fileNameFilter">
    <interleave>
    <optional>
      <choice>
        <attribute name="logic"/>
        <element name="logic"><text/></element>
      </choice>
    </optional>
    <optional>
      <choice>
        <attribute name="pattern"/>
        <element name="pattern"><text/></element>
      </choice>
    </optional>
    <optional>
      <choice>
        <attribute name="patternType"/>
        <element name="patternType"><text/></element>
      </choice>
    </optional>
    </interleave>
  </element>
 
  </choice>
</define>

  <!--   distributionFile - File to be installed in the destination folder
         Specific properties for <distributionFile>:

         <allowWildcards>: Whether or not to use wildcards
         <excludeFiles>: Patterns to exclude files
         <filterEvaluationLogic>: Filter evaluation logic  - Allowed values:
                                  and: And
                                  or: Or
         <includeFiles>: Patterns to include files
         <origin>: File to pack
         <onPackingFilterList>: Filter list
  -->
<define name="distributionFile">
 <element name="distributionFile">
  <interleave>
    <optional>
      <choice>
        <attribute name="allowWildcards"/>
        <element name="allowWildcards"><text/></element>
      </choice>
    </optional>
    <optional>
      <choice>
        <attribute name="excludeFiles"/>
        <element name="excludeFiles"><text/></element>
      </choice>
    </optional>
    <optional>
      <choice>
        <attribute name="filterEvaluationLogic"/>
        <element name="filterEvaluationLogic"><text/></element>
      </choice>
    </optional>
    <optional>
      <choice>
        <attribute name="includeFiles"/>
        <element name="includeFiles"><text/></element>
      </choice>
    </optional>
    <optional>
      <choice>
        <attribute name="origin"/>
        <element name="origin"><text/></element>
      </choice>
    </optional>
    <optional>
      <element name="onPackingFilterList">
        <zeroOrMore>
          <ref name="fileFilter"/>
        </zeroOrMore>
      </element>
    </optional>
  </interleave>
 </element>
</define>

  <!--   distributionDirectory - Directory to be installed in the destination folder
         Specific properties for <distributionDirectory>:

         <allowWildcards>: Whether or not to use wildcards
         <excludeFiles>: Patterns to exclude files
         <filterEvaluationLogic>: Filter evaluation logic  - Allowed values:
                                  and: And
                                  or: Or
         <includeFiles>: Patterns to include files
         <origin>: Directory to pack
         <onPackingFilterList>: Filter list
  -->
<define name="distributionDirectory">
 <element name="distributionDirectory">
  <interleave>
    <optional>
      <choice>
        <attribute name="allowWildcards"/>
        <element name="allowWildcards"><text/></element>
      </choice>
    </optional>
    <optional>
      <choice>
        <attribute name="excludeFiles"/>
        <element name="excludeFiles"><text/></element>
      </choice>
    </optional>
    <optional>
      <choice>
        <attribute name="filterEvaluationLogic"/>
        <element name="filterEvaluationLogic"><text/></element>
      </choice>
    </optional>
    <optional>
      <choice>
        <attribute name="includeFiles"/>
        <element name="includeFiles"><text/></element>
      </choice>
    </optional>
    <optional>
      <choice>
        <attribute name="origin"/>
        <element name="origin"><text/></element>
      </choice>
    </optional>
    <optional>
      <element name="onPackingFilterList">
        <zeroOrMore>
          <ref name="fileFilter"/>
        </zeroOrMore>
      </element>
    </optional>
  </interleave>
 </element>
</define>

  <!--   folder - Folder in destination machine where files will be installed
         Specific properties for <folder>:

         <description>: Folder description
         <destination>: Path of new folder
         <name>: Folder name
         <platforms>: Platforms in which this folder will be installed  - Allowed values:
                      all: All Platforms
                      linux: Linux
                      linux-x64: Linux x86 64 bits
                      linux-ia64: Linux IA64
                      windows: Windows
                      osx: Mac OS X
                      solaris-sparc: Solaris Sparc
                      solaris-intel: Solaris Intel
                      linux-ppc: Linux PPC
                      linux-s390: Linux s390
                      linux-s390x: Linux s390x
                      freebsd: FreeBSD 5
                      freebsd4: FreeBSD 4
                      freebsd6: FreeBSD 6
                      freebsd6-x64: FreeBSD 6 64 bits
                      freebsd7: FreeBSD 7/8
                      freebsd7-x64: FreeBSD 7/8 64 bits
                      openbsd3: OpenBSD x86
                      hpux: HP-UX
                      aix: AIX, OS/400
                      irix-n32: IRIX
         <ruleEvaluationLogic>: Rule evaluation logic  - Allowed values:
                                and: And
                                or: Or
         <shouldPackRuleEvaluationLogic>: Packing rules evaluation logic  - Allowed values:
                                          and: And
                                          or: Or
         <actionList>: Contains a set of actions
         <distributionFileList>: File list
         <ruleList>: Contains a set of rules or conditions
         <shortcutList>: Contains a set of shortcuts
         <shouldPackRuleList>: Contains a set of rules or conditions that determines whether the element will be packed into the installer
  -->
<define name="folder">
 <element name="folder">
  <interleave>
    <optional>
      <choice>
        <attribute name="description"/>
        <element name="description"><text/></element>
      </choice>
    </optional>
    <optional>
      <choice>
        <attribute name="destination"/>
        <element name="destination"><text/></element>
      </choice>
    </optional>
    <optional>
      <choice>
        <attribute name="name"/>
        <element name="name"><text/></element>
      </choice>
    </optional>
    <optional>
      <choice>
        <attribute name="platforms"/>
        <element name="platforms"><text/></element>
      </choice>
    </optional>
    <optional>
      <choice>
        <attribute name="ruleEvaluationLogic"/>
        <element name="ruleEvaluationLogic"><text/></element>
      </choice>
    </optional>
    <optional>
      <choice>
        <attribute name="shouldPackRuleEvaluationLogic"/>
        <element name="shouldPackRuleEvaluationLogic"><text/></element>
      </choice>
    </optional>
    <optional>
      <element name="actionList">
        <zeroOrMore>
          <ref name="action"/>
        </zeroOrMore>
      </element>
    </optional>
    <optional>
      <element name="distributionFileList">
        <zeroOrMore>
          <choice>
            <ref name="distributionFile"/>
            <ref name="distributionDirectory"/>
            <ref name="distributionDirectory"/>
          </choice>
        </zeroOrMore>
      </element>
    </optional>
    <optional>
      <element name="ruleList">
        <zeroOrMore>
          <ref name="rule"/>
        </zeroOrMore>
      </element>
    </optional>
    <optional>
      <element name="shortcutList">
        <zeroOrMore>
          <choice>
            <ref name="shortcut"/>
            <ref name="startMenuShortcut"/>
            <ref name="fileShortcut"/>
            <ref name="quickLaunchLinkShortcut"/>
            <ref name="startMenuLinkShortcut"/>
            <ref name="quickLaunchFileShortcut"/>
            <ref name="startMenuFileShortcut"/>
            <ref name="linkShortcut"/>
            <ref name="quickLaunchShortcut"/>
          </choice>
        </zeroOrMore>
      </element>
    </optional>
    <optional>
      <element name="shouldPackRuleList">
        <zeroOrMore>
          <ref name="rule"/>
        </zeroOrMore>
      </element>
    </optional>
  </interleave>
 </element>
</define>

  <!--   platformOptions - 
         Specific properties for <platformOptions>:

         <platform>:   - Allowed values:
                     linux: Linux
                     linux-x64: Linux x86 64 bits
                     linux-ia64: Linux IA64
                     windows: Windows
                     osx: Mac OS X
                     solaris-sparc: Solaris Sparc
                     solaris-intel: Solaris Intel
                     linux-ppc: Linux PPC
                     linux-s390: Linux s390
                     linux-s390x: Linux s390x
                     freebsd: FreeBSD 5
                     freebsd4: FreeBSD 4
                     freebsd6: FreeBSD 6
                     freebsd6-x64: FreeBSD 6 64 bits
                     freebsd7: FreeBSD 7/8
                     freebsd7-x64: FreeBSD 7/8 64 bits
                     openbsd3: OpenBSD x86
                     hpux: HP-UX
                     aix: AIX, OS/400
                     irix-n32: IRIX
                     rpm: RPM
                     deb: DEB
  -->
<define name="platformOptions">
 <element name="platformOptions">
  <interleave>
    <ref name="commonPlatformOptions"/>
    <optional>
      <choice>
        <attribute name="platform"/>
        <element name="platform"><text/></element>
      </choice>
    </optional>
  </interleave>
 </element>
</define>

  <!--   quickLaunchLinkShortcut - Creates a specific-OS compliant symbolic-link/shortcut
         Specific properties for <quickLaunchLinkShortcut>:

         <comment>: Tooltip text for the shortcut
         <name>: Shortcut text
         <noPinToStart>: Prevent pinning start screen or show as newly installed on Windows 7 and Windows 8
         <ruleEvaluationLogic>: Rule evaluation logic, by default, rules are evaluated with and logic
         <runAsAdmin>: Run program as administrator
         <runInTerminal>: Whether or not to run the program inside a terminal (Unix only)
         <shouldPackRuleEvaluationLogic>: Packing rules evaluation logic  - Allowed values:
                                          and: And
                                          or: Or
         <url>: URL
         <windowsIcon>: File containing .ico image
         <windowsIconIndex>: Index for the icon within the icon file
         <ruleList>: Contains a set of rules or conditions
         <shouldPackRuleList>: Contains a set of rules or conditions that determines whether the element will be packed into the installer
  -->
<define name="quickLaunchLinkShortcut">
 <element name="quickLaunchLinkShortcut">
  <interleave>
    <optional>
      <choice>
        <attribute name="comment"/>
        <element name="comment"><text/></element>
      </choice>
    </optional>
    <optional>
      <choice>
        <attribute name="name"/>
        <element name="name"><text/></element>
      </choice>
    </optional>
    <optional>
      <choice>
        <attribute name="noPinToStart"/>
        <element name="noPinToStart"><text/></element>
      </choice>
    </optional>
    <optional>
      <choice>
        <attribute name="ruleEvaluationLogic"/>
        <element name="ruleEvaluationLogic"><text/></element>
      </choice>
    </optional>
    <optional>
      <choice>
        <attribute name="runAsAdmin"/>
        <element name="runAsAdmin"><text/></element>
      </choice>
    </optional>
    <optional>
      <choice>
        <attribute name="runInTerminal"/>
        <element name="runInTerminal"><text/></element>
      </choice>
    </optional>
    <optional>
      <choice>
        <attribute name="shouldPackRuleEvaluationLogic"/>
        <element name="shouldPackRuleEvaluationLogic"><text/></element>
      </choice>
    </optional>
    <optional>
      <choice>
        <attribute name="url"/>
        <element name="url"><text/></element>
      </choice>
    </optional>
    <optional>
      <choice>
        <attribute name="windowsIcon"/>
        <element name="windowsIcon"><text/></element>
      </choice>
    </optional>
    <optional>
      <choice>
        <attribute name="windowsIconIndex"/>
        <element name="windowsIconIndex"><text/></element>
      </choice>
    </optional>
    <optional>
      <element name="ruleList">
        <zeroOrMore>
          <ref name="rule"/>
        </zeroOrMore>
      </element>
    </optional>
    <optional>
      <element name="shouldPackRuleList">
        <zeroOrMore>
          <ref name="rule"/>
        </zeroOrMore>
      </element>
    </optional>
  </interleave>
 </element>
</define>

  <!--   quickLaunchFileShortcut - Creates a specific-OS compliant symbolic-link/shortcut
         Specific properties for <quickLaunchFileShortcut>:

         <comment>: Tooltip text for the shortcut
         <filePath>: Path to file
         <name>: Shortcut text
         <noPinToStart>: Prevent pinning start screen or show as newly installed on Windows 7 and Windows 8
         <ruleEvaluationLogic>: Rule evaluation logic, by default, rules are evaluated with and logic
         <runAsAdmin>: Run program as administrator
         <runInTerminal>: Whether or not to run the program inside a terminal (Unix only)
         <shouldPackRuleEvaluationLogic>: Packing rules evaluation logic  - Allowed values:
                                          and: And
                                          or: Or
         <windowsIcon>: File containing .ico image
         <windowsIconIndex>: Index for the icon within the icon file
         <ruleList>: Contains a set of rules or conditions
         <shouldPackRuleList>: Contains a set of rules or conditions that determines whether the element will be packed into the installer
  -->
<define name="quickLaunchFileShortcut">
 <element name="quickLaunchFileShortcut">
  <interleave>
    <optional>
      <choice>
        <attribute name="comment"/>
        <element name="comment"><text/></element>
      </choice>
    </optional>
    <optional>
      <choice>
        <attribute name="filePath"/>
        <element name="filePath"><text/></element>
      </choice>
    </optional>
    <optional>
      <choice>
        <attribute name="name"/>
        <element name="name"><text/></element>
      </choice>
    </optional>
    <optional>
      <choice>
        <attribute name="noPinToStart"/>
        <element name="noPinToStart"><text/></element>
      </choice>
    </optional>
    <optional>
      <choice>
        <attribute name="ruleEvaluationLogic"/>
        <element name="ruleEvaluationLogic"><text/></element>
      </choice>
    </optional>
    <optional>
      <choice>
        <attribute name="runAsAdmin"/>
        <element name="runAsAdmin"><text/></element>
      </choice>
    </optional>
    <optional>
      <choice>
        <attribute name="runInTerminal"/>
        <element name="runInTerminal"><text/></element>
      </choice>
    </optional>
    <optional>
      <choice>
        <attribute name="shouldPackRuleEvaluationLogic"/>
        <element name="shouldPackRuleEvaluationLogic"><text/></element>
      </choice>
    </optional>
    <optional>
      <choice>
        <attribute name="windowsIcon"/>
        <element name="windowsIcon"><text/></element>
      </choice>
    </optional>
    <optional>
      <choice>
        <attribute name="windowsIconIndex"/>
        <element name="windowsIconIndex"><text/></element>
      </choice>
    </optional>
    <optional>
      <element name="ruleList">
        <zeroOrMore>
          <ref name="rule"/>
        </zeroOrMore>
      </element>
    </optional>
    <optional>
      <element name="shouldPackRuleList">
        <zeroOrMore>
          <ref name="rule"/>
        </zeroOrMore>
      </element>
    </optional>
  </interleave>
 </element>
</define>

  <!--   quickLaunchShortcut - Creates a specific-OS compliant symbolic-link/shortcut
         Specific properties for <quickLaunchShortcut>:

         <comment>: Tooltip text for the shortcut
         <name>: Shortcut text
         <noPinToStart>: Prevent pinning start screen or show as newly installed on Windows 7 and Windows 8
         <ruleEvaluationLogic>: Rule evaluation logic, by default, rules are evaluated with and logic
         <runAsAdmin>: Run program as administrator
         <runInTerminal>: Whether or not to run the program inside a terminal (Unix only)
         <shouldPackRuleEvaluationLogic>: Packing rules evaluation logic  - Allowed values:
                                          and: And
                                          or: Or
         <windowsExec>: Program to execute
         <windowsExecArgs>: Command line arguments for Program to Execute
         <windowsIcon>: File containing .ico image
         <windowsIconIndex>: Index for the icon within the icon file
         <windowsPath>: Working directory for the program being executed
         <ruleList>: Contains a set of rules or conditions
         <shouldPackRuleList>: Contains a set of rules or conditions that determines whether the element will be packed into the installer
  -->
<define name="quickLaunchShortcut">
 <element name="quickLaunchShortcut">
  <interleave>
    <optional>
      <choice>
        <attribute name="comment"/>
        <element name="comment"><text/></element>
      </choice>
    </optional>
    <optional>
      <choice>
        <attribute name="name"/>
        <element name="name"><text/></element>
      </choice>
    </optional>
    <optional>
      <choice>
        <attribute name="noPinToStart"/>
        <element name="noPinToStart"><text/></element>
      </choice>
    </optional>
    <optional>
      <choice>
        <attribute name="ruleEvaluationLogic"/>
        <element name="ruleEvaluationLogic"><text/></element>
      </choice>
    </optional>
    <optional>
      <choice>
        <attribute name="runAsAdmin"/>
        <element name="runAsAdmin"><text/></element>
      </choice>
    </optional>
    <optional>
      <choice>
        <attribute name="runInTerminal"/>
        <element name="runInTerminal"><text/></element>
      </choice>
    </optional>
    <optional>
      <choice>
        <attribute name="shouldPackRuleEvaluationLogic"/>
        <element name="shouldPackRuleEvaluationLogic"><text/></element>
      </choice>
    </optional>
    <optional>
      <choice>
        <attribute name="windowsExec"/>
        <element name="windowsExec"><text/></element>
      </choice>
    </optional>
    <optional>
      <choice>
        <attribute name="windowsExecArgs"/>
        <element name="windowsExecArgs"><text/></element>
      </choice>
    </optional>
    <optional>
      <choice>
        <attribute name="windowsIcon"/>
        <element name="windowsIcon"><text/></element>
      </choice>
    </optional>
    <optional>
      <choice>
        <attribute name="windowsIconIndex"/>
        <element name="windowsIconIndex"><text/></element>
      </choice>
    </optional>
    <optional>
      <choice>
        <attribute name="windowsPath"/>
        <element name="windowsPath"><text/></element>
      </choice>
    </optional>
    <optional>
      <element name="ruleList">
        <zeroOrMore>
          <ref name="rule"/>
        </zeroOrMore>
      </element>
    </optional>
    <optional>
      <element name="shouldPackRuleList">
        <zeroOrMore>
          <ref name="rule"/>
        </zeroOrMore>
      </element>
    </optional>
  </interleave>
 </element>
</define>

  <!--   startMenuLinkShortcut - Creates a specific-OS compliant symbolic-link/shortcut
         Specific properties for <startMenuLinkShortcut>:

         <comment>: Tooltip text for the shortcut
         <name>: Shortcut text
         <noPinToStart>: Prevent pinning start screen or show as newly installed on Windows 7 and Windows 8
         <ruleEvaluationLogic>: Rule evaluation logic, by default, rules are evaluated with and logic
         <runAsAdmin>: Run program as administrator
         <runInTerminal>: Whether or not to run the program inside a terminal (Unix only)
         <shouldPackRuleEvaluationLogic>: Packing rules evaluation logic  - Allowed values:
                                          and: And
                                          or: Or
         <url>: URL
         <windowsIcon>: File containing .ico image
         <windowsIconIndex>: Index for the icon within the icon file
         <ruleList>: Contains a set of rules or conditions
         <shouldPackRuleList>: Contains a set of rules or conditions that determines whether the element will be packed into the installer
  -->
<define name="startMenuLinkShortcut">
 <element name="startMenuLinkShortcut">
  <interleave>
    <optional>
      <choice>
        <attribute name="comment"/>
        <element name="comment"><text/></element>
      </choice>
    </optional>
    <optional>
      <choice>
        <attribute name="name"/>
        <element name="name"><text/></element>
      </choice>
    </optional>
    <optional>
      <choice>
        <attribute name="noPinToStart"/>
        <element name="noPinToStart"><text/></element>
      </choice>
    </optional>
    <optional>
      <choice>
        <attribute name="ruleEvaluationLogic"/>
        <element name="ruleEvaluationLogic"><text/></element>
      </choice>
    </optional>
    <optional>
      <choice>
        <attribute name="runAsAdmin"/>
        <element name="runAsAdmin"><text/></element>
      </choice>
    </optional>
    <optional>
      <choice>
        <attribute name="runInTerminal"/>
        <element name="runInTerminal"><text/></element>
      </choice>
    </optional>
    <optional>
      <choice>
        <attribute name="shouldPackRuleEvaluationLogic"/>
        <element name="shouldPackRuleEvaluationLogic"><text/></element>
      </choice>
    </optional>
    <optional>
      <choice>
        <attribute name="url"/>
        <element name="url"><text/></element>
      </choice>
    </optional>
    <optional>
      <choice>
        <attribute name="windowsIcon"/>
        <element name="windowsIcon"><text/></element>
      </choice>
    </optional>
    <optional>
      <choice>
        <attribute name="windowsIconIndex"/>
        <element name="windowsIconIndex"><text/></element>
      </choice>
    </optional>
    <optional>
      <element name="ruleList">
        <zeroOrMore>
          <ref name="rule"/>
        </zeroOrMore>
      </element>
    </optional>
    <optional>
      <element name="shouldPackRuleList">
        <zeroOrMore>
          <ref name="rule"/>
        </zeroOrMore>
      </element>
    </optional>
  </interleave>
 </element>
</define>

  <!--   startMenuFileShortcut - Creates a specific-OS compliant symbolic-link/shortcut
         Specific properties for <startMenuFileShortcut>:

         <comment>: Tooltip text for the shortcut
         <filePath>: Path to file
         <name>: Shortcut text
         <noPinToStart>: Prevent pinning start screen or show as newly installed on Windows 7 and Windows 8
         <ruleEvaluationLogic>: Rule evaluation logic, by default, rules are evaluated with and logic
         <runAsAdmin>: Run program as administrator
         <runInTerminal>: Whether or not to run the program inside a terminal (Unix only)
         <shouldPackRuleEvaluationLogic>: Packing rules evaluation logic  - Allowed values:
                                          and: And
                                          or: Or
         <windowsIcon>: File containing .ico image
         <windowsIconIndex>: Index for the icon within the icon file
         <ruleList>: Contains a set of rules or conditions
         <shouldPackRuleList>: Contains a set of rules or conditions that determines whether the element will be packed into the installer
  -->
<define name="startMenuFileShortcut">
 <element name="startMenuFileShortcut">
  <interleave>
    <optional>
      <choice>
        <attribute name="comment"/>
        <element name="comment"><text/></element>
      </choice>
    </optional>
    <optional>
      <choice>
        <attribute name="filePath"/>
        <element name="filePath"><text/></element>
      </choice>
    </optional>
    <optional>
      <choice>
        <attribute name="name"/>
        <element name="name"><text/></element>
      </choice>
    </optional>
    <optional>
      <choice>
        <attribute name="noPinToStart"/>
        <element name="noPinToStart"><text/></element>
      </choice>
    </optional>
    <optional>
      <choice>
        <attribute name="ruleEvaluationLogic"/>
        <element name="ruleEvaluationLogic"><text/></element>
      </choice>
    </optional>
    <optional>
      <choice>
        <attribute name="runAsAdmin"/>
        <element name="runAsAdmin"><text/></element>
      </choice>
    </optional>
    <optional>
      <choice>
        <attribute name="runInTerminal"/>
        <element name="runInTerminal"><text/></element>
      </choice>
    </optional>
    <optional>
      <choice>
        <attribute name="shouldPackRuleEvaluationLogic"/>
        <element name="shouldPackRuleEvaluationLogic"><text/></element>
      </choice>
    </optional>
    <optional>
      <choice>
        <attribute name="windowsIcon"/>
        <element name="windowsIcon"><text/></element>
      </choice>
    </optional>
    <optional>
      <choice>
        <attribute name="windowsIconIndex"/>
        <element name="windowsIconIndex"><text/></element>
      </choice>
    </optional>
    <optional>
      <element name="ruleList">
        <zeroOrMore>
          <ref name="rule"/>
        </zeroOrMore>
      </element>
    </optional>
    <optional>
      <element name="shouldPackRuleList">
        <zeroOrMore>
          <ref name="rule"/>
        </zeroOrMore>
      </element>
    </optional>
  </interleave>
 </element>
</define>

  <!--   startMenuShortcut - Creates a specific-OS compliant symbolic-link/shortcut
         Specific properties for <startMenuShortcut>:

         <comment>: Tooltip text for the shortcut
         <name>: Shortcut text
         <noPinToStart>: Prevent pinning start screen or show as newly installed on Windows 7 and Windows 8
         <ruleEvaluationLogic>: Rule evaluation logic, by default, rules are evaluated with and logic
         <runAsAdmin>: Run program as administrator
         <runInTerminal>: Whether or not to run the program inside a terminal (Unix only)
         <shouldPackRuleEvaluationLogic>: Packing rules evaluation logic  - Allowed values:
                                          and: And
                                          or: Or
         <windowsExec>: Program to execute
         <windowsExecArgs>: Command line arguments for Program to Execute
         <windowsIcon>: File containing .ico image
         <windowsIconIndex>: Index for the icon within the icon file
         <windowsPath>: Working directory for the program being executed
         <ruleList>: Contains a set of rules or conditions
         <shouldPackRuleList>: Contains a set of rules or conditions that determines whether the element will be packed into the installer
  -->
<define name="startMenuShortcut">
 <element name="startMenuShortcut">
  <interleave>
    <optional>
      <choice>
        <attribute name="comment"/>
        <element name="comment"><text/></element>
      </choice>
    </optional>
    <optional>
      <choice>
        <attribute name="name"/>
        <element name="name"><text/></element>
      </choice>
    </optional>
    <optional>
      <choice>
        <attribute name="noPinToStart"/>
        <element name="noPinToStart"><text/></element>
      </choice>
    </optional>
    <optional>
      <choice>
        <attribute name="ruleEvaluationLogic"/>
        <element name="ruleEvaluationLogic"><text/></element>
      </choice>
    </optional>
    <optional>
      <choice>
        <attribute name="runAsAdmin"/>
        <element name="runAsAdmin"><text/></element>
      </choice>
    </optional>
    <optional>
      <choice>
        <attribute name="runInTerminal"/>
        <element name="runInTerminal"><text/></element>
      </choice>
    </optional>
    <optional>
      <choice>
        <attribute name="shouldPackRuleEvaluationLogic"/>
        <element name="shouldPackRuleEvaluationLogic"><text/></element>
      </choice>
    </optional>
    <optional>
      <choice>
        <attribute name="windowsExec"/>
        <element name="windowsExec"><text/></element>
      </choice>
    </optional>
    <optional>
      <choice>
        <attribute name="windowsExecArgs"/>
        <element name="windowsExecArgs"><text/></element>
      </choice>
    </optional>
    <optional>
      <choice>
        <attribute name="windowsIcon"/>
        <element name="windowsIcon"><text/></element>
      </choice>
    </optional>
    <optional>
      <choice>
        <attribute name="windowsIconIndex"/>
        <element name="windowsIconIndex"><text/></element>
      </choice>
    </optional>
    <optional>
      <choice>
        <attribute name="windowsPath"/>
        <element name="windowsPath"><text/></element>
      </choice>
    </optional>
    <optional>
      <element name="ruleList">
        <zeroOrMore>
          <ref name="rule"/>
        </zeroOrMore>
      </element>
    </optional>
    <optional>
      <element name="shouldPackRuleList">
        <zeroOrMore>
          <ref name="rule"/>
        </zeroOrMore>
      </element>
    </optional>
  </interleave>
 </element>
</define>

  <!--   startMenuFolder - 
         Specific properties for <startMenuFolder>:

         <name>: Folder Name
         <ruleEvaluationLogic>: Rule evaluation logic  - Allowed values:
                                and: And
                                or: Or
         <ruleList>: Rules to decide whether or not the folder will be created
         <startMenuShortcutList>: 
  -->
<define name="startMenuFolder">
 <element name="startMenuFolder">
  <interleave>
    <optional>
      <choice>
        <attribute name="name"/>
        <element name="name"><text/></element>
      </choice>
    </optional>
    <optional>
      <choice>
        <attribute name="ruleEvaluationLogic"/>
        <element name="ruleEvaluationLogic"><text/></element>
      </choice>
    </optional>
    <optional>
      <element name="ruleList">
        <zeroOrMore>
          <ref name="rule"/>
        </zeroOrMore>
      </element>
    </optional>
    <optional>
      <element name="startMenuShortcutList">
        <zeroOrMore>
          <choice>
            <ref name="startMenuLinkShortcut"/>
            <ref name="startMenuFileShortcut"/>
            <ref name="startMenuShortcut"/>
            <ref name="startMenuFolder"/>
            <ref name="quickLaunchLinkShortcut"/>
            <ref name="quickLaunchFileShortcut"/>
            <ref name="quickLaunchShortcut"/>
          </choice>
        </zeroOrMore>
      </element>
    </optional>
  </interleave>
 </element>
</define>

  <!--   component - 
         Specific properties for <component>:

         <name>: Name of the Component
         <description>: Description of the Component
         <canBeEdited>: Whether or not the component can be edited in the component selection page
         <detailedDescription>: A detailed description of the component
         <downloadable>: Whether component should be downloadable
         <requiredSize>: Required disk space in the target system. If 0, then it will automatically be calculated based on the size of the packed files
         <selected>: Whether or not the component is selected
         <shouldPackRuleEvaluationLogic>: Packing rules evaluation logic  - Allowed values:
                                          and: And
                                          or: Or
         <show>: Whether or not the component is visible in the component selection page
         <url>: URL to specific component, overrides project's component URL
         <componentSelectionValidationActionList>: 
         <customLanguageFileList>: 
         <desktopShortcutList>: 
         <folderList>: 
         <initializationActionList>: 
         <installationAbortedActionList>: 
         <onDownloadErrorActionList>: 
         <parameterList>: 
         <platformOptionsList>: 
         <postBuildActionList>: 
         <postInstallationActionList>: 
         <postUninstallationActionList>: 
         <postUninstallerCreationActionList>: 
         <preBuildActionList>: 
         <preInitializationActionList>: 
         <preInstallationActionList>: 
         <preUninstallationActionList>: 
         <quickLaunchShortcutList>: 
         <readyToInstallActionList>: 
         <shouldPackRuleList>: Contains a set of rules or conditions that determines whether the element will be packed into the installer
         <startMenuShortcutList>: 
  -->
<define name="component">
 <element name="component">
  <interleave>
    <optional>
      <choice>
        <attribute name="name"/>
        <element name="name"><text/></element>
      </choice>
    </optional>
    <optional>
      <choice>
        <attribute name="description"/>
        <element name="description"><text/></element>
      </choice>
    </optional>
    <optional>
      <choice>
        <attribute name="canBeEdited"/>
        <element name="canBeEdited"><text/></element>
      </choice>
    </optional>
    <optional>
      <choice>
        <attribute name="detailedDescription"/>
        <element name="detailedDescription"><text/></element>
      </choice>
    </optional>
    <optional>
      <choice>
        <attribute name="downloadable"/>
        <element name="downloadable"><text/></element>
      </choice>
    </optional>
    <optional>
      <choice>
        <attribute name="requiredSize"/>
        <element name="requiredSize"><text/></element>
      </choice>
    </optional>
    <optional>
      <choice>
        <attribute name="selected"/>
        <element name="selected"><text/></element>
      </choice>
    </optional>
    <optional>
      <choice>
        <attribute name="shouldPackRuleEvaluationLogic"/>
        <element name="shouldPackRuleEvaluationLogic"><text/></element>
      </choice>
    </optional>
    <optional>
      <choice>
        <attribute name="show"/>
        <element name="show"><text/></element>
      </choice>
    </optional>
    <optional>
      <choice>
        <attribute name="url"/>
        <element name="url"><text/></element>
      </choice>
    </optional>
    <optional>
      <element name="componentSelectionValidationActionList">
        <zeroOrMore>
          <ref name="action"/>
        </zeroOrMore>
      </element>
    </optional>
    <optional>
      <element name="customLanguageFileList">
        <zeroOrMore>
          <ref name="language"/>
        </zeroOrMore>
      </element>
    </optional>
    <optional>
      <element name="desktopShortcutList">
        <zeroOrMore>
          <choice>
            <ref name="shortcut"/>
            <ref name="linkShortcut"/>
            <ref name="fileShortcut"/>
            <ref name="startMenuShortcut"/>
            <ref name="quickLaunchLinkShortcut"/>
            <ref name="shortcut"/>
            <ref name="startMenuLinkShortcut"/>
            <ref name="quickLaunchFileShortcut"/>
            <ref name="startMenuFileShortcut"/>
            <ref name="quickLaunchShortcut"/>
          </choice>
        </zeroOrMore>
      </element>
    </optional>
    <optional>
      <element name="folderList">
        <zeroOrMore>
          <ref name="folder"/>
        </zeroOrMore>
      </element>
    </optional>
    <optional>
      <element name="initializationActionList">
        <zeroOrMore>
          <ref name="action"/>
        </zeroOrMore>
      </element>
    </optional>
    <optional>
      <element name="installationAbortedActionList">
        <zeroOrMore>
          <ref name="action"/>
        </zeroOrMore>
      </element>
    </optional>
    <optional>
      <element name="onDownloadErrorActionList">
        <zeroOrMore>
          <ref name="action"/>
        </zeroOrMore>
      </element>
    </optional>
    <optional>
      <element name="parameterList">
        <zeroOrMore>
          <ref name="parameter"/>
        </zeroOrMore>
      </element>
    </optional>
    <optional>
      <element name="platformOptionsList">
        <zeroOrMore>
          <ref name="platformOptions"/>
        </zeroOrMore>
      </element>
    </optional>
    <optional>
      <element name="postBuildActionList">
        <zeroOrMore>
          <ref name="action"/>
        </zeroOrMore>
      </element>
    </optional>
    <optional>
      <element name="postInstallationActionList">
        <zeroOrMore>
          <ref name="action"/>
        </zeroOrMore>
      </element>
    </optional>
    <optional>
      <element name="postUninstallationActionList">
        <zeroOrMore>
          <ref name="action"/>
        </zeroOrMore>
      </element>
    </optional>
    <optional>
      <element name="postUninstallerCreationActionList">
        <zeroOrMore>
          <ref name="action"/>
        </zeroOrMore>
      </element>
    </optional>
    <optional>
      <element name="preBuildActionList">
        <zeroOrMore>
          <ref name="action"/>
        </zeroOrMore>
      </element>
    </optional>
    <optional>
      <element name="preInitializationActionList">
        <zeroOrMore>
          <ref name="action"/>
        </zeroOrMore>
      </element>
    </optional>
    <optional>
      <element name="preInstallationActionList">
        <zeroOrMore>
          <ref name="action"/>
        </zeroOrMore>
      </element>
    </optional>
    <optional>
      <element name="preUninstallationActionList">
        <zeroOrMore>
          <ref name="action"/>
        </zeroOrMore>
      </element>
    </optional>
    <optional>
      <element name="quickLaunchShortcutList">
        <zeroOrMore>
          <choice>
            <ref name="quickLaunchLinkShortcut"/>
            <ref name="quickLaunchFileShortcut"/>
            <ref name="quickLaunchShortcut"/>
          </choice>
        </zeroOrMore>
      </element>
    </optional>
    <optional>
      <element name="readyToInstallActionList">
        <zeroOrMore>
          <ref name="action"/>
        </zeroOrMore>
      </element>
    </optional>
    <optional>
      <element name="shouldPackRuleList">
        <zeroOrMore>
          <ref name="rule"/>
        </zeroOrMore>
      </element>
    </optional>
    <optional>
      <element name="startMenuShortcutList">
        <zeroOrMore>
          <choice>
            <ref name="startMenuLinkShortcut"/>
            <ref name="startMenuFileShortcut"/>
            <ref name="startMenuShortcut"/>
            <ref name="startMenuFolder"/>
            <ref name="quickLaunchLinkShortcut"/>
            <ref name="quickLaunchFileShortcut"/>
            <ref name="quickLaunchShortcut"/>
          </choice>
        </zeroOrMore>
      </element>
    </optional>
  </interleave>
 </element>
</define>

  <!--   componentGroup - 
         Specific properties for <componentGroup>:

         <name>: Name of the Component Group
         <description>: Description of the Component Group
         <canBeEdited>: Whether or not the component can be edited in the component selection page
         <detailedDescription>: A detailed description of the component
         <downloadable>: Whether component should be downloadable
         <requiredSize>: Required disk space in the target system. If 0, then it will automatically be calculated based on the size of the packed files
         <selected>: Whether or not the component is selected
         <shouldPackRuleEvaluationLogic>: Packing rules evaluation logic  - Allowed values:
                                          and: And
                                          or: Or
         <show>: Whether or not the component is visible in the component selection page
         <url>: URL to specific component, overrides project's component URL
         <componentList>: 
         <componentSelectionValidationActionList>: 
         <customLanguageFileList>: 
         <desktopShortcutList>: 
         <folderList>: 
         <initializationActionList>: 
         <installationAbortedActionList>: 
         <onDownloadErrorActionList>: 
         <parameterList>: 
         <platformOptionsList>: 
         <postBuildActionList>: 
         <postInstallationActionList>: 
         <postUninstallationActionList>: 
         <postUninstallerCreationActionList>: 
         <preBuildActionList>: 
         <preInitializationActionList>: 
         <preInstallationActionList>: 
         <preUninstallationActionList>: 
         <quickLaunchShortcutList>: 
         <readyToInstallActionList>: 
         <shouldPackRuleList>: Contains a set of rules or conditions that determines whether the element will be packed into the installer
         <startMenuShortcutList>: 
  -->
<define name="componentGroup">
 <element name="componentGroup">
  <interleave>
    <optional>
      <choice>
        <attribute name="name"/>
        <element name="name"><text/></element>
      </choice>
    </optional>
    <optional>
      <choice>
        <attribute name="description"/>
        <element name="description"><text/></element>
      </choice>
    </optional>
    <optional>
      <choice>
        <attribute name="canBeEdited"/>
        <element name="canBeEdited"><text/></element>
      </choice>
    </optional>
    <optional>
      <choice>
        <attribute name="detailedDescription"/>
        <element name="detailedDescription"><text/></element>
      </choice>
    </optional>
    <optional>
      <choice>
        <attribute name="downloadable"/>
        <element name="downloadable"><text/></element>
      </choice>
    </optional>
    <optional>
      <choice>
        <attribute name="requiredSize"/>
        <element name="requiredSize"><text/></element>
      </choice>
    </optional>
    <optional>
      <choice>
        <attribute name="selected"/>
        <element name="selected"><text/></element>
      </choice>
    </optional>
    <optional>
      <choice>
        <attribute name="shouldPackRuleEvaluationLogic"/>
        <element name="shouldPackRuleEvaluationLogic"><text/></element>
      </choice>
    </optional>
    <optional>
      <choice>
        <attribute name="show"/>
        <element name="show"><text/></element>
      </choice>
    </optional>
    <optional>
      <choice>
        <attribute name="url"/>
        <element name="url"><text/></element>
      </choice>
    </optional>
    <optional>
      <element name="componentList">
        <zeroOrMore>
          <choice>
            <ref name="component"/>
            <ref name="componentGroup"/>
            <ref name="include"/>
          </choice>
        </zeroOrMore>
      </element>
    </optional>
    <optional>
      <element name="componentSelectionValidationActionList">
        <zeroOrMore>
          <ref name="action"/>
        </zeroOrMore>
      </element>
    </optional>
    <optional>
      <element name="customLanguageFileList">
        <zeroOrMore>
          <ref name="language"/>
        </zeroOrMore>
      </element>
    </optional>
    <optional>
      <element name="desktopShortcutList">
        <zeroOrMore>
          <choice>
            <ref name="shortcut"/>
            <ref name="linkShortcut"/>
            <ref name="fileShortcut"/>
            <ref name="startMenuShortcut"/>
            <ref name="quickLaunchLinkShortcut"/>
            <ref name="shortcut"/>
            <ref name="startMenuLinkShortcut"/>
            <ref name="quickLaunchFileShortcut"/>
            <ref name="startMenuFileShortcut"/>
            <ref name="quickLaunchShortcut"/>
          </choice>
        </zeroOrMore>
      </element>
    </optional>
    <optional>
      <element name="folderList">
        <zeroOrMore>
          <ref name="folder"/>
        </zeroOrMore>
      </element>
    </optional>
    <optional>
      <element name="initializationActionList">
        <zeroOrMore>
          <ref name="action"/>
        </zeroOrMore>
      </element>
    </optional>
    <optional>
      <element name="installationAbortedActionList">
        <zeroOrMore>
          <ref name="action"/>
        </zeroOrMore>
      </element>
    </optional>
    <optional>
      <element name="onDownloadErrorActionList">
        <zeroOrMore>
          <ref name="action"/>
        </zeroOrMore>
      </element>
    </optional>
    <optional>
      <element name="parameterList">
        <zeroOrMore>
          <ref name="parameter"/>
        </zeroOrMore>
      </element>
    </optional>
    <optional>
      <element name="platformOptionsList">
        <zeroOrMore>
          <ref name="platformOptions"/>
        </zeroOrMore>
      </element>
    </optional>
    <optional>
      <element name="postBuildActionList">
        <zeroOrMore>
          <ref name="action"/>
        </zeroOrMore>
      </element>
    </optional>
    <optional>
      <element name="postInstallationActionList">
        <zeroOrMore>
          <ref name="action"/>
        </zeroOrMore>
      </element>
    </optional>
    <optional>
      <element name="postUninstallationActionList">
        <zeroOrMore>
          <ref name="action"/>
        </zeroOrMore>
      </element>
    </optional>
    <optional>
      <element name="postUninstallerCreationActionList">
        <zeroOrMore>
          <ref name="action"/>
        </zeroOrMore>
      </element>
    </optional>
    <optional>
      <element name="preBuildActionList">
        <zeroOrMore>
          <ref name="action"/>
        </zeroOrMore>
      </element>
    </optional>
    <optional>
      <element name="preInitializationActionList">
        <zeroOrMore>
          <ref name="action"/>
        </zeroOrMore>
      </element>
    </optional>
    <optional>
      <element name="preInstallationActionList">
        <zeroOrMore>
          <ref name="action"/>
        </zeroOrMore>
      </element>
    </optional>
    <optional>
      <element name="preUninstallationActionList">
        <zeroOrMore>
          <ref name="action"/>
        </zeroOrMore>
      </element>
    </optional>
    <optional>
      <element name="quickLaunchShortcutList">
        <zeroOrMore>
          <choice>
            <ref name="quickLaunchLinkShortcut"/>
            <ref name="quickLaunchFileShortcut"/>
            <ref name="quickLaunchShortcut"/>
          </choice>
        </zeroOrMore>
      </element>
    </optional>
    <optional>
      <element name="readyToInstallActionList">
        <zeroOrMore>
          <ref name="action"/>
        </zeroOrMore>
      </element>
    </optional>
    <optional>
      <element name="shouldPackRuleList">
        <zeroOrMore>
          <ref name="rule"/>
        </zeroOrMore>
      </element>
    </optional>
    <optional>
      <element name="startMenuShortcutList">
        <zeroOrMore>
          <choice>
            <ref name="startMenuLinkShortcut"/>
            <ref name="startMenuFileShortcut"/>
            <ref name="startMenuShortcut"/>
            <ref name="startMenuFolder"/>
            <ref name="quickLaunchLinkShortcut"/>
            <ref name="quickLaunchFileShortcut"/>
            <ref name="quickLaunchShortcut"/>
          </choice>
        </zeroOrMore>
      </element>
    </optional>
  </interleave>
 </element>
</define>

  <!--   include - 
         Specific properties for <include>:

         <file>: Component file
  -->
<define name="include">
 <element name="include">
  <interleave>
    <optional>
      <choice>
        <attribute name="file"/>
        <element name="file"><text/></element>
      </choice>
    </optional>
  </interleave>
 </element>
</define>

  <!--   readmeFile - 
         Specific properties for <readmeFile>:

         <code>: Language identifier code, i.e. "en" (for english)  - Allowed values:
                 sq: Albanian - Gjuha shqipe
                 ar: Arabic - العربية
                 es_AR: Argentine Spanish - Español Argentino
                 az: Azerbaijani - Azərbaycan
                 eu: Basque - Euskara
                 pt_BR: Brazilian Portuguese - Português Brasileiro
                 en_GB: British English - British English
                 bg: Bulgarian - български език
                 fr_CA: Canadian French - Français canadien
                 ca: Catalan - Català
                 hr: Croatian - Hrvatski jezik
                 cs: Czech - Čeština
                 da: Danish - Dansk
                 nl: Dutch - Nederlands
                 en: English - English
                 et: Estonian - Eesti keel
                 fi: Finnish - Suomi
                 fr: French - Français
                 de: German - Deutsch
                 el: Greek - ελληνικά
                 he: Hebrew - עברית
                 hu: Hungarian - Magyar
                 id: Indonesian - Bahasa Indonesia
                 it: Italian - Italiano
                 ja: Japanese - 日本語
                 kk: Kazakh - қазақ тілі
                 ko: Korean - 한국어
                 lv: Latvian - Latvijas
                 lt: Lithuanian - lietuvių kalba
                 es_MX: Mexican Spanish - Español de México
                 no: Norwegian - Norsk bokmål
                 fa: Persian - فارسی
                 pl: Polish - Polski
                 pt: Portuguese - Português
                 ro: Romanian - Română
                 ru: Russian - Русский
                 sr: Serbian - српски
                 zh_CN: Simplified Chinese - 简体中文
                 sk: Slovak - Slovenský jazyk
                 sl: Slovenian - Slovenščina
                 es: Spanish - Español
                 sv: Swedish - Svenska
                 th: Thai - ภาษาไทย
                 zh_TW: Traditional Chinese - 繁体中文
                 tr: Turkish - Türkçe
                 tk: Turkmen - Türkmençe
                 va: Valencian - Valencià
                 vi: Vietnamese - Tiếng Việt
                 cy: Welsh - Cymraeg
         <encoding>: Text file encoding, i.e. "utf-8"  - Allowed values:
                     iso8859-1: ISO8859-1
                     iso8859-2: ISO8859-2
                     utf-8: UTF-8
                     cp1251: CP1251
                     cp1252: CP1252
                     ascii: ASCII
                     macRoman: MacRoman
                     unicode: Unicode
         <file>: Path that points to a readme text file.
         <resolveUCN>: Whether to resolve or not UCN escaped characters
  -->
<define name="readmeFile">
 <element name="readmeFile">
  <interleave>
    <optional>
      <choice>
        <attribute name="code"/>
        <element name="code"><text/></element>
      </choice>
    </optional>
    <optional>
      <choice>
        <attribute name="encoding"/>
        <element name="encoding"><text/></element>
      </choice>
    </optional>
    <optional>
      <choice>
        <attribute name="file"/>
        <element name="file"><text/></element>
      </choice>
    </optional>
    <optional>
      <choice>
        <attribute name="resolveUCN"/>
        <element name="resolveUCN"><text/></element>
      </choice>
    </optional>
  </interleave>
 </element>
</define>

  <!--   slideShowImage - 
         Specific properties for <slideShowImage>:

         <path>: 500x222 GIF or PNG logo image to be displayed during installation
         <ruleEvaluationLogic>: Rule evaluation logic  - Allowed values:
                                and: And
                                or: Or
         <ruleList>: Contains a set of rules or conditions
  -->
<define name="slideShowImage">
 <element name="slideShowImage">
  <interleave>
    <optional>
      <choice>
        <attribute name="path"/>
        <element name="path"><text/></element>
      </choice>
    </optional>
    <optional>
      <choice>
        <attribute name="ruleEvaluationLogic"/>
        <element name="ruleEvaluationLogic"><text/></element>
      </choice>
    </optional>
    <optional>
      <element name="ruleList">
        <zeroOrMore>
          <ref name="rule"/>
        </zeroOrMore>
      </element>
    </optional>
  </interleave>
 </element>
</define>

<!-- These properties are common to all commonPlatformOptionss -->
<define name="commonPlatformOptions">
  <interleave>
    <optional>
      <choice>
        <attribute name="shortName"/>
        <element name="shortName"><text/></element>
      </choice>
    </optional>
    <optional>
      <choice>
        <attribute name="fullName"/>
        <element name="fullName"><text/></element>
      </choice>
    </optional>
    <optional>
      <choice>
        <attribute name="version"/>
        <element name="version"><text/></element>
      </choice>
    </optional>
    <optional>
      <choice>
        <attribute name="buildTag"/>
        <element name="buildTag"><text/></element>
      </choice>
    </optional>
    <optional>
      <choice>
        <attribute name="installerFilename"/>
        <element name="installerFilename"><text/></element>
      </choice>
    </optional>
    <optional>
      <choice>
        <attribute name="debugLevel"/>
        <element name="debugLevel"><text/></element>
      </choice>
    </optional>
    <optional>
      <choice>
        <attribute name="askForConfirmationOnUninstall"/>
        <element name="askForConfirmationOnUninstall"><text/></element>
      </choice>
    </optional>
    <optional>
      <choice>
        <attribute name="readmeFile"/>
        <element name="readmeFile"><text/></element>
      </choice>
    </optional>
    <optional>
      <choice>
        <attribute name="licenseFile"/>
        <element name="licenseFile"><text/></element>
      </choice>
    </optional>
    <optional>
      <choice>
        <attribute name="htmlLicenseFile"/>
        <element name="htmlLicenseFile"><text/></element>
      </choice>
    </optional>
    <optional>
      <choice>
        <attribute name="wrapLicenseFileText"/>
        <element name="wrapLicenseFileText"><text/></element>
      </choice>
    </optional>
    <optional>
      <choice>
        <attribute name="leftImage"/>
        <element name="leftImage"><text/></element>
      </choice>
    </optional>
    <optional>
      <choice>
        <attribute name="logoImage"/>
        <element name="logoImage"><text/></element>
      </choice>
    </optional>
    <optional>
      <choice>
        <attribute name="splashImage"/>
        <element name="splashImage"><text/></element>
      </choice>
    </optional>
    <optional>
      <choice>
        <attribute name="wmImage"/>
        <element name="wmImage"><text/></element>
      </choice>
    </optional>
    <optional>
      <choice>
        <attribute name="defaultLanguage"/>
        <element name="defaultLanguage"><text/></element>
      </choice>
    </optional>
    <optional>
      <choice>
        <attribute name="allowLanguageSelection"/>
        <element name="allowLanguageSelection"><text/></element>
      </choice>
    </optional>
    <optional>
      <choice>
        <attribute name="languageSelectionStyle"/>
        <element name="languageSelectionStyle"><text/></element>
      </choice>
    </optional>
    <optional>
      <choice>
        <attribute name="allowComponentSelection"/>
        <element name="allowComponentSelection"><text/></element>
      </choice>
    </optional>
    <optional>
      <choice>
        <attribute name="allowedInstallationModes"/>
        <element name="allowedInstallationModes"><text/></element>
      </choice>
    </optional>
    <optional>
      <choice>
        <attribute name="allowedLanguages"/>
        <element name="allowedLanguages"><text/></element>
      </choice>
    </optional>
    <optional>
      <choice>
        <attribute name="compressPackedFiles"/>
        <element name="compressPackedFiles"><text/></element>
      </choice>
    </optional>
    <optional>
      <choice>
        <attribute name="compressionAlgorithm"/>
        <element name="compressionAlgorithm"><text/></element>
      </choice>
    </optional>
    <optional>
      <choice>
        <attribute name="createOsxBundleDmg"/>
        <element name="createOsxBundleDmg"><text/></element>
      </choice>
    </optional>
    <optional>
      <choice>
        <attribute name="createOsxBundleZip"/>
        <element name="createOsxBundleZip"><text/></element>
      </choice>
    </optional>
    <optional>
      <choice>
        <attribute name="createUninstaller"/>
        <element name="createUninstaller"><text/></element>
      </choice>
    </optional>
    <optional>
      <choice>
        <attribute name="createWindowsARPEntry"/>
        <element name="createWindowsARPEntry"><text/></element>
      </choice>
    </optional>
    <optional>
      <choice>
        <attribute name="debianCustomPackageDirectory"/>
        <element name="debianCustomPackageDirectory"><text/></element>
      </choice>
    </optional>
    <optional>
      <choice>
        <attribute name="defaultInstallationMode"/>
        <element name="defaultInstallationMode"><text/></element>
      </choice>
    </optional>
    <optional>
      <choice>
        <attribute name="defaultUnixDirectoryPermissions"/>
        <element name="defaultUnixDirectoryPermissions"><text/></element>
      </choice>
    </optional>
    <optional>
      <choice>
        <attribute name="defaultUnixFilePermissions"/>
        <element name="defaultUnixFilePermissions"><text/></element>
      </choice>
    </optional>
    <optional>
      <choice>
        <attribute name="defaultUnixGroup"/>
        <element name="defaultUnixGroup"><text/></element>
      </choice>
    </optional>
    <optional>
      <choice>
        <attribute name="defaultUnixOwner"/>
        <element name="defaultUnixOwner"><text/></element>
      </choice>
    </optional>
    <optional>
      <choice>
        <attribute name="deleteLockedFilesOnReboot"/>
        <element name="deleteLockedFilesOnReboot"><text/></element>
      </choice>
    </optional>
    <optional>
      <choice>
        <attribute name="deleteOnExit"/>
        <element name="deleteOnExit"><text/></element>
      </choice>
    </optional>
    <optional>
      <choice>
        <attribute name="description"/>
        <element name="description"><text/></element>
      </choice>
    </optional>
    <optional>
      <choice>
        <attribute name="disableSplashScreen"/>
        <element name="disableSplashScreen"><text/></element>
      </choice>
    </optional>
    <optional>
      <choice>
        <attribute name="enableRollback"/>
        <element name="enableRollback"><text/></element>
      </choice>
    </optional>
    <optional>
      <choice>
        <attribute name="enableTimestamp"/>
        <element name="enableTimestamp"><text/></element>
      </choice>
    </optional>
    <optional>
      <choice>
        <attribute name="height"/>
        <element name="height"><text/></element>
      </choice>
    </optional>
    <optional>
      <choice>
        <attribute name="ignoreInvalidOptions"/>
        <element name="ignoreInvalidOptions"><text/></element>
      </choice>
    </optional>
    <optional>
      <choice>
        <attribute name="installationScope"/>
        <element name="installationScope"><text/></element>
      </choice>
    </optional>
    <optional>
      <choice>
        <attribute name="installationType"/>
        <element name="installationType"><text/></element>
      </choice>
    </optional>
    <optional>
      <choice>
        <attribute name="licenseFileEncoding"/>
        <element name="licenseFileEncoding"><text/></element>
      </choice>
    </optional>
    <optional>
      <choice>
        <attribute name="lzmaUltraBlockSize"/>
        <element name="lzmaUltraBlockSize"><text/></element>
      </choice>
    </optional>
    <optional>
      <choice>
        <attribute name="nativePackageName"/>
        <element name="nativePackageName"><text/></element>
      </choice>
    </optional>
    <optional>
      <choice>
        <attribute name="osxApplicationBundleIcon"/>
        <element name="osxApplicationBundleIcon"><text/></element>
      </choice>
    </optional>
    <optional>
      <choice>
        <attribute name="osxApplicationBundleIdentifier"/>
        <element name="osxApplicationBundleIdentifier"><text/></element>
      </choice>
    </optional>
    <optional>
      <choice>
        <attribute name="osxCodesignExtraArguments"/>
        <element name="osxCodesignExtraArguments"><text/></element>
      </choice>
    </optional>
    <optional>
      <choice>
        <attribute name="osxDmgBackgroundImage"/>
        <element name="osxDmgBackgroundImage"><text/></element>
      </choice>
    </optional>
    <optional>
      <choice>
        <attribute name="osxSigningIdentity"/>
        <element name="osxSigningIdentity"><text/></element>
      </choice>
    </optional>
    <optional>
      <choice>
        <attribute name="osxSigningKeychainFile"/>
        <element name="osxSigningKeychainFile"><text/></element>
      </choice>
    </optional>
    <optional>
      <choice>
        <attribute name="osxSigningPkcs12File"/>
        <element name="osxSigningPkcs12File"><text/></element>
      </choice>
    </optional>
    <optional>
      <choice>
        <attribute name="osxSigningPkcs12Password"/>
        <element name="osxSigningPkcs12Password"><text/></element>
      </choice>
    </optional>
    <optional>
      <choice>
        <attribute name="osxSigningResourceRulesFile"/>
        <element name="osxSigningResourceRulesFile"><text/></element>
      </choice>
    </optional>
    <optional>
      <choice>
        <attribute name="osxSigningTimestampServer"/>
        <element name="osxSigningTimestampServer"><text/></element>
      </choice>
    </optional>
    <optional>
      <choice>
        <attribute name="osxUninstallerApplicationBundleIcon"/>
        <element name="osxUninstallerApplicationBundleIcon"><text/></element>
      </choice>
    </optional>
    <optional>
      <choice>
        <attribute name="outputDirectory"/>
        <element name="outputDirectory"><text/></element>
      </choice>
    </optional>
    <optional>
      <choice>
        <attribute name="overrideGtkButtonText"/>
        <element name="overrideGtkButtonText"><text/></element>
      </choice>
    </optional>
    <optional>
      <choice>
        <attribute name="overwritePolicy"/>
        <element name="overwritePolicy"><text/></element>
      </choice>
    </optional>
    <optional>
      <choice>
        <attribute name="productComments"/>
        <element name="productComments"><text/></element>
      </choice>
    </optional>
    <optional>
      <choice>
        <attribute name="productContact"/>
        <element name="productContact"><text/></element>
      </choice>
    </optional>
    <optional>
      <choice>
        <attribute name="productDisplayIcon"/>
        <element name="productDisplayIcon"><text/></element>
      </choice>
    </optional>
    <optional>
      <choice>
        <attribute name="productDisplayName"/>
        <element name="productDisplayName"><text/></element>
      </choice>
    </optional>
    <optional>
      <choice>
        <attribute name="productUrlHelpLink"/>
        <element name="productUrlHelpLink"><text/></element>
      </choice>
    </optional>
    <optional>
      <choice>
        <attribute name="productUrlInfoAbout"/>
        <element name="productUrlInfoAbout"><text/></element>
      </choice>
    </optional>
    <optional>
      <choice>
        <attribute name="readmeFileEncoding"/>
        <element name="readmeFileEncoding"><text/></element>
      </choice>
    </optional>
    <optional>
      <choice>
        <attribute name="rebootRequired"/>
        <element name="rebootRequired"><text/></element>
      </choice>
    </optional>
    <optional>
      <choice>
        <attribute name="registerWithPackageDatabase"/>
        <element name="registerWithPackageDatabase"><text/></element>
      </choice>
    </optional>
    <optional>
      <choice>
        <attribute name="release"/>
        <element name="release"><text/></element>
      </choice>
    </optional>
    <optional>
      <choice>
        <attribute name="replaceLockedFilesOnReboot"/>
        <element name="replaceLockedFilesOnReboot"><text/></element>
      </choice>
    </optional>
    <optional>
      <choice>
        <attribute name="requireInstallationByRootUser"/>
        <element name="requireInstallationByRootUser"><text/></element>
      </choice>
    </optional>
    <optional>
      <choice>
        <attribute name="rollbackBackupDirectory"/>
        <element name="rollbackBackupDirectory"><text/></element>
      </choice>
    </optional>
    <optional>
      <choice>
        <attribute name="rpmBaseDirectories"/>
        <element name="rpmBaseDirectories"><text/></element>
      </choice>
    </optional>
    <optional>
      <choice>
        <attribute name="rpmSpecFileTemplate"/>
        <element name="rpmSpecFileTemplate"><text/></element>
      </choice>
    </optional>
    <optional>
      <choice>
        <attribute name="saveRelativePaths"/>
        <element name="saveRelativePaths"><text/></element>
      </choice>
    </optional>
    <optional>
      <choice>
        <attribute name="showFileUnpackingProgress"/>
        <element name="showFileUnpackingProgress"><text/></element>
      </choice>
    </optional>
    <optional>
      <choice>
        <attribute name="singleInstanceCheck"/>
        <element name="singleInstanceCheck"><text/></element>
      </choice>
    </optional>
    <optional>
      <choice>
        <attribute name="splashScreenDelay"/>
        <element name="splashScreenDelay"><text/></element>
      </choice>
    </optional>
    <optional>
      <choice>
        <attribute name="startMenuGroupName"/>
        <element name="startMenuGroupName"><text/></element>
      </choice>
    </optional>
    <optional>
      <choice>
        <attribute name="style"/>
        <element name="style"><text/></element>
      </choice>
    </optional>
    <optional>
      <choice>
        <attribute name="summary"/>
        <element name="summary"><text/></element>
      </choice>
    </optional>
    <optional>
      <choice>
        <attribute name="unattendedModeUI"/>
        <element name="unattendedModeUI"><text/></element>
      </choice>
    </optional>
    <optional>
      <choice>
        <attribute name="uninstallerDirectory"/>
        <element name="uninstallerDirectory"><text/></element>
      </choice>
    </optional>
    <optional>
      <choice>
        <attribute name="uninstallerName"/>
        <element name="uninstallerName"><text/></element>
      </choice>
    </optional>
    <optional>
      <choice>
        <attribute name="vendor"/>
        <element name="vendor"><text/></element>
      </choice>
    </optional>
    <optional>
      <choice>
        <attribute name="width"/>
        <element name="width"><text/></element>
      </choice>
    </optional>
    <optional>
      <choice>
        <attribute name="windowsARPRegistryPrefix"/>
        <element name="windowsARPRegistryPrefix"><text/></element>
      </choice>
    </optional>
    <optional>
      <choice>
        <attribute name="windowsExecutableIcon"/>
        <element name="windowsExecutableIcon"><text/></element>
      </choice>
    </optional>
    <optional>
      <choice>
        <attribute name="windowsResourceComments"/>
        <element name="windowsResourceComments"><text/></element>
      </choice>
    </optional>
    <optional>
      <choice>
        <attribute name="windowsResourceCompanyName"/>
        <element name="windowsResourceCompanyName"><text/></element>
      </choice>
    </optional>
    <optional>
      <choice>
        <attribute name="windowsResourceFileDescription"/>
        <element name="windowsResourceFileDescription"><text/></element>
      </choice>
    </optional>
    <optional>
      <choice>
        <attribute name="windowsResourceFileVersion"/>
        <element name="windowsResourceFileVersion"><text/></element>
      </choice>
    </optional>
    <optional>
      <choice>
        <attribute name="windowsResourceInternalName"/>
        <element name="windowsResourceInternalName"><text/></element>
      </choice>
    </optional>
    <optional>
      <choice>
        <attribute name="windowsResourceLegalCopyright"/>
        <element name="windowsResourceLegalCopyright"><text/></element>
      </choice>
    </optional>
    <optional>
      <choice>
        <attribute name="windowsResourceLegalTrademarks"/>
        <element name="windowsResourceLegalTrademarks"><text/></element>
      </choice>
    </optional>
    <optional>
      <choice>
        <attribute name="windowsResourceOriginalFilename"/>
        <element name="windowsResourceOriginalFilename"><text/></element>
      </choice>
    </optional>
    <optional>
      <choice>
        <attribute name="windowsResourceProductName"/>
        <element name="windowsResourceProductName"><text/></element>
      </choice>
    </optional>
    <optional>
      <choice>
        <attribute name="windowsResourceProductVersion"/>
        <element name="windowsResourceProductVersion"><text/></element>
      </choice>
    </optional>
    <optional>
      <choice>
        <attribute name="windowsSigningPkcs12File"/>
        <element name="windowsSigningPkcs12File"><text/></element>
      </choice>
    </optional>
    <optional>
      <choice>
        <attribute name="windowsSigningPkcs12Password"/>
        <element name="windowsSigningPkcs12Password"><text/></element>
      </choice>
    </optional>
    <optional>
      <choice>
        <attribute name="windowsSigningTimestampServer"/>
        <element name="windowsSigningTimestampServer"><text/></element>
      </choice>
    </optional>
    <optional>
      <choice>
        <attribute name="windowsSoftwareRegistryPrefix"/>
        <element name="windowsSoftwareRegistryPrefix"><text/></element>
      </choice>
    </optional>
    <optional>
      <choice>
        <attribute name="windowsUninstallerExecutableIcon"/>
        <element name="windowsUninstallerExecutableIcon"><text/></element>
      </choice>
    </optional>
  </interleave>
</define>

</grammar>
