Forums : Template et RDF

Aller à la discussion :  Plus récente Plus ancienne

Aller à la page :  1 2 3

# [résolu] Développer un système d'installer et de màj pour une appli xulrunner

Envoyé par : Gregco

Date : 27/04/2007 09:52

Bonjour à tous

Voilà j'ai une petite application bâtie sur Xulrunner. Je cherche un moyen de l'installer et de la mettre à jour.

J'ai lu ce poste http://xulfr.org/forums/read.php?1,8212,(..)et celà fonctionne très bien pour installer mon appli.

Mon problème ce pose au niveau de la mise à jour. J'ai remarqué qu'il était possible de le faire via un fichier update.rdf (raison pour laquelle je poste ce message ici:D).

Seul ique, si j'ai bien compris, c'est que le chemin du fichier update.rdf doit être mentionné dans un fichier install.rdf... et vu que je n'utilise pas de fichier install.rdf pour déployer mon soft, je me retrouve dans une impasse.

Mes questions :

* est-il possible de faire des mis à jour d'une application xulrunner  avec le système de déployement que j'utilise en se moment?
* est-il possible de déployer une application xulrunner via  un fichier install.rdf?

Si vous avez des liens détaillés, je suis preneur, mais gardez à l'esprit que je suis un noob :-)

Bien à vous

Gregco

# Re: Développer un système d'installer pour une appli xulrunner

Envoyé par : Raphael

Date : 27/04/2007 10:35

Bonne question, perso je comptais réutiliser InnoSetup, en espérant que ça écrase les précédents fichiers mais c'est pas génial lol.

Je vais donc suivre ce topic de près.

# Re: [non résolu] Développer un système d'installer pour une appli xulrunner

Envoyé par : omicron

Date : 30/04/2007 08:34

Voilà comment je procède :

  • l'application originale XulRunner est développée sous forme d'un fichier jar et packagée avec innosetup;
  • la dernière release est placée sur le serveur et contient 2 fichiers : le nouveau fichier jar et le nouveau fichier ini qui contient lui même la variable BuildID par définition;
  • lors de la connexion au serveur, l'utilisateur n'a pas la main et mon appli XulRunner compare sa propre valeur BuildID avec celle disponible sur le serveur (qui sait lire les fichiers de type ini);
  • si l'appli XulRunner est à jour, j'active la possibilité de continuer, sinon j'avertis l'utilisateur qu'une nouvelle mise à jour est disponible et procède au téléchargement des fichiers jar et ini qui sont disponibles sur le serveur (écrasement des fichiers sur le poste client). En fin de téléchargement, j'informe l'utilisateur que la mise à jour a été effectuée et l'invite à quitter et à relancer son appli XulRunner.

# Re: [non résolu] Développer un système d'installer pour une appli xulrunner

Envoyé par : Raphael

Date : 30/04/2007 10:50

Mais ton appli. arrive-t-elle à écraser les fichiers actuellements utilisés par ton application pour télécharger la MAJ ?

Mais avec ta méthode, tu ne peux pas mettre à jour XULRunner, si ?

Pourrais-tu détailler un peu plus ta méthode ? Car ce à quoi je pensais s'apparenterait plus au DL d'une archive Zip puis à son extraction dans le répertoire de nos fichiers .xul et .js afin d'ajouter les nouveaux et écraser les anciens... Le système d'exploitation hôte (Win, Linux) permet-t-il d'écraser certains fichiers peut-être utilisés au moment de l'installation de la MAJ ?

# Re: [non résolu] Développer un système d'installer pour une appli xulrunner

Envoyé par : Gregco

Date : 30/04/2007 11:18

Bonjour omicron.

Tout d'abord, merci de ta réponse.

omicron a écrit:

