Mettre à jour une extension Firefox
La contrainte à connaître avant tout
Chaque nouvelle version doit être signée par Mozilla, pas seulement la première. Firefox
Release et ESR refusent d'installer un .xpi non signé, y compris en distribution interne et
y compris par stratégie de groupe. Le dépôt ne peut pas fournir cette signature.
Le passage par addons.mozilla.org en canal unlisted (l'extension reste privée, absente
du catalogue public) est donc une étape obligatoire de chaque mise à jour. C'est la plus
longue : quelques minutes en général, la validation étant automatisée.
Ce qui se passe côté navigateur
Firefox lit browser_specific_settings.gecko.update_url dans le manifeste de l'extension
installée, interroge cette URL environ toutes les 24 heures, compare le numéro de version
annoncé, télécharge update_link, vérifie la signature Mozilla, puis installe.
Ce point est la source d'erreur la plus fréquente : c'est le manifeste de l'extension
déjà déployée qui pilote les mises à jour, pas la stratégie de groupe. La clé
install_url d'ExtensionSettings ne sert qu'à l'installation initiale. Si la version
installée sur les postes ne déclare pas d'update_url, elle ne se mettra jamais à jour depuis
ce dépôt — il faudra la redéployer une fois pour amorcer le mécanisme.
Le manifeste doit donc contenir, dès la version déployée :
"browser_specific_settings": {
"gecko": {
"id": "extension@exemple.fr",
"update_url": "https://extensions.kernelpanics.fr/e/<slug>/updates.json"
}
}
L'id doit rester strictement identique d'une version à l'autre.
Procédure
- Incrémenter
versiondans lemanifest.json. - Vérifier que
browser_specific_settings.gecko.idest inchangé et queupdate_urlpointe bien vers ce dépôt. - Soumettre sur
addons.mozilla.orgen canal unlisted, puis télécharger le.xpisigné une fois la validation terminée. - Dans le dépôt, ouvrir l'extension puis Publier une version et déposer le
.xpisigné. Le numéro de version et l'identifiant sont relus dans le manifeste du paquet. - Vérifier la publication.
Le dépôt détecte un .xpi dépourvu de signature Mozilla et l'annonce au moment du dépôt : si
cet avertissement apparaît, le fichier déposé est le paquet de développement, pas celui
récupéré depuis AMO.
Vérifier la publication
curl -s https://extensions.kernelpanics.fr/e/<slug>/updates.json
curl -sI https://extensions.kernelpanics.fr/dl/<slug>/latest.xpi
Contrôler que version est la nouvelle, que la clé de addons — l'identifiant — est
inchangée, et que update_link est bien en HTTPS.
Forcer la mise à jour sur un poste
about:addons, engrenage en haut de la liste, Rechercher des mises à jour.
about:policies affiche les stratégies réellement appliquées, et about:debugging la version
exacte de l'extension chargée.
Délai de propagation sur le parc
Jusqu'à 24 heures, l'intervalle de vérification de Firefox étant nettement plus long que celui des navigateurs Chromium. Prévoir ce délai dans les plannings de déploiement, ou forcer la vérification par script sur les postes concernés.
Retour arrière
Comme pour Chromium, Firefox ne redescend pas vers une version inférieure. Épingler une ancienne version dans le dépôt arrête la propagation mais ne répare pas les postes déjà à jour. Pour cela, publier une version supérieure contenant l'ancien code — ce qui suppose de la faire signer à nouveau par Mozilla.
À ne jamais faire
| Action | Conséquence |
|---|---|
Changer gecko.id |
Firefox considère qu'il s'agit d'une autre extension ; l'ancienne reste installée et figée. |
Omettre update_url du manifeste |
Firefox interroge Mozilla au lieu du dépôt : aucune mise à jour n'arrive jamais. |
Déposer un .xpi non signé |
Les postes refusent l'installation. |
| Servir le dépôt en HTTP | Firefox rejette un update_url ou un update_link en clair. |
Diagnostic
| Symptôme | Cause probable |
|---|---|
| Aucune mise à jour après 24 h | update_url absent du manifeste de la version installée, ou version non incrémentée. |
Le téléchargement a échoué |
URL injoignable depuis le poste, ou certificat TLS non reconnu. |
L'extension n'a pas pu être vérifiée |
Paquet non signé par Mozilla, ou modifié après signature. |
| L'extension n'est pas installée du tout | ExtensionSettings absent ou mal formé — vérifier dans about:policies. |
| Une seconde extension apparaît | L'identifiant gecko.id a changé entre deux versions. |
Autres documents : Publier une extension pour la première fois · Mettre à jour une extension Chrome, Edge ou Brave · Installer et exploiter le dépôt