Envoyer un mail à l’auteur
xavier at ultra-fluide.com

Switch to
English

Ressources

Mise à jour des extensions Firefox.

Depuis sa version 1.5 Firefox propose une version intégrée et automatisée de son processus de mise à jour. C'est plutôt bien, mais... il y a un mais. Les développements des extensions Firefox suivent des trajectoires qui leur sont propres, et dans bien des cas sans étroite corrélation avec les évolutions Firefox lui même.

Du coup, l'utilisateur qui a personnalisé et configuré son navigateur à l'aide de quelques extensions se retrouve à chaque mise à jour avec une plate-forme bancale. 2 cas se présentent :

Nous avons dans la pratique rencontré les 2 cas, avec chaque fois une copieuse perte de temps à la clef. Y a-t-il un moyen de faire machine arrière après une mise à jour de Firefox ? Il existe bien une possibilité de ne lancer la mise à jour qu'après contrôle de la compatibilité affichée des extensions, mais c'est notoirement insuffisant.

La présente contribution indique la procédure à suivre lorsqu'une de vos extensions est désactivée par Firefox suite à une mise à jour, mais qu'aucune version compatible de cette extension n'est encore disponible.

Qu'est ce qu'une extension Firefox ?

Avertissement : ce qui suit n'est pas un cours étendu sur le sujet (voir une documentation complémentaire [fr]), mais une visite en surface visant à résoudre un problème simple.

