QPM:PackageManifest

unreleased=”true” (filters out this package from Package Installer)

QPM:PackageDescription

The first block describes the package and it origins. If the manifest is separated from the actual package, this information may be used to find the complete package.

QPM:PackageType: <enum: Application | Library | Development | Documentation | Source code | Other>

Defines the type of package.

Packager uses this tag to determine when invalid files are in the basedir to create this particular type of package.

QPM:PackageName: <string>

The actual name of the package as it would be found in an archive repository.

Example: tast-dev-1.1-x86-qnx

QPM:PackageSize: <#.#M | #.#K | # | #.#Mb | #.#Kb>

The size of the compressed package in megabytes, kilobytes, or bytes. For example, "1.1 M", "1.5Mb", 1.0 Mb", "1024 Kb", "2096K" or even "12896662" (which assumes bytes).

The packager automatically determines the compressed package size and inserts this value into the manifest, as a number of bytes.

QPM:PackageReleaseNumber: <integer>

If the package has been re-released, the release number will have been increased. A package may be re-released when it was found to be corrupted, found to be infected with a virus, or something else (unrelated to the product content) needed changing. Changing the package manifest should result in an increase to the package release number.

This value must be independent of the version number.

When originally releasing a package, this value should be 1.

QPM:PackageReleaseNotes: <text>

When a package is re-released, the maintainer has the option of adding a package release note to describe why the package was changed. Common changes may include “Package was corrupted”, “Package was missing files”, or “Manifest has been updated”. These notes will be presented to a user when they are using an auto-update utility.

QPM:PackageReleaseUrgency: <enum: Low | Medium | High>

A release urgency description allows package browsers to alert users about package updates, to indicate the severity of the re-release.

A low urgency will not alert the user; packages re-released due to manifest changes are a low priority. Low urgency is warranted with changes to descriptions, web pages, and other non-critical manifest changes.

A medium urgency should show the user the package release note and let the user decide if they should reinstall the package. Medium urgency would be indicated due to bugs, missing support files or corrupted files.

A high-priority package release indicates that the user should immediately update to this package; packages released with dangerous errors (such as a virus) should be released with a high urgency.

QPM:PackageReleaseDate: <YYYY/MM/DD>

The date this package is to be released for use.

The Package Installer will not show or install any packages which are to be released in the future, so setting this date forward can ensure that the package will not be installed until the date specified.

The packager uses today’s date as the default date, unless it is overridden by the user.

QPM:PackageRepository: <URL>

This is the URL where the latest information about the package can be found. A home repository does not necessarily have to have the package, just the most up-to-date manifest.  Alternate repositories are mirror locations where this package can be found. Although packages may migrate without their manifests being updated, these alternate repositories represent where the package maintainer regularly places package (and product) updates.

QPM:PackageSignature: <text>

A signed signature may be used to validate the package content.

QPM:PackageSignatureType: <enum: MD5Sum | PGP | SHASum>

The type of validation mechanism to use with the given signature

QPM:PackageModel: <enum: none | dev |  src | so name (ie: libcurl.so.1.0.0)>

Shows the type of package, either development or source, which is reflected in the package filename. None is the default, if this tag is not present.

QPM:PackageDefaultState: <enum: normal | hidden>

If it’s hidden, then the package will not show up in package installer, by default, unless there’s an option to show all packages.

This is used for ‘so’ packages which are simply installed/uninstalled by the contains/requires/provides library tags.

QPM:BundleContains:

This tag is ignored by Package Installer.

QPM:BundleChild: <PackageName or ProductIdentifier> <multiple entries>

One entry for each package which is to be contained in this bundle.

This tag is questionable—currently under development.

QPM:BundleShow <yes>

If this tag is present, the package will be shown in its regular topic hierarchy, even if the package is bundled.

QPM:BundleStrict <yes>

If the package is installed as a result of a dependency coming from another package, this tag forces the package’s entire bundle to be installed, not just the package itself.

QPM:FileVersion: <float (2 decimal places) version number>

The packager inserts this tag to indicate what version of  package installer is required in order to install to this package.

If a package has a <QPM:FileVersion> higher than the VERSION (currently 1.01) of the Package Installer, the package will not be installed until an updated version of package installer is installed.

QPM:ProductDescription

The second block provides a high-level description of the product contained within the package.

QPM:ProductName: <string>