lors de la connexion au serveur, l'utilisateur
n'a pas la main et mon appli XulRunner compare sa
propre valeur BuildID avec celle disponible sur le
serveur (qui sait lire les fichiers de type ini);
si l'appli XulRunner est à jour, j'active la
possibilité de continuer, sinon j'avertis
l'utilisateur qu'une nouvelle mise à jour est
disponible et procède au téléchargement des
fichiers jar et ini qui sont disponibles sur le
serveur (écrasement des fichiers sur le poste
client). En fin de téléchargement, j'informe
l'utilisateur que la mise à jour a été effectuée
et l'invite à quitter et à relancer son appli
XulRunner.

C'est donc qqch que tu as toi même développé (ou alors tu as réussi à se que xulrunner fasse le cheak et execute tout seul l'installation de la mise à jour?). Si c'est bien toi qui a développer ton système de mise à jour, aurais-tu certains tuyaux à partager? As-tu rencontré des problèmes de droit pour créer ou ecraser des fichiers de ton appli? Et surtout, quel fonction te permet de manipuler des fichiers en xul.

Bien à toi

Gregco

EDIT : je viens de remarquer que Raphael a posté un message avec des questions très similères aux miennes, dsl pour ce presque doublon

# Re: [non résolu] Développer un système d'installer pour une appli xulrunner

Envoyé par : omicron

Date : 30/04/2007 18:52

Un exemple valant mieux qu'une explication, voilà mon code Javascript de mise à jour de mes applications XulRunner (qui communique avec mon serveur d'application sous Python avec le protocole JSON):

function onLoad() {
  ...
  var req = new XMLHttpRequest();
  req.onreadystatechange = function () {
    if (req.readyState == 4) {
      if (req.status == 200) {
        r = JSON.parse(req.responseText);
        var appInfo = Components.
                  classes["@mozilla.org/xre/app-info;1"].
                  getService(Components.interfaces.nsIXULAppInfo);
        if (r.lastapp > appInfo.appBuildID) {
          var path_app = Components.
                  classes["@mozilla.org/file/directory_service;1"].
                  getService(Components.interfaces.nsIProperties).
                  get("resource:app", Components.interfaces.nsIFile).
                  path;
          var runtime = Components.
                  classes["@mozilla.org/xre/app-info;1"].
                  getService(Components.interfaces.
                  nsIXULRuntime);
          if (runtime.OS.substring(0, 3) == 'WIN') {
            fileDownload(server_url+"/install?jar=app",
                  path_app+"\\chrome\\monappli.jar", updateObserver);
            fileDownload(server_url+"/install?jar=ini",
                  path_app+"\\application.ini", updateObserver);
          }
          else {
            fileDownload(server_url+"/install?jar=app",
                  path_app+"/chrome/monappli.jar",updateObserver);
            fileDownload(server_url+"/install?jar=ini",
                  path_app+"/application.ini", updateObserver);
          }
          var msg = "\nVersion exploitée : "+appInfo.appBuildID;
          msg += "\nVersion disponible: "+r.lastapp;
          msg += "\n\n\nUne version plus récente de l'application est désormais disponible.";
          msg += "\n\n\n\nLa mise à jour de votre poste va se télécharger automatiquement sur votre ordinateur.";
          msg += " Veuillez cliquer sur le bouton 'Ok' pour démarrer ce téléchargement automatique et attendre";
          msg += " le message vous informant de la fin de cette procédure de mise à jour.\n\n"
          msgAlert(msg);
          window.setCursor('wait');
       }
       else {
         btn = document.getElementById('btn_login');
         btn.setAttribute('disabled', 'false');
       }
    }
    else {
      msgError("Erreur SQL: " + req.responseText);
    }
  };
  req.open("POST", server_url + "/help/get_infos", true);
  req.setRequestHeader("Content-type",
                     "application/x-www-form-urlencoded");
  req.send('');
...
}
//
//  ----- mise à jour
var NB_DOWNLOADS = 0;
function updateObserver(webProgress, request, stateFlags, status) {
  if (stateFlags == 327696) {
    NB_DOWNLOADS++;
    if (NB_DOWNLOADS == 2) {
      NB_DOWNLOADS = 0;
      window.setCursor('auto');
      msg  = "Le téléchargement de la mise à jour vient de se terminer.";
      msg += "\n\n\nPour bénéficier des dernières modifications, veuillez fermer puis relancer l'application.\n\n";
      msgInfo(msg);
    }
  }
}

L'application XulRunner est zippée dans le fichier jar. Pas besoin de dézipper cette archive, j'écrase simplement l'ancien fichier jar et l'ancien fichier ini. Ce n'est peut être pas académique mais toutes mes applications XulRunner fonctionnent ainsi. Par contre, ne pas oublier que l'utilisateur ne doit pas avoir la main tout pendant que la vérification des versions n'est pas terminée et pendant le téléchargement de la release.

# Re: [non résolu] Développer un système d'installer pour une appli xulrunner

Envoyé par : Raphael

Date : 01/05/2007 09:41

En fait, pour être honnête je suis plutôt fier de moi car j'ai moi-même codé un gestionnaire de MAJ mais que pour des données et des photos... et c'est exactement le même code à quelques lignes près ! XD

Je le comprends donc très bien dans sa conception, mais j'ai quelques questions qui me trottent dans la tête :

  • Quelle est l'arborescence de ton application ? à l'extérieur et à l'intérieur du jar ? (Car du coup, je vais peut-être passer en .jar au lieu de rester en dossiers/fichiers... y a des avantages / inconvénients ? Temps d'accès ? code supplémentaire ?)
  • Ton gestionnaire de MAJ a bien son code source dans le .jar que tu écrases non ? Et l'écrasement marche ? Comment ça ? Est-ce que lorsqu'une appli. XulRunner est lancé, tout est chargé en RAM et il n'y a plus d'accès aux fichier sur le disque ?

