Envoyer un mail à l’auteur
xavier at ultra-fluide.com
Switch to
English
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.
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.
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.
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.