The product name, like “Voyager Web Browser”, “PhotoShop”, or “libChuck”. This is to be a fully readable name that will appear during installation and maintenance. The product name may be any number of letters and characters, but should not indicate a version number.

A package will not be installed if this tag is not found.

QPM:ProductSize: <#.#M | #.#K | # | #.#Mb | #.#Kb>

The size of the product after it has been installed (and expanded) in megabytes, kilobytes, or bytes. For example, "1.1 M", "1.5Mb", 1.0 Mb", "1024 Kb", "2096K" or even "12896662" (which assumes bytes).

If the package needs additional disk space for cache or temporary files, this may be described in the free disk space section of the hardware requirements block.

The packager automatically determines the uncompressed package size and inserts this value into the manifest, as a number of bytes.

QPM:ProductIdentifier: <1-13 character identifier; no whitespace>

The product identifier is a short name used for dependency identification, for example: vger, emacs. This differs from the product name in that it is not necessarily a human-readable string. If a product is a replacement product (newer version), the two products would have the same product identifiers.

The identifier must not include any whitespace characters and must not exceed 13 characters in length (the packager automatically ensures these requirements are met).

Other developers may use this identifier to define dependencies with your product.

If a release is incompatible with a previous release, the product identifier must be different than the old release’s identifier.

The product identifier ensures that your software will not be installed over any other piece of software.

A package will not be installed if this tag is not found.

QPM:ProductHomeURL: <URL>

The product home URL, if provided, will let package browsers launch a full web browser for the given product. Here, they would expect to find further details regarding the product, or other supplemental information.

The Package Installer does not use this tag.

Example: www.qnx.com/photon/ped.html

QPM:ProductEmail: <email address>

If you have an email for feedback about your product, various package utilities can extract this and make it available to users.

Example: myemail@home.com

QPM:VendorName: <string>

Because you are building this product’s package, you represent the maintainer, vendor, or distributor of this product. Your name, the name of your company or the organization you represent should be available to the user.

This name can differ from the software author.

This should be a text string showing the full legal vendor name.

QPM:VendorInstallName: <1-6 character identifier; no whitespace>

Each vendor must have a unique identifier—a word or set of characters without whitespace. Other developers can use this identifier to distinguish your distribution of a particular product.

Your vendor identifier also helps to ensure that your software will not be installed over any other vendor’s software.

For example: QNX may freely distribute a version of a GNU software package. QNX does not want to obscure the ownership of GNU software. Thus QNX can declare themselves the vendor but leave the author untouched. This allows people to clearly understand that a particular package is being released by QNX, but has not been written by QNX.

The packager ensures that the vendor install identifier does not exceed 6 characters, and that it contains no whitespace.

Example: qnx

QPM:VendorURL: <URL>

If you, your company, or organization has a web site, graphical package installers can redirect users to your website for more information about you as a vendor, and perhaps other products that you distribute.

Example: www.qnx.com/company/index.html

QPM:VendorEmbedURL: <URL>

The QNX Package Installer allows you to embed a web page to be displayed when your package is selected by a user, where they have the opportunity to see more information about you, your company, or organization.

QPM:VendorEmail: <email address>

If you have an email for feedback about you, your company, or organization, various package utilities can extract this and make it available to users.

Example: support@home.com

QPM:AuthorName: <string>

The name of the person, company, or organization that authored this product may be different from the vendor or distributor of the package.

This should be a text string showing the author’s full legal name, either a person or a business.

Example: Joe Blow

QPM:AuthorURL: <URL>

If the author has a web site, graphical package installers can redirect users to that website for more information about the author.

Example: www.home.com

QPM:AuthorEmbedURL: <URL>

The QNX Package Installer allows you to embed a web page to be displayed when your package is selected by a user, where they have the opportunity to see more information about the author.

QPM:AuthorEmail: <email address>

If there is an email for feedback relevant to the author, various package utilities can extract this and make it available to users.

Example: support@home.com

QPM:ProductIconSmall: <URL>

A 16x16 image used in the tree view for the product.

If the icon is part of the package itself, you can use the repository URL identifier rep:// to reference the file.

Example: rep://usr/share/ped/icon_small.gif

QPM:ProductIconLarge: <URL>

An arbitrary-sized image (preferably within 48x48) used to represent the product.

If the icon is part of the package itself, you can use the repository URL identifier rep:// to reference the file.

Example: rep://usr/share/ped/icon_large.gif

QPM:ProductDescriptionShort: <string>

