WarpIN uses package IDs to identify packages in the global database. This is different from the package indices in an archive, which are not stored anywhere, but only used while an archive is open. Package IDs are used all the time internally in WarpIN, for example to check for dependencies on install and deinstall.

Most notably, a package ID must be specified with the PACKAGEID attribute to the PCK element.

A package ID always has this format:

"vendor\application\package\major\minor[\revision]"

In other words, the ID string must consist of exactly five or six substrings, separated by backslash ("\") characters. The substrings are:
  1. vendor: your company or personal name. This is displayed to the user.

  2. application: the name of the application to which this package belongs. Since only packages, not archives, are stored in the global database, this groups applications together. In other words, packages can specify the same application even though they were installed from different physical archives.

    The application is displayed to the user only in database mode.

    As a rule of thumb, if you have several packages in the same archive, they should carry the same application title. Please do not use several application titles if you split your software into several packages... use several package names with the same application instead, or the user will get a more complicated display in the database.

  3. package: package name. This is only stored in the global database to identify the package within the aplication and displayed to the user only in database mode. In install mode, the user sees what is specified with the TITLE attribute to the PCK element instead.

  4. major: the major version number of the package.

  5. minor: the minor version number of the package.

  6. revision: the revision version number of the package. This is optional (if you prefer to use Linux-like version numbering); if the revision is not specified, this is assumed to be 0.
Example (for a "Super Word Processor" application which has two subpackages):
PACKAGEID="SuperSoft\Super Word Processor\Executables\1\0"
PACKAGEID="SuperSoft\Super Word Processor\SpellingDict\1\0"

Notes:
  1. WarpIN package ID's are case-sensitive. SUPERSOFT is not the same as SuperSoft.

  2. If you use ASCII characters above 127 (such as German umlauts), you should set the CODEPAGE attribute to the WARPIN element also to make sure these strings work on all computers with all codepages. Otherwise WarpIN's string comparisons might fail later.

  3. You may use spaces in the substrings.