Une extension Firefox se présente sous la forme d'un fichier portant l'extension .xpi (comprendre ici le terme extension au sens de la terminaison du nom de fichier). Cette terminaison spécifique est reconnu par Firefox, mais ne désigne pas un nouveau format de fichier. Le fichier est en fait un package compressé au format ZIP. Tout outil compatible avec le format ZIP (Utilisez 7-zip si vous n'avez rien de tel sous la main) vous permettra donc d'ouvrir le couvercle d'un .xpi.

Le fichier .xpi d'une extension Firefox contient différents éléments (javascript, fichiers HTML, fichiers CSS, fichiers XML, sous-archives jar...) qui permettent d'implémenter les fonctionnalités voulues. Généralement les fichiers fonctionnels sont regroupés dans un dossier chrome. En revanche toute extension Firefox contient obligatoirement un fichier XML RDF du nom de install.rdf qui fournit au navigateur les descripteurs (méta données) permettant l'installation de l'extension.

Exemple d'un fichier install.rdf

Pour illustrer, nous avons choisi d'étudier l'extension Toolbar Enhancements dont l'archive est tbx.xpi. En ouvrant ce fichier nous trouvons à la racine le fichier install.rdf qui présente le contenu suivant (dernière version disponible au 9 février 2006) :

<?xml version="1.0"?>

<r:RDF xmlns:r="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
       xmlns="http://www.mozilla.org/2004/em-rdf#">

  <r:Description about="urn:mozilla:install-manifest">
    <id>tbx</id>

    <name>Toolbar Enhancements</name>
    <version>0.16.2</version>
    <description>Adds various toolbar buttons and increases toolbar
		configurability</description>

    <creator>Stephen Clavering</creator>
    <homepageURL>http://clav.mozdev.org/</homepageURL>
    <updateURL>http://clav.mozdev.org/updates.rdf</updateURL>

    <targetApplication>
      <r:Description>
        <id>{ec8030f7-c20a-464f-9b0e-13a3a9e97384}</id>
        <minVersion>1.0</minVersion>
        <maxVersion>1.0</maxVersion>
      </r:Description>
    </targetApplication>

    <file>
      <r:Description about="urn:mozilla:extension:file:tbx.jar">
        <package>content/</package>
        <skin>skin/</skin>
        <locale>en/</locale>
      </r:Description>
    </file>
  </r:Description>
</r:RDF>

Le bloc <r:Description> consigne des informations d'identification externes : nom de l'auteur, site web, version...Dans ce bloc il faut prêter attention à <id> qui est exploité par le navigateur pour identifier de manière unique et certaine l'extension.

Le bloc <targetApplication> précise les caractéristiques de l'application cible (l'application susceptible d'utiliser ce plugin). En l'occurrence {ec8030f7-c20a-464f-9b0e-13a3a9e97384} désigne Firefox. Mais il est tout à fait possible de rencontrer des extensions compatibles avec plusieurs navigateurs (Mozilla, Camino...) et dans ce cas on constaterait une répétition du sous bloc <r:Description>, à raison d'un sous bloc par navigateur. Pour chaque navigateur il est précisé la fourchette de versions avec lesquelles l'extension est supposée être compatible.

Le bloc <file> contient les informations nécessaires à l'installation.

Mettre à jour une extension désactivée pour une incompatibilité de versions

Lorsque Firefox installe une extension ou se met à jour lui même, il vérifie que la version dans laquelle il est (ou dans laquelle il sera après mise à jour) se trouve dans la fourchette prévue par l'auteur de l'extension (c'est à dire entre <minVersion> et <maxVersion>). Lorsque la condition est remplie, rien à dire. Dans le cas contraire, il refuse d'installer l'extension, ou la désactive lors de sa propre mise à jour.

Ce mécanisme qui apparaît satisfaisant en théorie se trouve dans la pratique très dépendant de la politique du développeur de l'extension :

La seconde voie est la plus fréquemment rencontrée car il n'est jamais bien vu d'avoir un développement conduisant au dysfonctionnement ou plantage du navigateur. En revanche les délais de mise à jour des méta données des extensions sont parfois bien longs, ce qui prive l'utilisateur d'une fonctionnalité que ce dernier juge indispensable à force d'habitude.

Dans un un tel cas, il suffit lorsque l'incompatibilité ne porte que sur l'incohérence des versions, de modifier l'élément <maxVersion> du fichier install.rdf . Comme on court toujours un risque d'incompatibilité au niveau du code, nous conseillons vivement de traiter les extensions une par une. Ainsi en cas de problème, l'extension coupable est identifiée sans ambiguïté. Reprenant l'exemple de Toolbar Enhancements, sa mise à jour pour la version 1.5.0.1 de Firefox (dernière version à la date du 9 février 2006) conduit à une modification du fichier install.rdf :

<?xml version="1.0"?>

<r:RDF xmlns:r="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
       xmlns="http://www.mozilla.org/2004/em-rdf#">

  <r:Description about="urn:mozilla:install-manifest">
    <id>tbx@clav.mozdev.org</id>

    <name>Toolbar Enhancements</name>
    <version>0.16.2</version>
    <description>Adds various toolbar buttons and increases toolbar 
		configurability</description>

    <creator>Stephen Clavering</creator>
    <homepageURL>http://clav.mozdev.org/</homepageURL>
    <updateURL>http://clav.mozdev.org/updates.rdf</updateURL>

    <targetApplication>
      <r:Description>
        <id>{ec8030f7-c20a-464f-9b0e-13a3a9e97384}</id>
        <minVersion>1.0</minVersion>
        <maxVersion>1.5.0.*</maxVersion>
      </r:Description>
    </targetApplication>

    <file>
      <r:Description about="urn:mozilla:extension:file:tbx.jar">
        <package>content/</package>
        <skin>skin/</skin>
        <locale>en/</locale>
      </r:Description>
    </file>
  </r:Description>
</r:RDF>

L'astérisque (*) est le caractère joker. Ainsi l'extension devient compatible avec toutes les versions mineures de la 1.5.0 de Firefox. Nous avons également modifié l'id de l'extension dont la syntaxe n'était plus compatible avec la version 1.5 de Firefox. Il suffit ensuite de réintégrer ce fichier install.rdf dans le fichier tbx.xpi pour obtenir une extension parfaitement fonctionnelle avec la version 1.5.0.1 de Firefox.

Voici pour ceux qui n'ont pas le courage d'entreprendre eux mêmes ces correctifs, les extensions que nous avons été amené à mettre à jour (compatibilité Firefox 7) :


Agence de communication Ultra-Fluide : 01 47 70 23 32 - contact at ultra-fluide.com - 44 rue Richer 75009 Paris.