Extension Manifest
Introduction
Extensions are packaged in XPI files with an extension manifest which contains metadata about the extension and information about dependencies (on other extensions and the target application(s)). This metadata is folded in to the application Extension Manager datasource when the extension is installed.
The content of the manifest is outlined in this document.
Manifest Contents
<?xml version="1.0">
<RDF xmlns="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
xmlns:chrome="http://www.mozilla.org/rdf/chrome#">
<Description about="extension:manifest">
<chrome:id>@banditsoft.com/software/rssbandit</chrome:id>
<chrome:version>1.0</chrome:version>
<!-- Target Application this extension can install into,
with minimum and maximum supported versions. Minimum is inted
<chrome:targetApplication>
<Description about="urn:mozilla:@mozilla.org/products/firefox">
<chrome:minVersion>0.7</chrome:minVersion>
<chrome:maxVersion>1.2</chrome:maxVersion>
</Description>
</chrome:targetApplication>
<chrome:targetApplication>
<Description about="urn:mozilla:@mozilla.org/products/thunderbird">
<chrome:minVersion>0.4</chrome:minVersion>
<chrome:maxVersion>0.5</chrome:maxVersion>
</Description>
</chrome:targetApplication>
<chrome:requires>
<Description about="urn:mozilla:@mozdev.org/jslib">
<chrome:minVersion>1.0</chrome:minVersion>
<chrome:maxVersion>1.1</chrome:maxVersion>
</Description>
</chrome:requires>
<chrome:requires>
<Description about="urn:mozilla:@banditsoft.com/software/rdfutils">
<chrome:minVersion>2.5</chrome:minVersion>
<chrome:maxVersion>2.9</chrome:maxVersion>
</Description>
</chrome:requires>
<!-- Front End MetaData -->
<chrome:name>RSSBandit 4.0</chrome:name>
<chrome:description>An integrated RSS reader for Firefox and Thunderbird</chrome:name>
<chrome:creator>BanditSoft, Inc.</chrome:creator>
<chrome:contributor>John Doe</chrome:contributor>
<chrome:contributor>Jane Doe</chrome:contributor>
<chrome:homepageURL>http://www.banditsoft.com/rssbandit/</chrome:homepageURL>
<!-- Update Info -->
<chrome:updateURL>http://www.banditsoft.com/rssbandit/update.rdf</chrome:updateURL>
<!-- Front End Integration Hooks (used by Extension Manager)-->
<chrome:optionsURL>chrome://rssbandit/content/options.xul</chrome:optionsURL>
<chrome:aboutURL>chrome://rssbandit/content/about.xul</chrome:aboutURL>
<chrome:iconURL>chrome://rssbandit/content/rssbandit.png</chrome:iconURL>
<!-- Packages, Skins and Locales that this extension registers -->
<chrome:file>
<Description about="urn:mozilla:extensions/<uniquifier>/foo.jar">
<chrome:package>content/rssbandit/</chrome:package>
<chrome:locale>locale/en-US/rssbandit/</chrome:locale>
<chrome:skin>locale/classic/rssbandit/</chrome:skin>
</Description>
</chrome:file>
</Description>
</RDF>
Extension Manager DataSource Grammar
The Extension Manager maintains a datasource of installed extensions. This datasource is used to handle installation, uninstallation, disabling and enabling, automated update, etc. As an extension is installed, the data from the manifest is folded into the datasource. See extension installation for more information.
In addition to the metadata from the manifests, there is some additional book- keeping metadata stored with each extension entry in the datasource. This includes:
- chrome:toBeDisabled - boolean - indicates that an extension should be disabled on the next startup.
- chrome:toBeEnabled - boolean - indicates that an extension should be enabled on the next startup.
- chrome:toBeUninstalled - boolean - indicates that an extension should be uninstalled on the next startup.