Ca alors, ben si c'est bien le cas, je n'aurais jamais pensé que ce serait aussi simple de MAJ une appli. XulRunner.

Arf, j'ai méchamment du boulot aujourd'hui, j'enrage de pas pouvoir commencer à coder ça maintenant =/

Merci pour ton aide en tous cas.

# Re: [résolu] Développer un système d'installer pour une appli xulrunner

Envoyé par : Gregco

Date : 01/05/2007 11:46

oki, merci pour toutes ces précisions, je mets le poste en résolu, je vais avoir de quoi faire des testes et recherches.

Je vous tiendrais au courrant :-)

++ et merci encore

Gregco

# Re: [résolu] Développer un système d'installer et de màj pour une appli xulrunner

Envoyé par : omicron

Date : 01/05/2007 14:54

L'arborescence de mon application est la suivante (XulRunner 1.9):

 -myapp
    !-myapp.bat
    !-application.ini
    !-chrome
    !    -chrome.manifest
    !    -myapp.jar
    !-defaults
    !    -preferences
    !       -prefs.js
    !-xulrunner

Le contenu du fichier jar reprend les dossiers 'content', 'skin' et 'locale' que l'on retrouve dans le dossier 'chrome' de la version de développement. L'archivage des sources dans un fichier jar est la méthode préconisée pour le déploiement d'application XUL.

Je confirme qu'il y a bien écrasement du fichier jar. C'est pour cette raison que le code de mise à jour est à exécuter dès le lancement de l'application.

# Re: [résolu] Développer un système d'installer et de màj pour une appli xulrunner

Envoyé par : Raphael

Date : 01/05/2007 19:06

Ah, je ne savais pas que l'empaquetage .jar était la méthode préconisées pour le déploiement...

Je vais me renseigner sur ça... Je suppose que ce n'est pas aussi simple que de zipper le répertoire contents et tout, puis de renommer en .jar, si ? Doit y avoir autre chose à faire non ?

En tous cas merci pour ces renseignements, je vais pouvoir transformer mon gestionnaire de mise à jour de données en gestionnaire de mise à jour d'applications grâce à de menues modifications =)

EDIT : Mais donc là, tu ne peux pas MAJ XULRunner de cette manière non ? A moins de DL un .zip contenant le répertoire xulrunner et de le dézipper ensuite... mais est-ce que ça écraserait bien ?

Aller à la page :  1 2 3

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.