XUL Application Packaging
XULRunner application packages are standard toolkit bundles (like a Firefox extension), with one additional manifest file (application.ini) which helps describe the application. XUL app packages are typically ZIPped into an archive with the extension .xulapp or .xpi. They can be installed with a XULRunner command-line flag "-install-app".
[APP]
This section specifies metadata about the application. It contains many REQUIRED Key=Value pairs.
Name
This key is required and specifies the application name, on certain operating systems this is the name which shows when you minimize and restore your applications, or switch applications.
Examples:
Version
This key is required and specifies the application version number. The value consists of one or more version parts, separated with dots.
Examples:
BuildID
This key is required and specifies a unique build identifier. This is typically a date identifier, and should be different for every released version of an application.
Examples:
If you want an idea of how to come up with a BuildID, you could use Unix Timestamp Converter, as I did in the 3rd example.
ID
This key is required and specifies a unique application ID. The application ID, like extension IDs, can be formatted either like an email address or a UUID. The email format is recommended for newly developed applications.
Examples:
Vendor
This key is optional and specifies the application vendor.
Examples
Profile
This key is optional and specifies the path to use for the application's profile, based within the user's application data directory.
Examples:
[Gecko]
The Gecko section specifies what version of XULRunner is required by the application.
MinVersion
This key is required and specifies the minimum XULRunner version needed by this application. If there are binary components, MinVersion must equal the version of the libxul SDK which is used to built the application.
Examples:
MaxVersion
This key is optional and specifies the maximum XULRunner version needed by this application. The default is any XULRunner less than 2.0.
Examples:
[XRE]
The XRE section is optional and specifies various features of XULRunner start-up than can be enabled.
EnableExtensionManager
This key is optional and specifies whether to enable extensions and extension management. Legal values are 1 and 0, where 1 is on and 0 is off. The default is 0 (off).
Example:
EnableProfileMigrator
This key is optional and specifies whether, when the application is launched for the first time and there are no profiles, to enable profile migration code through the nsIProfileManager interface. Legal values are 1 and 0, where 1 is on and 0 is off. The default is 0 (off).
Example:
[Crash Reporting]
The Crash Reporting section is optional. XULRunner application authors who wish to use crash reporting server.
Enabled
This key is optional and specifies whether to enable or disable crash reporting. Legal values are True or False. The default is False.
Example:
ServerURL
This is key only required with Enabled is True. It specifies the complete web URL for submitting crash reports.
Example:
application.ini
The application.ini manifest is located at the root of the extension and provides metadata that allows XULRunner to launch the application properly. It is parsed as a Windows-style INI file with [Headings] and Key=Value pairs. Lines beginning with ; or # are treated as comments.[APP]
This section specifies metadata about the application. It contains many REQUIRED Key=Value pairs.
Name
This key is required and specifies the application name, on certain operating systems this is the name which shows when you minimize and restore your applications, or switch applications.
Examples:
Name=Test Application Name=TestApp
Version
This key is required and specifies the application version number. The value consists of one or more version parts, separated with dots.
Examples:
Version=1.0 Version=1.0a Version=2.1pre1b
BuildID
This key is required and specifies a unique build identifier. This is typically a date identifier, and should be different for every released version of an application.
Examples:
BuildID=20100310 BuildID=1100310 BuildID=1268255569
If you want an idea of how to come up with a BuildID, you could use Unix Timestamp Converter, as I did in the 3rd example.
ID
This key is required and specifies a unique application ID. The application ID, like extension IDs, can be formatted either like an email address or a UUID. The email format is recommended for newly developed applications.
Examples:
ID=ApplicationName@vendor.tld
ID={12345678-1234-1234-123456789abc}
Vendor
This key is optional and specifies the application vendor.
Examples
Vendor=Brain Patchwork DX Vendor=3F Labs
Profile
This key is optional and specifies the path to use for the application's profile, based within the user's application data directory.
Examples:
Profile=MyAppData Profile=profile.dat
[Gecko]
The Gecko section specifies what version of XULRunner is required by the application.
MinVersion
This key is required and specifies the minimum XULRunner version needed by this application. If there are binary components, MinVersion must equal the version of the libxul SDK which is used to built the application.
Examples:
MinVersion=1.8 MinVersion=1.9.2
MaxVersion
This key is optional and specifies the maximum XULRunner version needed by this application. The default is any XULRunner less than 2.0.
Examples:
MaxVersion=1.9.0.* MaxVersion=1.9.2
[XRE]
The XRE section is optional and specifies various features of XULRunner start-up than can be enabled.
EnableExtensionManager
This key is optional and specifies whether to enable extensions and extension management. Legal values are 1 and 0, where 1 is on and 0 is off. The default is 0 (off).
Example:
EnableExtensionManager=1
- Note: This option does not add menu items that make the extension/theme manager available in the UI; that is the responsibility of the application author.
EnableProfileMigrator
This key is optional and specifies whether, when the application is launched for the first time and there are no profiles, to enable profile migration code through the nsIProfileManager interface. Legal values are 1 and 0, where 1 is on and 0 is off. The default is 0 (off).
Example:
EnableProfileMigrator=1
- Note: The application author is responsible for implementing the nsIProfileMigrator interface; if an implementation is not found no migration will be performed.
[Crash Reporting]
The Crash Reporting section is optional. XULRunner application authors who wish to use crash reporting server.
Enabled
This key is optional and specifies whether to enable or disable crash reporting. Legal values are True or False. The default is False.
Example:
Enabled=True
ServerURL
This is key only required with Enabled is True. It specifies the complete web URL for submitting crash reports.
Example:
ServerURL=https:your.server.url/submit
- Note: because crash reports can contain private data including passwords, in production environments they should only be sent via https.