Envoyé par : Raphael
Date : 27/12/2007 23:10
Bonjour, en Septembre j'ai codé un logiciel (avec XR1.9a4) qui comporte un "update manager" avec une fonction de téléchargement asynchrone :
function dl(url_fic, dest) { var dlmgr = Components.classes['@mozilla.org/download-manager;1'] .getService(Components.interfaces.nsIDownloadManager); var ioService = Components.classes["@mozilla.org/network/io-service;1"] .getService(Components.interfaces.nsIIOService); var s_uri = ioService.newURI(url_fic, null, null); var t_uri = ioService.newFileURI(dest); const nsIWBP = Components.interfaces.nsIWebBrowserPersist; var persist = Components.classes['@mozilla.org/embedding/browser/nsWebBrowserPersist;1'] .createInstance(Components.interfaces.nsIWebBrowserPersist); var flags = nsIWBP.PERSIST_FLAGS_NO_CONVERSION | nsIWBP.PERSIST_FLAGS_REPLACE_EXISTING_FILES | nsIWBP.PERSIST_FLAGS_BYPASS_CACHE; persist.persistFlags = flags; var ret = dlmgr.addDownload ( -1, s_uri, t_uri, 'test', null, null, -1, null, persist); persist.progressListener = ret; persist.saveURI(s_uri, null, null, null, null, t_uri); }
Cette version 0.5 est sur Sourceforge, tout ça pour dire que je n'y ai changé aucune ligne de code.
Mon update manager se connecte à des dépôts et télécharge des fichiers .zip pour les extraire ensuite.
Ca marche très bien, sous Windows comme sur Linux depuis Septembre, j'ai notamment diffusé à mes utilisateurs les versions : 0.5.1, 0.5.2,... jusqu'à 0.5.5.
Dernièrement, j'ai mis une version 0.5.6 qui elle aussi ne touche en rien à mon update Manager. Mais la MAJ bug...
J'ai alors enqueté, et il s'avère que c'est la fonction de téléchargement qui ne télécharge que 99% du fichier à chaque fois car à chaque fois que je veux ouvrir manuellement mes fichiers .zip téléchargés, j'ai une erreur "Fin non attendue" de Winzip ou autres. Même résultat sous Windows ou Linux.
Je me suis dit que ça venait de mes dépôts alors j'ai essayé de DL normalement par Firefox : Aucun souci. J'ai alors changé mes dépôts de serveur tant qu'à faire : Ca plante pareil !
Je me suis dit que ça devait venir de moi alors, de ma configuration... mais non, d'autres ont le même problème !
En restant objectif, il ne me vient à l'idée que 2 hypothèses absurdes :
Bref, je ne peux y croire... mais raisonnablement parlant, je ne peux comprendre d'où peut venir ce problème !
Bref, je suis perdu, mais alors complètement perdu.
Merci d'avance pour toute proposition...
Envoyé par : Paul Rouget
Date : 28/12/2007 13:44
Aucune idée, mais quand tu trouves la solution, tu nous le dis :)
Envoyé par : Raphael
Date : 28/12/2007 13:54
Merci du soutien... mais j'ai beau cherché, je ne vois aucune cause.
Il me télécharge très bien... mais 99% du fichier !
Et en plus, il me considère le téléchargement comme ayant réussi car voici mon code :
var DownloadObserver = { observe: function (subject, topic, state) { var oDownload = subject.QueryInterface(Components.interfaces.nsIDownload); //**** Récupération d'un objet de fichier de téléchargement var oFile = null; try{ oFile = oDownload.targetFile; // Postérieur à firefox 0.9+ } catch (e){ oFile = oDownload.target; // Antérieur à firefox 0.8 } //**** Démarrage d'un téléchargement if (topic == "dl-start"){ //alert('Démarrage du téléchargement de - '+oFile.path); } //**** Annulation d'un téléchargement if(topic == "dl-cancel"){ updates_downloaded++; //if (updates_downloaded == update.length) { installUpdates(); } //alert('Annulation du téléchargement de - '+oFile.path); } //**** Téléchargement échoué else if(topic == "dl-failed"){ updates_downloaded++; //if (updates_downloaded == update.length) { installUpdates(); } alert('Echec du téléchargement de - '+oFile.path); } //**** Téléchargement réussi else if(topic == "dl-done"){ updates_downloaded++; var percentComplete = (updates_downloaded / update.length)*100; // On met à jour l'état sur la mise à jour updateInfos(percentComplete, $("i18n").getString("main.info.downloading"), $("i18n").getString("sub.info.downloading")); //alert('Téléchargement réussi de - '+oFile.path); if (updates_downloaded == update.length) { installUpdates(); } } } }
Si le téléchargement échouait, j'aurais un alert() mais ce n'est pas le cas... il rentre bien dans le if(topic == "dl-done") le bougre.
Comprends vraiment pas, ce code a toujours marché avant et j'ai rien touché.
Je ne sais pas quoi faire... existe-t-il une autre manière de télécharger ? peut-être en utilisant le gestionnaire de Firefox/XulRunner ? Histoire de faire quelque chose...
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.