Forums : Xul, Xbl, JS...

Aller à la discussion :  Plus récente Plus ancienne

# Le mystère de l'année ! Mes Téléchargements ne marchent plus !

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 :

  • Internet a changé de protocole de téléchargement ces derniers jours et je suis le dernier au courant.
  • XulRunner utilise des librairies distantes pour télécharger ? Et une MAJ récente a changé quelque chose ?

Bref, je ne peux y croire... mais raisonnablement parlant, je ne peux comprendre d'où peut venir ce problème !

  • Avec une version de mon logiciel qui marchait, ça ne marche plus !
  • En changeant mes dépôts, ça ne marche pas plus, ça ne doit donc pas venir de là...
  • Ca ne peut pas venir d'une nouvelle version du format zip car je peux les dezipper manuellement (si je les télécharge manuellement ces MAJ)

Bref, je suis perdu, mais alors complètement perdu.

Merci d'avance pour toute proposition...

# Re: Le mystère de l'année ! Mes Téléchargements ne marchent plus !

Envoyé par : Paul Rouget

Date : 28/12/2007 13:44

Aucune idée, mais quand tu trouves la solution, tu nous le dis :)

# Re: Le mystère de l'année ! Mes Téléchargements ne marchent plus !

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.