A single-line description of the product (preferably less than 80 characters).

A short text description of the product (assume that the name and version information is already displayed). This will likely be the first description the user will see. (Bear in mind that there is a separate place for more in-depth annotations of version changes).

Example: A compact text editor with full text formatting functionality, multiple buffers, and C/C++ developer’s features.

QPM:ProductDescriptionLong: <text>

A full text description of the product (assume that the name and version information is already displayed). This will likely be the first description the user will see; adding a brief feature/overview list might be useful. (Bear in mind that there is a separate place for more in-depth annotations of version changes).

QPM:ProductDescriptionEmbedURL: <URL>

An HTML description of the product. Assume that the name and version information is already displayed. This will likely be the first description the user will see; adding a brief feature/overview list might be useful. (Bear in mind that there is a place for a more in depth annotation of version changes)

This tag is only used if the repository being accessed is on a local disk (fast).

This tag is unused (commented-out of all packages) at the time of RTP-PatchA.

QPM:ProductDescriptionURL: <URL>

An HTML description of the product. Assume that the name and version information is already displayed. This will likely be the first description the user will see; adding a brief feature/overview list might be useful. (Bear in mind that there is a place for a more in depth annotation of version changes).

This tag is only used if the repository is being accessed using ftp or http.

This tag is unused (commented-out of all packages) at the time of RTP-PatchA.

QPM:InstallPath: <relative path>

Shows the directory to follow to find this manifest file, with respect to the root repository.

A package will not be installed if this tag is not found.

QPM:ReleaseDescription

The third standard block defines the version of the product and the importance of the changes that have occurred since the previous release. Auto-updating software may use some of these fields to help the user to track software upgrades.

QPM:ReleaseCopyright: <string>

The type of copyright or distribution license that this product is being released under.

Examples: GNU Public License, Mozilla Public License, Commercial License, Shareware, and Free.

QPM:ReleaseCopyrightURL: <text>

A reference to the actual license, allowing the user to view the terms of usage before downloading the software.

This tag is not used at this time. See QPM:LicenseUrl.

QPM:ReleaseDate: <YYYY/MM/DD>

The date the software was released, not the date the package was built.

QPM:ReleaseVersion: <##.##[a-z]>

The version of the product. The format for versions is presently assumed to be an increasing number separating minor changes by a period, for example: '5.0', '3', '13.22', '.92', '1.1a'

If this tag is not found, 1.0 will be used.

QPM:RelaseUrgency: <enum: Low | Medium | High>

A release importance description allows package browsers to alert users about product updates.

A low urgency should not alert the user; product patches correcting documentation or aesthetics may be a low priority.

A medium urgency should be used in circumstances where the organization that produces the product recommends the upgrade, at the user's discretion.

A highly urgent package release means that the user should immediately update to this version to fix severe bugs.

QPM:ReleaseStability: <enum: Stable | Experimental | Beta>

Stability of the product overall.

QPM:ReleaseNoteMajor: <text>

When a new version of the product is released, the product version notes tell the user what changes have occurred to warrant the upgrade. These notes should be written from the perspective of an advisory notice. Users will likely see these notes if an auto-updater identifies a version update.

QPM:ReleaseNoteMinor: <text>

A minor release note, which will also be shown with the product version notes. It should be written as an addendum, describing the upgrade changes. A release is considered minor if there is no change to the first number within a version number: 1.0 - 1.0a or 1.0 - 1.9.

QPM:ReleaseBuild: <integer>

The build number for this package. Build numbers should always start with 1 being the initial build for a new version.

QPM:ExcludeCountries

QPM:Country <string> <multiple entries>

Countries which will not permit this package to be installed.

QPM:RelationshipDescription

This block defines the relationship that this package has to other packages.

QPM:RelationshipType: <enum: core | component | upgrade>

This defines the type of product release.

core: this package contains the base list of files common to all processors, or there are no processor-specific files (in which case this is the only package required).

component: the package is a component of another package and the QPM:ComponentParent tag should be defined.

upgrade: the package is an upgraded version of another package and the QPM:UpgradeParent tag should be defined.

QPM:CoreSibling: <1-13 character product identifier; no whitespace>

The name of a product to which this package should be associated. This will cause this package to appear in the same topic hierarchies as the specified sibling. This is useful if you are distributing similar products and want to associate one package with another.

QPM:ComponentType:    <enum: Required | Recommended | Optional>

