jupidator.dtd: Elements - Entities - Source | Intro - Index
FRAMES / NO FRAMES

<?xml version='1.0' encoding='UTF-8'?>

<!--
    This is the main element of the Jupidator file.
    @title Remote definition file
    @root updatelist
 -->
<!ELEMENT updatelist (architect*, version+)>
<!--
    @attr application The application name
    @attr baseurl The base URL of the files to be downloaded. This is the reference "parent" URL, where all remote URL addresses are defined.
    @attr icon The image icon of the application. It should be in a format that the JRE will be able to understand (e.g. PNG).
        For example, if baseurl is http://www.myserver.org/files and icon is icons/mascot.png then the icon URL is http://www.myserver.org/files/icons/mascot.png 
    @attr jupidator The minimum required release of Jupidator. To find the current release number, run Jupidator jar from the command line with no parameters. If no version is provided, no implicit Jupidator library version will be required.
 -->
<!ATTLIST updatelist
    application CDATA #REQUIRED
    baseurl CDATA #REQUIRED
    icon CDATA #IMPLIED
    jupidator CDATA #IMPLIED
  >
  
<!--
Jupidator can be used in various architectures. With this element we define which architectures we support. Since Jupidator is developed in Java, where multi-platform programming is encouraged, this is reflected here too. Architectures are marked with a "tag" and this "tag" can be used in more than one actual architecture (for example in Mac OS X under PPC and Intel machines at the same time). See also documentation of <a href="#architect_tag">tag attribute</a>
  -->
<!ELEMENT architect (launcher)>
<!--
    @attr tag The tag which marks this architecture. More than one architectures can share the same tag and are used the same by Jupidator. Some special tags exist: "any" and "all". When "any" is used,it matchs all architectures that do <b>not</b> have a specific arch tag defined. Tag "all" matches all targets, and adds it's child elements to the currently most appropriate arch target. So, the final elements are a combination of (a) those either specifically mentioned with "architect" compatible tags <b>or</b> the "any" tag <b>and</b> (b) elements defined by "all" tags.
    @attr os The operating system of this machine. This variable matches current operating system if System property "os.name" starts with this value. This attribute is not case sensitive.
    @attr arch The machine architecture. This variable matches current operating system if System property "os.arch" starts with this value. This attribute is not case sensitive.
-->
<!ATTLIST architect
    tag CDATA #REQUIRED
    os CDATA #REQUIRED
    arch CDATA #REQUIRED
  >

<!--
    This element is mandatory and defines how the application should be launched after the update procedure. Launching the updater is typically the same across updates, but differs in every platform.
-->
<!ELEMENT launcher (argument*)>
<!--
    @attr exec The executable filename. If arguments are required, these are defined by the nested argument element. Have in mind that variables, like ${JAVABIN}, can be used.
-->
<!ATTLIST launcher
    exec CDATA #REQUIRED
  >
  
<!--
    Command line argument for the launcher. If no arguments are required, this element can be ommited. In the XML file there are as many argument elements, as the required arguments. Have in mind that variables, like ${APPHOME} can be used.
-->
<!ELEMENT argument EMPTY>
<!--
    @attr value The value of the argument
-->
<!ATTLIST argument
    value CDATA #REQUIRED
  >

<!--
    Every new version of the application has one version element. Here the files which needed to be updated are defined. If this version is written only for display reasons (i.e. to produce the changelog of versions prior of Jupidator), no arch elements are required.
-->
<!ELEMENT version (description, (arch)*)>
<!--
    @attr release <p>The integer value of the current release. This number is checked against the "release" value of the runtime environment.</p>
        <p>Remember that release files are incrementally defined. <i>All</i> versions with release number greater than the one given to the runtime environment, will be taken into account -  <i>not</i> only the last one!</p>
    @attr version Human readable display of the current release version
-->
<!ATTLIST version
    release CDATA #REQUIRED
    version CDATA #REQUIRED
  >

<!--
    Free text description of this version. HTML tags are allowed, if escaped correctly to be included inside the XML document.
