je viens de trouver une méthode qui est un poil plus compliquée, mais qui permet de ne pas avoir à tout refaire lors d'une mise à jour de Firefox. Ça marche avec Debian grâce au fait que le profil par défaut est stocké dans
/etc/firefox. L'idée est de fournir un profil par défaut qui contient toutes les extensions nécessaires installées. Il ne s'agit donc pas d'une installation globale au sens strict du terme, mais cela permet d'installer des extensions sur l'ensemble des profils d'un poste.
En réalité, je n'ai pas réussi à reproduire un profil avec toutes les extensions installés. Mais vous allez voir que ce n'est pas très grave.
Il existe une méthode simple qui consiste à créer un dossier extensions dans le profil par défaut, et à y mettre tous les fichiers .xpi ; du coup, quand on démarre un nouveau profil, on a toutes les extensions affichent la petite boîte d'attente de 5 secondes, on clique sur ok, et quand on démarre, toutes les extensions sont installées et prêtes à l'emploi.
Ça va vite à mettre en place, ça marche, mais le problème, c'est que les boîtes d'attente, dans certains cas, ça le fait pas.
L'idée donc, est de placer le profil en attente d'installation, c'est à dire, dans l'état dans lequel il est lorsqu'on vient d'installer une extension, qu'on a déjà arrêté firefox, mais pas encore redémarré. Quand le profil sera créé, toutes les extensions vont s'installer, de manière transparente. En fait, je pense que c'est mieux que si on avait des extensions déjà toutes installées, parceque si une extension veut faire qqc pendant sa phase d'installation, elle peut le faire. L'inconvénient par contre, c'est que l'on doit vérifier soit même, au préalable, la compatibilité des extensions avec la version de Firefox, sinon...
sinon, je sais pas ce qui peut se passer, mais ça peut ne pas être drôle.
Voici donc la méthode.
Je vais prendre l'exemple de
Clines.
La première chose à faire, est de télécharger l'extension, et de trouver son uid. Ici, c'est
{616f2aa8-9674-4009-90de-94ce4ea9d29a}.
Ensuite, on va créer 4 répertoires dans le dossier profile :
/etc/firefox/profile/extensions
/etc/firefox/profile/extensions/staged-xpis
/etc/firefox/profile/extensions/{616f2aa8-9674-4009-90de-94ce4ea9d29a}
/etc/firefox/profile/extensions/staged-xpis/{616f2aa8-9674-4009-90de-94ce4ea9d29a}
et on va mettre le fichier .xpi dans le dernier.
On se retrouve donc avec qqc comme ça :
Code : Tout sélectionner
extensions
|-- staged-xpis
| `-- {616f2aa8-9674-4009-90de-94ce4ea9d29a}
| `-- clines.xpi
`-- {616f2aa8-9674-4009-90de-94ce4ea9d29a}
Bien sûr, si on veut rajouter une deuxième extension, on fait la même chose sauf que les deux premiers dossiers sont déjà créés.
ensuite, on retourne dans le répertoire de profil, et on va créer un fichier
extensions.cache
et dedans, on va mettre une ligne :
app-profile
{616f2aa8-9674-4009-90de-94ce4ea9d29a} rel%
{616f2aa8-9674-4009-90de-94ce4ea9d29a} 1136667952 needs-install
Le nombre de l'avant dernière colonne correspond à une mesure de temps ; je crois qu'il n'est pas très important, mais il faut même quelque chose.
Enfin, il faut créer un fichier
extensions.rdf, et mettre dedans :
Code : Tout sélectionner
<?xml version="1.0"?>
<RDF:RDF xmlns:NS1="http://www.mozilla.org/2004/em-rdf#"
xmlns:NC="http://home.netscape.com/NC-rdf#"
xmlns:RDF="http://www.w3.org/1999/02/22-rdf-syntax-ns#">
<RDF:Seq RDF:about="urn:mozilla:item:root"> <RDF:li RDF:resource="urn:mozilla:item:{616f2aa8-9674-4009-90de-94ce4ea9d29a}"/>
</RDF:Seq>
<RDF:Description RDF:about="urn:mozilla:item:{616f2aa8-9674-4009-90de-94ce4ea9d29a}"
NS1:installLocation="app-profile">
<NS1:type NC:parseType="Integer">2</NS1:type>
</RDF:Description>
</RDF:RDF>
Si on veut rajouter une deuxième extension, dont l'uid serait, par exemple, {73a6fe31-595d-460b-a920-fcc0f8843232}, il faudrait marquer :
Code : Tout sélectionner
<?XML VERsion="1.0"?>
<RDF:RDF xmlns:NS1="http://www.mozilla.org/2004/em-rdf#"
xmlns:NC="http://home.netscape.com/NC-rdf#"
xmlns:RDF="http://www.w3.org/1999/02/22-rdf-syntax-ns#">
<RDF:Seq RDF:about="urn:mozilla:item:root">
<RDF:li RDF:resource="urn:mozilla:item:{616f2aa8-9674-4009-90de-94ce4ea9d29a}"/>
<RDF:li RDF:resource="urn:mozilla:item:{73a6fe31-595d-460b-a920-fcc0f8843232}"/>
</RDF:Seq>
<RDF:Description RDF:about="urn:mozilla:item:{616f2aa8-9674-4009-90de-94ce4ea9d29a}"
NS1:installLocation="app-profile">
<NS1:type NC:parseType="Integer">2</NS1:type>
</RDF:Description>
<RDF:Description RDF:about="urn:mozilla:item:{73a6fe31-595d-460b-a920-fcc0f8843232}"
NS1:installLocation="app-profile">
<NS1:type NC:parseType="Integer">2</NS1:type>
</RDF:Description>
</RDF:RDF>
voila c'est cuit, y'a plus qu'à plus qu'à créer un nouveau profil pour pouvoir jouer. En plus, ça doit être scriptable, et on doit pouvoir envisager une installation automatique (et sans X du coup)
Pour les mises à jour des extensions, ce devra être géré dans chaque profil.
Lors des mises à jour de Firefox, tout ça devrait être préservé.