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
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.
Envoyé par : omicron
Date : 30/04/2007 08:34
Voilà comment je procède :
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 ?
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
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.
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 :
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.
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
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.
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 ?
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.