Ben Goodger, 02/05/2004
Este documento describe cómo crear extensiones para Firefox 0.9 y posteriores, y Thunderbird 0.7 y posteriores.
Usted debe conocer XUL, JavaScript y otros lenguajes/tecnologías que se requieran para poner juntos en su extensión. Hay una gran candidad de recursos que describen esto, y muchos códigos de ejemplo. Este documento se centra en cómo empaquetar XUL, JS y otros componentes juntos en una extensión.
Las nuevas extensiones de Firefox/Thunderbird son semejantes a:
extension.xpi:
extension.rdf
chrome/extension.jar
components/extension.dll
components/extension.js
defaults/extension.something
defaults/preferences/extension.js
Los scripts install.js ya no se usan para las extensiones de Firefox y Thunderbird. Si proporciona un script install.js script, no se leerá. El nuevo administrador de extensiones utiliza la declaración extension.rdf en la parte superior del XPI de su extensión para gestionar la instalación automáticamente. Puede proporcionar un install.js si su extensión también apunta a otras aplicaciones como Mozilla 1.x. Estas aplicaciones ignorarán el manifiesto extension.rdf y utilizarán el script en su lugar.
La presentación de sus ficheros dentro del XPI ahora se hace cumplir. Debe colocar los ficheros jar que quiera poner en el registro chrome para en el subdirectorio chrome, los compomentes XPCOM en components, ficheros predeterminados con excepción de los ficheros de preferencias predeterminadas en defaults y los ficheros de prefernecias predeterminadas en defaults/preferences. El administrado de extensiones comprueba estas ubicaciones varias durante el arranque, instalación y desisntalación para ejecutar varias operaciones como el registro crhome automático, la carga de las preferencias predeterminadas, etc.
Su declaración extension.rdf será semejante a:
<?xml version="1.0"?>
<RDF xmlns="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
xmlns:em="http://www.mozilla.org/2004/em-rdf#">
<Description about="urn:mozilla:extension:manifest">
<-- properties -->
</Description>
</RDF>
Su fichero extension.rdf debe tener estas propiedades:
<em:id>{daf44bf7-a45e-4450-979c-91cf07434c3d}</em:id><em:version>4.6</em:version><em:targetApplication>{ec8030f7-c20a-464f-9b0e-13a3a9e97384},0.7,1.2</em:targetApplication><em:name>Mi extensión</em:name>em:file conducen a recursos con URIs del formato:
urn:mozilla:extension:file:<nombreFichero>.jar. Cada una de estos pequeños recursos tiene un conjunto de propiedades em:package, em:locale y em:skin que especifican la ruta del fichero jar donde se necesita registrar un chrome. Ejemplo.
<em:file>
<Description about="urn:mozilla:extension:file:myext.jar">
<em:package>content/myext/</em:package>
<em:locale>locale/en-US/myext/</em:locale>
<em:skin>skin/classic/myext/</em:skin>
</Description>
</em:file>
Su fichero extension.rdf puede tener estas propiedade además de las anteroriores:
<em:description>Herramientas avanzadas tiruriru.</em:description><em:creator>Juan Perez</em:creator><em:contributor>Juana Perez</em:contributor><em:homepageURL>http://www.tiruriru.com/</em:homepageURL>text/rdf o el comprobador de actualizaciones no funcionará. Firefox sustituirá los siguientes valores dentro de esta URL en el caso de que desee generar la respuesta RDF dinámicamente, tal como ocurre usando PHP o CGI:%ITEM_ID% | Se actualizó la GUID de la extensión |
%ITEM_VERSION% | Se actualizó la versión de la extensión |
%APP_ID% | La GUID de la aplicación actual |
%APP_VERSION% | La versión de la aplicación actual |
<em:updateURL>http://www.tiruriru.com/update.cgi?id=%ITEM_ID%&version=%ITEM_VERSION%</em:updateURL><em:optionsURL>chrome://myext/content/options.xul</em:optionsURL><em:aboutURL>chrome://myext/content/about.xul</em:aboutURL><em:iconURL>chrome://myext/skin/icon.png</em:iconURL>
<?xml version="1.0"?>
<RDF xmlns="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
xmlns:em="http://www.mozilla.org/2004/em-rdf#">
<Description about="urn:mozilla:extension:manifest">
<em:id>{daf44bf7-a45e-4450-979c-91cf07434c3d}</em:id>
<em:version>4.6</em:version>
<!-- Target Application this extension can install into,
with minimum and maximum supported versions. -->
<em:targetApplication>{ec8030f7-c20a-464f-9b0e-13a3a9e97384},0.7,1.2</em:targetApplication>
<!-- Front End MetaData -->
<em:name>NewExt2</em:name>
<em:description>A test extension</em:description>
<em:creator>Joe Creator</em:creator>
<em:homepageURL>http://www.bengoodger.com/</em:homepageURL>
<em:updateURL>http://www.bengoodger.com/software/mb/umo/update.rdf</em:updateURL>
<!-- Front End Integration Hooks (used by Extension Manager)-->
<em:optionsURL>chrome://newext2/content/options.xul</em:optionsURL>
<em:aboutURL>chrome://newext2/content/options.xul</em:aboutURL>
<em:iconURL>chrome://newext2/skin/newext2.png</em:iconURL>
<!-- Packages, Skins and Locales that this extension registers -->
<em:file>
<Description about="urn:mozilla:extension:file:newext2.jar">
<em:package>content/newext2/</em:package>
<em:locale>locale/en-US/newext2/</em:locale>
<em:skin>skin/classic/newext2/</em:skin>
</Description>
</em:file>
</Description>
</RDF>
Todas las extensiones deben usar el Formato de Extensión de Firefox para describir su versionado. El FVF es semejante a:
major.minor.sub[+]
Ejemplo. 1.2.1 y 0.8+. «+» indica que la figura es del periodo de desarrollo entre versiones.
No son necesarios todos los campos, por ejemplo 1.2 es igual de válido que 1.2.0.
Las siguientes son algunas GUIDs apuntando a aplicaciones comunes que puede usar en sus propiedades targetApplication:
| Firefox | {ec8030f7-c20a-464f-9b0e-13a3a9e97384} |
| Thunderbird | TBD. |
TBD.