Forums : Extensions

Aller à la discussion :  Plus récente Plus ancienne

# mise à jour automatique

Envoyé par : berserker

Date : 02/12/2005 12:52

Bonjour,

J'essai d'utiliser le nouveau système de mise à jour de firefox 1.5. j'ai installé mon extension à partir de mon serveur et je fais une mise à jour de celle ci, je change les numéro de versions dans install.rdf et update.rdf. Cependant la nouvelle version n'est pas détectée. Je dois aller dans outils>extensions et lancer une recherche des mises à jour pour qu'il détecte enfin une nouvelle version et il faut ensuite que je clique sur mettre à jour car il ne le fait pas automatiquement. J'ai observé que les nouvelles versions des xpi installées sur addons.mozilla sont détectés automatiquement mais pas installées là encore il faut le faire manuellement. Dans mes options dans l'onglet avancées>mises à jour il est pourtant cocher "télécharger et installer automatiquement les MAJ".

Y a t'il quelque chose de changer dans l'update.rdf (je n'ai trouvé aucune doc la dessus ) ?

# Re: mise à jour automatique

Envoyé par : laurentj

Date : 06/12/2005 10:48

Cependant la nouvelle version n'est pas détectée.(...) J'ai observé que les nouvelles versions des xpi installées sur addons.mozilla sont détectés automatiquement

Je pense que c'est dû au système de sécurité : ton site où il y a le fichier update.rdf ne doit certainement pas être parmis la liste des sites autorisés à t'installer une extension.. ou un bug dans ce truc là.. je ne sais pas.

il est pourtant cocher "télécharger et installer automatiquement les MAJ".

il me semble que cette case ne concerne que les mise à jour de Firefox, et non des extensions. juste au dessus, j'ai bien marqué "when update to firefox are found".

# Re: mise à jour automatique

Envoyé par : berserker

Date : 02/01/2006 12:11

Finalement, je me suis débrouillé en faisant appel aux fonctions déja existantes de mise à jour qui utilise l' élément XPCOM nsIExtensionManager.

J'ai créé un overlay qui regarde au démarrage de firefox si il y a une mise à jour pour mon extension

# Re: mise à jour automatique

Envoyé par : Zéf

Date : 15/01/2006 18:42

C'est assez rapide comme explication ... :) Est-ce que quelqu'un qui a déja fait ça pourrait en faire profiter tout le monde ? Je pense que ça nous éviterait de passer un certain temps dessus (ça ne m'a pas l'air de couler de source ...)

Merci par avance, Zéf

# Re: mise à jour automatique

Envoyé par : syndr0m

Date : 29/05/2006 18:12

Hello,

Ayant aussi cherché à updater "manuellement" une extension, voici un bout de code minimaliste utilisant les XPCom qui pourrait en aider d'autres : (code testé sous firefox 1.5.0.3)

/*
** pour plus d'infos
** cf. extensions.js qui se trouve dans  chrome/toolkit.jar!/content/mozapps/extensions
*/
function UpdateCheckListener() {
   this._addons = [];
}
UpdateCheckListener.prototype = {
   _addons: [],
 
   onUpdateStarted: function() { },
  
   onUpdateEnded: function() {
    if (this._addons.length > 0)
      em.addDownloads(this._addons, this._addons.length, true);
   },
  
   onAddonUpdateStarted: function(addon) { },
  
   onAddonUpdateEnded: function(addon, status) {
    switch (status)
    {
    // cf http://xulplanet.com/references/xpcomref/ifaces/nsIAddonUpdateCheckListener.html
    case Components.interfaces.nsIAddonUpdateCheckListener.STATUS_UPDATE:
      this._addons.push(addon);
      break;
    case Components.interfaces.nsIAddonUpdateCheckListener.STATUS_FAILURE:
      // ouch :)
      break;
    default :
      break;
    }
   },
  
   QueryInterface: function(iid) {
    if (!iid.equals(Components.interfaces.nsIAddonUpdateCheckListener) &&
       !iid.equals(Components.interfaces.nsISupports)) {
        throw gComponents.results.NS_ERROR_NO_INTERFACE;
      }
    return this;
   }
};
// on instancie un composant type extension manager
var em = Components.classes["@mozilla.org/extensions/manager;1"].getService(Components.interfaces.nsIExtensionManager);
// on l'utilise pour recuperer la liste des extensions
var items = em.getItemList(Components.interfaces.nsIUpdateItem.TYPE_ADDON, { });
// on instancie le listener tel que décrit dans le code ci dessus.
var listener = new UpdateCheckListener();
// on update les extensions grace au composant
em.update(items, items.length, false, listener);

ce code va donc updater toutes les extensions, il suffit de reduire la liste des items pour n'updater que la votre / ou celles de votre choix. Items est un tableau, vous pouvez avoir des infos de type

items[0].id       // ex: monapplication@chezmoi.com
items[0].name     // ex: monapplication
items[0].version  // ex: 1.0.1

Attention de bien placer ce code après le chargement de la page ( dans votre onload par exemple).

# Re: mise à jour automatique

Envoyé par : chris

Date : 06/06/2006 17:12

Sympa ça !

Je me demande si ça ne vaudrait pas une petite page dans les ressources du wiki ;-)

# Re: mise à jour automatique

Envoyé par : chBok

Date : 06/06/2006 17:45

chris > n'hésite pas à éditer le wiki pour insérer cet exemple. Le point de départ serait ici : /wiki/RessourcesLibs. (Il faut juste penser à commenter l'exemple)

# Re: mise à jour automatique

Envoyé par : chris

Date : 06/06/2006 17:48

Je pense qu'il est plus juste de laisser son auteur s'en charger :-)

# Re: mise à jour automatique

Envoyé par : syndr0m

Date : 06/06/2006 19:07

# Re: mise à jour automatique

Envoyé par : chBok

Date : 07/06/2006 10:32

syndr0m a écrit:

[Mise à jour
d'extensions|http://xulfr.org/wiki/RessourcesLibs/
MajExtensions] :)

Merci :) C'est du bon boulot !

Il n'est plus possible de poster des messages dans ce forum.


Copyright © 2003-2013 association xulfr, 2013-2016 Laurent Jouanneau - Informations légales.

Mozilla® est une marque déposée de la fondation Mozilla.
Mozilla.org™, Firefox™, Thunderbird™, Mozilla Suite™ et XUL™ sont des marques de la fondation Mozilla.