Forums : Xul, Xbl, JS...

Aller à la discussion :  Plus récente Plus ancienne

# [Résolu] Utilisation de ZipWriter avec XulRunner 1.9...

Envoyé par : Raphael

Date : 21/04/2008 15:08

Bonjour, j'essaie d'utiliser le nouveau joujou disponible avec FF 3 et XF 1.9, à savoir le ZipWriter qui devrait permettre de créer une archive au format .zip.

J'ai suivi cet article : http://developer.mozilla.org/en/docs/nsI(..)

Notamment le dernier paragraphe : http://developer.mozilla.org/en/docs/nsI(..)

Voici mon code :

	var Export_File = fp.file;
	var Export_Date = getFormatedDate();
	Export_File.append("ycddev-"+Export_Date+".zip");
	// On récupère la Base YCD en cours de développement
	var Database_File = Components.classes["@mozilla.org/file/directory_service;1"].getService(Components.interfaces.nsIProperties).get("ProfD", Components.interfaces.nsILocalFile);
	Database_File.append("data");
	Database_File.append("databases");
	Database_File.append("database_dev.ycd");
	// Initialisation du Composant "ZIP"
	var zipWriter = Components.Constructor("@mozilla.org/zipwriter;1", "nsIZipWriter");
	var zipW = new zipWriter();
	// Création de l'archive .zip
try {
	zipW.open(Export_File.path, 0x04 | 0x08 | 0x20);
}catch(e) { alert(e); }
	zipW.addEntryFile("", Components.interfaces.nsIZipWriter.COMPRESSION_DEFAULT, Database_File, false);
	zipW.close();

J'ai une erreur :

[Exception..."Could not convert Javascript argument arg0 [nsIZipWriter.open]" nsresult: "0x80570009 (NS_ERROR_XPC_BAD_CONVERT_JS)" location: "JS frame :: chrome://ylife/content/modules/preferences/libs/preferences_actions.js :: exportYcdDev :: line 152" data : no]

Voilà... est-ce parce que la méthode indiquée est pour ajouter un fichier à une archive sous-entendue existante ? Alors que dans mon cas, l'archive n'existe pas encore et que je veux la créer ? Si oui, comment faire ?

Merci d'avance =)

# Re: Utilisation de ZipWriter avec XulRunner 1.9...

Envoyé par : David Marteau

Date : 21/04/2008 19:39

Non, c'est simplement que ton 1er argument de open n'est pas bon Le premier argument doit être un nsIFile, cf nsIZipWriter.idl

Dans ton cas c'est 'Export_File' et non pas 'Export_File.path' qu'il faut y utiliser.

# Re: Utilisation de ZipWriter avec XulRunner 1.9...

Envoyé par : Raphael

Date : 22/04/2008 13:48

Merci beaucoup, effectivement ça résout l'erreur... MDC a donc un mauvais code non ? Il faudrait modifier... ?

Sinon, souci : Ca me créé un .zip dont la taille à l'air correcte puisque de 366 Ko (en manuel, ça me fait aussi un zip de 366 Ko) mais lorsque je l'ouvre, il n'y a rien à l'intérieur... Quand je veux extraire, j'ai une erreur :

mapname:  conversion of  failed

Je suis sous Ubuntu 6.10

Une idée du problème ?

# Re: Utilisation de ZipWriter avec XulRunner 1.9...

Envoyé par : Raphael

Date : 07/05/2008 19:46

Un petit Up ?

Personne n'a encore fait mumuse avec le ZipWriter ?

# Re: Utilisation de ZipWriter avec XulRunner 1.9...

Envoyé par : thefab

Date : 08/05/2008 09:29

Et si tu l'ouvres avec un autre programme ça marche ?

Met le code qui génère l'erreur sans ça c'est difficile de t'aider.

# Re: Utilisation de ZipWriter avec XulRunner 1.9...

Envoyé par : Raphael

Date : 08/05/2008 10:50

Bien je ne crois pas que mon code JS provoque d'erreur puisque :

		// Initialisation du Composant "ZIP"
	var zipWriter = Components.Constructor("@mozilla.org/zipwriter;1", "nsIZipWriter");
	var zipW = new zipWriter();
	// Création de l'archive .zip
try {
	zipW.open(Export_File, 0x04 | 0x08 | 0x20);
	zipW.addEntryFile("", Components.interfaces.nsIZipWriter.COMPRESSION_DEFAULT, Database_File, false);
	zipW.close();
}catch(e) { alert(e); }

Ne provoque aucune erreur... et j'ai bien un fichier .zip qui fait a priori la bonne taille.

Mais lorsque je l'ouvre sous Ubuntu Hardy 8.04 (File roller 2.22 qui marche bien a priori), ben c'est vide.

Quand je veux extraire le contenu, la ligne de commande me retourne l'erreur :

mapname:  conversion of  failed

Je ne sais pas quoi dire d'autre... ?

# Re: Utilisation de ZipWriter avec XulRunner 1.9...

Envoyé par : Raphael

Date : 14/05/2008 18:57

Oh le boulet... Je viens de comprendre que le "Path/For/This/File/In/Zip Archive" de addEntryFile() comprenait aussi le nom du fichier.

En fait, j'utilisais un champ vide car je voulais placer le fichier à la racine... Ce qui me créait en fait un fichier invisible et indécompressable...

En mettant un nom de fichier, ça va de suite mieux =)

# Re: [Résolu] Utilisation de ZipWriter avec XulRunner 1.9...

Envoyé par : thefab

Date : 15/05/2008 22:44

Bien joué... Alors bientôt un gestionnaire d'archives en XUL :-)

J'ai essayer mais j'avais le même comportement que toi.

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.