-->
<!ELEMENT description (#PCDATA)>

<!--
    Architecture dependent actions. If this is a matching architecture, a set of actions will be performed. If more than one architecture has changes for this release, then all architectures should be defined. If no changes exist for one arhcitecture, then this information will be skipped.
-->
<!ELEMENT arch (file|rm|chmod|chown|exec|kill|wait)*>
<!--
    @attr name The name of this architecture, as defined by the <a href="#architect_tag">tag</a> attribute of the <a href="#architect">architect</a> element.
    @attr gui The installer will present a graphical window spinning for this version onwards. If this attribute is not present, no GUI is requested.
-->
<!ATTLIST arch
    name CDATA #REQUIRED
    gui CDATA "false"
  >

<!--
    Download a file from the remote location, relative to base URL. The latest file from every version will be taken into account.
-->
<!ELEMENT file (sha1|sha2|md5)*>
<!--
    @attr sourcedir The directory in the source location where this file exists. This is appended to the base URL.
    @attr destdir The destination directory of the file. This directory is <i>not</i> relative to anything. If you want to refer to other locations, like for example the application home, you <i>need</i> to specifically define this location with variables, such as ${APPHOME}.
    @attr name The file name. The name of the file is the same in both the source URL and in the destination directory. If this file is <a href="#file_compress">compressed</a> then the appropriate compression extension is added to the source file name. The compression extension should <i>never</i> be present in this tag (even for package files). If this is a zip or tar file with at least two content files (i.e. is a "package" file), then the value of this attribute is used only to locate the filename on the server and will not be inherited to the destination location. You can use directories inside the zip file to deploy to a deeper level directory.
    @attr size The size of the source file. It will be used to check if the downloaded file has correct size.
    @attr compress <p>The source file is compressed in the server. The following methods can be used: "gzip" "bzip2" "zip" "tar" "tar.gz" "tar.bz2". This extension will be added to the source URL.</p><p>If a file is marked as one of "zip", "tar", "tar.gz" or "tar.bz2", then this is a package file. If only one file is found inside the package file, then this file is treated as a "stream", like the "gzip" and "bzip2" containers, and the filename stored inside the zip file will be ignored. If more than one file is found inside the package file, then all the file contents of this  package file will be unpacked at the <a href="#file_destdir">desired location</a>. This is a convenience method to unpack a bunch of files simultaneously, as a package, without the need to define these files one by one.</p><p>An actual package file which is not marked "compress"-ed with this attribute, is handled like any other regular file, and no decompression is performed.</p>
    @attr ifexists Download and install this file <i>only</i> if this file already exists. If it does not, then this file is ignored.
    @attr forceinstall This attribute is disabled (false) by default. With this default behaviour, if the selected runtime application is under an operating system that takes care of the update process by itself, this file is ignored. If it is enabled, then this file is used no matter what the operating system does. Enable this feature if you want to upgrade parts of the application that are not taken care by the operating system.
-->
<!ATTLIST file
    sourcedir CDATA #REQUIRED
    destdir CDATA #REQUIRED
    name CDATA #REQUIRED
    size CDATA #REQUIRED
    compress CDATA "none"
    ifexists CDATA "false"
    forceinstall CDATA "false"
  >

<!--
   SHA1 checksum of the specified file
-->
<!ELEMENT sha1 EMPTY>
<!--
    @attr value Value of SHA1 checksum in HEX
-->
<!ATTLIST sha1
    value CDATA #REQUIRED
  >

<!--
   SHA2 checksum of the specified file. Defaults to to SHA-256, but the developer can use other methods
-->
<!ELEMENT sha2 EMPTY>
<!--
    @attr type The type of the SHA2 algorithm. Defaults to 256. Other valid values are 384 and 512
    @attr value Value of SHA2 checksum in HEX
-->
<!ATTLIST sha2
    type CDATA "256"
    value CDATA #REQUIRED
  >

<!--
   MD5 checksum of the specified file
-->
<!ELEMENT md5 EMPTY>
<!--
    @attr value Value of MD5 checksum in HEX
-->
<!ATTLIST md5
    value CDATA #REQUIRED
  >


<!--
    Remove a local file.
-->
<!ELEMENT rm EMPTY>
<!--
    @attr file The local file name. The full path name is expected.
    @attr forceinstall If enabled, the owner of this file are changed in any case. For discussion about this parameter, see <a href="#file_forceinstall">forceinstall</a> under the <a href="#file">file</a> element.
-->
<!ATTLIST rm
    file CDATA #REQUIRED
    forceinstall CDATA "false"
  >

<!--
    Change permissions of a local file. This element is supported only in Unix-like operating systems.
-->
<!ELEMENT chmod EMPTY>
<!--
    @attr file The local file name. The full path name is expected.
    @attr attr The new attributes of this file. The syntax is the same with <command>chmod</command> command.
    @attr recursive If this is a directory, change attributes of all files recursively.
    @attr forceinstall If enabled, the owner of this file are changed in any case. For discussion about this parameter, see <a href="#file_forceinstall">forceinstall</a> under the <a href="#file">file</a> element.
-->
<!ATTLIST chmod
    file CDATA #REQUIRED
    attr CDATA #REQUIRED
    recursive CDATA "false"
    forceinstall CDATA "false"
  >

<!--
    Change owner of a local file. This element is supported only in Unix-like operating systems.
-->
<!ELEMENT chown EMPTY>
<!--
    @attr file The local file name. The full path name is expected.
    @attr attr The new owner of this file. The syntax is the same with <command>chown</command> command.
    @attr recursive If this is a directory, change owner of all files recursively.
    @attr forceinstall If enabled, the owner of this file are changed in any case. For discussion about this parameter, see <a href="#file_forceinstall">forceinstall</a> under the <a href="#file">file</a> element.
-->
<!ATTLIST chown
    file CDATA #REQUIRED
    attr CDATA #REQUIRED
    recursive CDATA "false"
    forceinstall CDATA "false"
  >

<!--
    Execute a native command
-->
<!ELEMENT exec (argument*)>
<!--
    @attr executable The filename of the executable
    @attr time When this command will be executed. Should be "BEFORE" "AFTER" or "MID". By default "MID" parameter is used. This property is not case sensitive.
    @attr input The input of this command, if needed by the application
    @attr forceinstall If enabled, the command is executed in any case. For discussion about this parameter, see <a href="#file_forceinstall">forceinstall</a> under the <a href="#file">file</a> element.
-->
<!ATTLIST exec
    executable CDATA #REQUIRED
    time CDATA "AFTER"
    input CDATA ""
    forceinstall CDATA "false"
  >

<!--
    Kill a specified task. This element works in both Windows and Unix-like systems
-->
<!ELEMENT kill EMPTY>
<!--
    @attr process The name of the process. This could be a regular expression which will match the running process. When applied, could match more than one running process.
    @attr signal The signal to send. This is platform specific information. In Unix-like is the "TERM" signal. There is no need to preceed the signal name/number with a "-" sybol.
    @attr forceinstall If enabled, the application is killed in any case. For discussion about this parameter, see <a href="#file_forceinstall">forceinstall</a> under the <a href="#file">file</a> element.
-->
<!ATTLIST kill
    process CDATA #REQUIRED
    signal CDATA "TERM"
    forceinstall CDATA "false"
  >

<!--
    This element is used in the last stage of the installation, to pause the installer for the specified number of milliseconds
-->
<!ELEMENT wait EMPTY>
<!--
    @attr msecs The number of milliseconds the installer should wait
    @attr time When this command will be executed. Should be "BEFORE" "AFTER" or "MID". By default "BEFORE" parameter is used. This property is not case sensitive.
    @attr forceinstall If enabled, waiting is performed in any case (and installation information is displayed). For discussion about this parameter, see <a href="#file_forceinstall">forceinstall</a> under the <a href="#file">file</a> element.
-->
<!ATTLIST wait
    msecs CDATA "1000"
    time CDATA "BEFORE"
    forceinstall CDATA "false"
  >