There is only XUL (XI, Fin)

Ahora que ya hemos terminado nuestra pequeña extensión para Firefox vamos a ver como podemos crear un xpi para que se instale automáticamente. La extensión xpi viene de XPInstall donde XP se refiere a Cross (X) Platform o multiplataforma, es decir, que puede ser ejecutado en distintas plataformas (Windows, Linux, Mac OS,…).

Un xpi es un simple archivo zip con extensión renombrada que contiene un fichero de instalación y los ficheros que componen la extensión. En el caso de las versiones anteriores a la 0.9 se utilizaba install.js como script instalador, ahora en cambio se utiliza un fichero rdf, install.rdf, pero podemos incluir ambos si queremos que la extensión se pueda instalar en la versión 0.9 y también en las anteriores.

Un archivo install.rdf tendría un aspecto parecido a este:

<?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:install-manifest”>
<em:id>{eb78c871-3d9d-433f-b49b-12468119be89}</em:id>
<em:name>Mostrar Hora</em:name>
<em:version>0.1</em:version>
<em:description>Muestra la hora del sistema en un alert al hacer click sobre la entrada de menu correspondiente.</em:description>
<em:creator>Zootropo</em:creator>
<em:homepageURL>http://mundogeek.net </em:homepageURL>

<em:file>
<Description about=”urn:mozilla:extension:file:hora.jar”>
<em:package>/content/hora/</em:package>
</Description>
</em:file>
<em:targetApplication>
<Description>
<em:id>{ec8030f7-c20a-464f-9b0e-13a3a9e97384}</em:id>
<em:minVersion>0.9</em:minVersion>
<em:maxVersion>0.9</em:maxVersion>
</Description>
</em:targetApplication>

</Description>
</RDF>

Tenemos primero una serie de predicados de información sobre nuestra aplicación que son los siguientes:

  • em:id que se refiere a un id único que podemos generar con esta utilidad de Microsoft y no al identificador de la extensión
  • em:name, el nombre de la extensión
  • em:version, la versión de nuestra extensión.
  • em:description, una descripción de la utilidad de nuestra aplicación.
  • em:creator, nombre del creador de la aplicación.
  • em:homepageURL, página web de la extensión.
  • em:optionsURL, ventana que se mostrará al hacer click sobre las preferencias.
  • em:aboutURL, ventana que se mostrará como About de la aplicación.
  • em:iconURL, icono para identificar la extensión.
  • em:updateURL, URL opcional para la autoactualización.

Tenemos después un predicado em:file que agrupa información sobre los ficheros de nuestra aplicación, donde se encuentra content, skin y locale dentro del archivo .jar, y otro predicado em:targetApplication sobre el programa para el que está destinado nuestra extensión. em:id se refiere al id del navegador, en este caso Firefox y minVersion y maxVersion se refieren respectivamente a la versión mínima y máxima de la aplicación.

Si no quereis complicaros podeis utilizar para crear los xpi un script creado por Ted Mielczarek que podeis encontrar en su página web. También podeis consultar la traducción del documento de Ben Gooder sobre install.rdf.

Ahora que tenemos todos los archivos necesarios lo primero que tenemos que hacer es crear un archivo jar que incluya los archivos de nuestra extensión. Comprimimos en un mismo archivo zip las carpetas content, locale y skin de nuestra aplicación (o content solo si no hemos definido las otras dos). Cambiamos la extensión del archivo resultante a .jar de forma que nos quede un archivo hora.jar en este ejemplo y ya tenemos el archivo jar que empaqueta nuestra aplicación, nos queda empaquetar el .jar y el archivo de instalación en un xpi. Para eso creamos una carpeta chrome a la que movemos hora.jar y comprimimos en un .zip la carpeta chrome y el install.rdf (e install.js en el caso de que lo tengamos) y renombramos la extensión del archivo a .xpi.

El archivo xpi resultante para que comprobeis como se instala automáticamente como cualquier otra extensión de firefox es este.

Comentarios
  1. Enrique

    Hola… leyendo sus intersantes guias..me surge la duda de q no estoy muy seguro de como empezar a programar (desarrollar) una nueva extension para firefox..si me pueden dar una guia de como empezar, que editores utilizar.. estaria muy agradecido..

    PD> si tienen alguna sugerencia de nuevas extensiones sencillas para ser desarrolladas..se los agradeceria..:roll:

    Responder

  2. Anónimo

    por favor me podria decir komo se instalan las extensiones,una vez ke tienes el arxivo xpi?

    Responder

  3. Hay varias formas de instalarlo. Si es un enlace en un sitio web no hace falta más que hacer clic sobre el xpi. Si lo tienes en el disco duro lo puedes arrastrar sobre la ventana del navegador.

    Responder

  4. Mira yo tengo un archivo XPI ya realizado…. pero me gustaria que cuando lo quieran descargar automaticamente se los instale fire fox y no le salga la ventana para escoger si lo quiere guardar o abrir.-… me podrian decir como le puedo hacer muchas gracias!!!!!

    Responder

  5. Ismael soler

    Me baje de Softonic.com un programa llamado “video_downloadhelper-3.0.4-fx” y tiene una extension fxi. Este programa crea en Mozilla Firefox una ventana para poder descargar directamente a una carpeta de tu disco duro los videos que de normal no puedes descargar de You Tube o similares. Intenté ejecutar este programa en mi ordenador y Windows xp me dijo que no reconocía la extensión. Que debo hacer?. Gracias por tu ayuda.

    Responder

  6. antonio

    Hola como instalo los paquetes de fedora el cual no me instala nada por los repositorios

    Responder

Deja un comentario