If this is a component, the install type determines if this package must be downloaded as well.

If this is a core package, the install type refers to its presence as an operating system component.

For example, the standard libraries should never be uninstalled and would be marked as required. The package manager would alert the user to prevent them from inadvertently uninstalling any required packages.

QPM:ComponentTypeNotes: <text>

The reason for the install type. This will be displayed when the user tries to go against a recommendation.

In general, the package installer will have a verbosity level to configure exactly when and how many of these notes should be displayed.

QPM:ComponentParent: <1-13 character product identifier; no whitespace>

This defines a product if this package is a component. This will cause it to be logically grouped with the core package. Uninstallation of the core package will remove the this package; this package cannot be installed until the core package is installed.

QPM:ComponentAuthenticationKey: <public key string>

This is a public key used to verify that a child package signature is legitimate. This is only defined for core packages. If this parent package has components and this key defined, no packages will appear as a component unless the component signature is verified correctly.

QPM:ComponentSignature: <signature>

This is the encrypted checksum of this component, generated by a private key, corresponding to a parent public key. These keys are only valid if we enforce their use by not allowing installs that shadow previous installs.

QPM:ComponentFilter:

Used to specify under what circumstances this package will be considered a component of another package.

QPM:FilterType: <Numeric | StringExpression | Date >
Each filter is qualified with a filtering type. Numeric expressions use <, <=, =, , =, !=, |, &, and (). String expression uses regular expressions to filter the string. Date uses the numeric expression operators but parses the tag's field value to make sure it's in the YYYYMMDD format.
Note that there is no way to check the non-existence of a particular tag. String expressions with * will match as long as the tag exists, but there is no way to test the negative of this condition.
- property: <regular pattern>

Each tag in the filter block is checked (AND logic only) against the given tag (without the QPM: portion) throughout the entire manifest. For example, <CPU>x86</CPU> will check for an x86 distribution, <ReleaseDate> "00001222" </ReleaseDate> followed by: <Libraries> libso.1.0.5 </Libraries> will require that a particular package has been installed

QPM:UpgradeParent: <1-13 character product identifier; no whitespace>

If a product is a release type of upgrade, the upgrade parent defines what package it is upgrading. Upgrade packages require that the upgrade parent is installed first.

If the product is a release type of core but it supplies an upgrade parent, this means that the package can be installed without the previous version being installed.

For example, a package maintainer may want to release an upgrade from version 1.0 to version 2.0 which requires 1.0 be installed first; the maintainer may also want to distribute a complete 2.0 version which does not require 1.0. Auto updating software will check the product upgrade parent tag for each package, looking for this corresponding product identifier. It may then offer to uninstall the previous version and install a new core 2.0 version.

QPM:UpgradeFromVersion: <##.##>

If a product is a release type of upgrade, the upgrade version defines what version of package it is upgrading.

QPM:ContentDescription

This block provides fields for searching and filtering packages according to content.

QPM:ContentKeyword: <string list>

A comma-delimited keyword list which a package browser can use to index your package.

QPM:ContentTopic: <hierarchy list> <multiple entries>

A slash-delimited (/) hierarchical description which a package browser can use to place your package in a topic hierarchy. QNX's package system has recommended topic hierarchies but the hierarchy itself is defined by the topic entries of all the packages within a repository.

Packages that only want to be associated with another package need not supply a topic, they need only define a sibling or a component package.

If this tag is not found, “  “ will be used by default.

QPM:ContentLanguage: <two letters>

This is a comma-delimited list of two-letter language codes, representing the this product's language compatibility.

QPM:Contains: <mime-string>  <multiple entries>

A comma-delimited string of single word identifiers, used to identify the generic type of package.

ie: font, compiler, os

QPM:Provides: <string> <multiple entries>

Used in dependencies/relationships to specify what a particular package provides.

QPM:ContainsLibrary: <library name> <multiple entries>

Shows what libraries are made available when this package is installed.

Any .so.* library will go into a base package (with a contains tag), and into a newly created package created solely to give a provides tag. Its product identifier will indicate that the package is for the explicit library indicated.

The package installer will need new rules: If a package requires a library, then it will ensure that the package which ‘contains’ it is available, and it will download a package which ‘provides’ it, but keeps that package disabled until the ‘contains’ package is disabled or upgraded.

If a package which ‘contains’ is disabled or upgraded, then the corresponding ‘provides’ package must be found for each package that ‘requires’ the libraries which it contained. If they cannot be found, then those packages will also be disabled and the user must be notified.

Similarly, when a ‘provides’ package is disabled or upgraded, any package which ‘requires’ its provided libraries must also be disabled.

QPM:RequiresLibrary: <library name> <multiple entries>

Indicates the libraries which are required for this package to work properly.

If no package on the local system has a contains for this library, and no local package has a provides for this library, then a search will commence, looking for any package which has the provides tag (only) because it will be a small package to download, and it will install alongside other (newer) versions.

QPM:ProvidesLibrary: <library name> <multiple entries>

Libraries which are provided in this package, for which the package is intended only.

QPM:Processor: <1-6 character identifier; no whitespace>

This is used to describe the architecture on which the binary content will execute.

QPM:TargetProcessor: <1-6 character identifier; no whitespace>

This is used to describe the architecture for which the binary content was built.

QPM:DisplayEnvironment: <enum: X11R6 | Photon | Console | None> <multiple entries>

Intended environment under which the package is to be used.

QPM:TargetAudience <enum: Developer | Administrator | User | Other> <multiple entries>

Intended audience for which this package was created.

QPM:TopicBox <yes>

<QPM:TopicBox>yes</QPM:TopicBox>

forces  a topic box to appear on the parent package.

QPM:TreeDisplayIndex <integer>

      Forces packages under the same topic to appear in the numerical position specified.

QPM:ReplacesProduct <1-13 character product identifier; no whitespace> <multiple entries>

Marks this package as being a new replacement to the specified product identifier. This package will satisfy any package which is dependent on such a product.

The vendor identifier must match between the old package and this package for the replacement to be valid, with the following exceptions:

You can add an attribute: vendor=”myco” so that this package looks as if it had a vendor identifier of “myco”.

If you put vendor=”any”, then the vendor identifier will always be considered a match.

QPM:LicenseUrl: <URL>

Specifies the URL of the license text to use for this package.

Commonly, this will point to:  rep://license.txt

QPM:Bundle <Stagnant>

Bundles are collections of related packages which do not necessarily have dependencies between them. By listing packages within a bundle, a number of packages can be added or removed at the same time.

This tag is stagnant, since the new method is to have a bundle which lists packages, instead of having packages reference a particular bundle.

QPM:BundleParent <parent identifier> <Stagnant>

Links backwards to the parent bundle.

QPM:QNXLicenseDescription

QNX has a licensing mechanism to build certificate information for secure installations. The following fields are used internally by QNX to assemble the information necessary to lookup a license key and track products you want to purchase.

QPM:QNXProductCode: <number>

This is a number used to track billing/cost of a particular product.

QPM:QNXLicenseClass: <word>

This is a short string to describe the product. This string paired with a version number is used to form a product id.

Warning: Adding this tag to your package without properly encrypting the package will make the package unusable.

QPM:ProductInstallationDependencies

The next block of information describes what is necessary to install this package.

HardwareRequirement

MinimumRAM: <memory>

A core package may specify a minimum memory requirement in megabytes (#.#Mb or #.#M) or kilobytes (####Kb or ####K). If a component defines a minimum memory requirement, this value is added to the core requirement.

RecommendedRAM: <memory>

The amount of ram this software would prefer to work optimally.

MinimumFreeStorage: <memory>

The amount of storage space this software may use up may be specified; this will help the user make sure they can use the package before downloading and installing it.

RecommendedFreeStorage: <memory>

The amount of storage space this software would prefer, to work optimally.

MinimumResolution: <resolution>

The minimum resolution assumed by this software. The default value is "800x600". A portrait display would have a reversed resolution of "600x800".

RecommendedColorDepth: <enum: 8-bit | 16-bit | 24-bit | 32-bit>

The recommended colour depth for the software, the default is 16-bit. There is no actual minimum colour depth; Photon will display the software the best it can with the given display.

AudioSupport: <enum: NotRequired | Required | Recommended>

The necessity of general audio support; this may be expanded to specific audio features.

PhotonDistribution: <distribution name>

In the event that third parties distribute software with a globally unique Photon distribution, a name may be specified and used as a filter for custom package managers.

QPM:Dependency <multiple entries>

A package may have a number of dependencies limiting its installation by enforcing the existence of another package or type of package. A component product is automatically assumed to have a product dependency of the parent product identifier (specified by the ComponentParent). All other dependencies (include which version of parent product) must be explicitly defined.

QPM:DependencyType: <enum: Install | Uninstall| RecommendInstall | RecommendUninstall  | Activate | Deactivate>
Install: This package may require that another product is completely installed before this package is installed. A complete install involves that the product's package has been added to the package repository manifest and has had the proper scripts called in response to the installation.
Uninstall: This package conflicts with another package and requires that it be uninstalled before continuing.
Recommend(Un)install: This package may have recommended compatibility issues with other packages. The auto-updater and package manager can use these dependency recommendations to ask the user if they would like to install/uninstall other packages.
QPM:Notes: <string>
For each dependency the package maintainer may describe why the dependency exists. For recommendations, state a brief reason why it is recommended. When creating dependencies on packages and libraries supply
QPM:Product: <1-13 character product identifier; no whitespace>
The product identifier on which this package depends.
QPM:Vendor: <1-13 character vendor identifier; no whitespace>
The vendor identifier of the package on which this package depends.
If this tag is not present, the vendor identifier of THIS package is used, and must match the QPM:Product package’s vendor identifier.
If this tag is entered as “any” (without the quotes), then the vendor identifier will be ignored in the dependency comparison (vendor will always match).
QPM:ProductHomeRepository: <URL>
A repository where this product might be found (possibly) if it is not already installed.
QPM:Filter  <multiple entries are AND filtered (all must be satisfied for the dependency to be satisfied) >
Each dependency may make further qualifications on the specified package. This lets the maintainer filter on versions, package content, distribution organization or any other package tag. Each filter is ANDed together to form compound queries. The filter patterns may contain ‘OR’ operations.
QPM:FilterType: <Numeric | StringExpression | Date >
tagname: <regular pattern>

Each filter is qualified with a filtering type. Numeric expressions use <, <=, =, , =, !=, |, &. String expression uses regular expressions to filter the string. Date uses the numeric expression operators but parses the tag's field value to make sure it's in the YYYYMMDD format.

<BuildNumber>!=4</BuildNumber>  checks that the QPM:BuildNumber is not equal to 4.

Note that there is no way to check the non-existence of a particular tag. String expressions with * will match as long as the tag exists, but there is no way to test the negative of this condition.

One tag in the filter block is checked against the given tag (without the QPM: portion) throughout the entire manifest. For example, <Processor>x86</Processor> will check for an x86 distribution, <ReleaseDate> "2001/04/20" </ReleaseDate> will require that any package which has the given release date.

QPM:IgnorePreVersion: <version>
This dependency should be ignored for any package installer which have a version number prior to the version specified. (ie: a value of 1.05 will cause this dependency to be ignored by package installer version 1.04 and earlier).
Note that this feature was added in version 1.04
QPM:IgnorePostVersion: <version>
This dependency should be ignored for any package installer which have a version number subsequent to the version specified. (ie: a value of 1.03 will cause this dependency to be ignored by package installer version 1.04 and later).
Note that this feature was added in version 1.04

QPM:ProductInstallationProcedure

The final block of information describes how this package is installed.

QPM:Script <Multiple entries>

A package may react to a series of installation events. These events may be the common situations brought on by a package manager or they may be events cause from an external call to the installation library. The most common events involve installation and uninstallation

Scripts are executed in the following order:

At installation
Pre-install
Pre-use
Post-use
Post-install
At deactivation
Pre-unuse
Post-unuse
At activation
Pre-use
Post-use
At uninstallation
Pre-uninstall
Pre-unuse
Post-unuse
Post-uninstall

QPM:ScriptName

The name of the script to execute.

QPM:ScriptType: <enum: Install | Uninstall | Use | Unuse | Refresh >

There are standard events throughout the lifecycle of a package.

QPM:ScriptTiming: <enum: Pre | Post>

Scripts may be executed in stages. All pre scripts are run before the event and the post event scripts are executed after the event.

QPM:ScriptBlocking: <enum: Yes | No>

Tells package installer to wait until script is complete before continuing.

QPM:ScriptResult: <enum: Ignore>

Flags the script so that the return value of the script should be ignored, and no error message shown in package installer.

QPM:ShortDescription: <string>

Textual description showing the purpose of this script.

QPM:UseBinaries: <enum: Yes | No >

Yes if the script uses processor-specific binaries.

QPM:Priority <enum: Optional | Recommended | Required >

Determines the importance of this script.

QPM:Filter

Each script may respond to other package's events. For example, the help viewer may want to index help files; it defines a script to be called upon the installation of a product with a content description containing "documentation". Multiple filters are legal, each filter is ANDed together to form compound queries. The filter patterns may contain 'OR’ operations. If no filter is specified, it is assumed that the script event refers to this package.
QPM:FilterType: <Numeric | StringExpression | Date >

Each filter is qualified with a filtering type. Numeric expressions use <, <=, =, , =, !=, |, &, and (). String expression uses regular expressions to filter the string. Date uses the numeric expression operators but parses the tag's field value to make sure it's in the YYYYMMDD format.

Note that there is no way to check the non-existence of a particular tag. String expressions with * will match as long as the tag exists, but there is no way to test the negative of this condition.

- property: <regular pattern>

Each tag in the filter block is checked (AND logic only) against the given tag (without the QPM: portion) throughout the entire manifest. For example, <CPU>x86</CPU> will check for an x86 distribution, <ReleaseDate> "2000/12/22" </ReleaseDate> followed by: <Libraries> libso.1.0.5 </Libraries> will require that a particular package has been installed

QPM:OrderDependency

The package file manager behaves like a union filesystem. It overlays one package file tree on top of another, replacing the oldest files. There may be as many order dependencies as the maintainer likes, but conflicting order requirements are handled arbitrarily by the package manager (more than likely the user is alerted and the installation is suspended.)

QPM:Order: <enum: InstallOver, InstallUnder>

A package may be installed over, replacing duplicates, or installed under, having its files replaced. The default is Install Over.

QPM:Product: <1-13 character product identifier; no whitespace>

The name of the product you want to install over. If a product is not supplied, the filters are run to find the packages this package should supersede.

QPM:Filter

The package this order is describing may be further qualified to support upgrading specific packages. Multiple filters are legal, each filter is ANDed together to form compound queries. The filter patterns may contain 'OR' operations. If no filter is specified, it is assumed that the script event refers to this package.
QPM:FilterType: <Numeric | StringExpression | Date >

Each filter is qualified with a filtering type. Numeric expressions use <, <=, =, , =, !=, |, &, and (). String expression uses regular expressions to filter the string. Date uses the numeric expression operators but parses the tag's field value to make sure it's in the YYYYMMDD format.

Note that there is no way to check the non-existence of a particular tag. String expressions with * will match as long as the tag exists, but there is no way to test the negative of this condition.

- property: <regular pattern>

Each tag in the filter block is checked (AND logic only) against the given tag (without the QPM: portion) throughout the entire manifest. For example, <CPU>x86</CPU> will check for an x86 distribution, <ReleaseDate> "2000/12/22" </ReleaseDate> followed by: <Libraries> libso.1.0.5 </Libraries> will require that a particular package has been installed

QPM:FileManifest

QPM:Listing

QPM:Dir

The base repository directory specification, where name=””. All install directories appear under this tag.

QPM:Dir: <Multiple entries>

Wherever sub-directories are used.
name=”directory name”
No text on these tags.

QPM:File: <Multiple entries>

Specifies a file to be overlaid into the package filesystem.
Text shows the file’s name.

QPM:Link: <Multiple entries>

Specifies a symbolic link.
link=”real/file/specification”
Text specifies the virtual file (link) to be created.

QPM:Union: <Multiple entries>

Specifies a directory union to be implemented. Often includes the $PROCESSOR directive to redirect processor-specific files into the correct locations.
link=”../$PROCESSOR/usr/bin”
Text shows the directory location where the specified link should appear.
Example: <QPM:Union link=”../$PROCESSOR/usr/bin”>usr/bin</QPM:Union>

QPM:PkgInclude

QPM:Item

Used in the core package to reference the processor-specific manifest.

Text is always $(PROCESSOR)/MANIFEST

QPM:Launch: <Multiple entries>

This block defines a single menu item that will appear on the Photon Launch menu, and the action to take when it is selected.

name=”launch item name”

QPM:String

The first QPM:String element defines the topic category under which this launch menu item will appear.

name=”Topic”

value=”Applications/Editors”

Can be Editors, Games, Internet, Utilities, Development, or Multimedia.

QPM:String

The second QPM:String element defines the command to execute when the menu item is selected.

name=”Command”

value=”/usr/bin/ped”

Fully-qualified command-line command to be executed when the menu item is selected