je programme actuellement une application pour la quelle j'aurais
besoin de sauvegarder plusieurs fichiers produits par cette application
(fichiers XML, TXT...) dans une archive. L'objectif c'est ensuite de
faire de ce fichier une extension particuliére de ce programme.
Reconnue qui aprés serrait ouvert par ce programme. Un peu à la
OpenOffice.
La question est donc comment faire?
J'ai vu qu'il existé un package pour manipuler du zip. Mais si mes
souvenirs sont correcte zip n'est pas un format libre (or l'application
serras publiée sous GPL ce qui risque de poser un probléme). Enfin ou
decompresser le zip pour acceder aux fichiers?
J'aimerais enfaite une méthode qui me permette d'ouvrir les fichiers
qui sont à l'interieur de l'archive. Pouvoir donc utiliser une
commande du genre : set id [open $n_fic { WRONLY TRUNC }] mais avec les
fichiers à l'interieur de l'archive. Est-ce possible?
Merci d'avance.
> Bonjour,
>
> je programme actuellement une application pour la quelle j'aurais
> besoin de sauvegarder plusieurs fichiers produits par cette application
> (fichiers XML, TXT...) dans une archive. L'objectif c'est ensuite de
Bonjour,
Je pense que la solution à ton problème, c'est Metakit
et le système de fichiers virtuel vfs.
(voir http://www.equi4.com/)
Un vfs Metakit permet de stocker des fichiers dans une
sorte d'archive, tu peux lire, écrire, etc... des fichiers dedans.
Je suis désolé, je n'ai aucun exemple de code pour ça,
mais les starkits sont un bon exemple d'application, et ça fonctionne.
Quand à l'association de fichiers, il y a sûrement
des experts Windows qui pourront te conseiller une extension
qui fait ça. (registry?)
Cordialement,
Stéphane
> Bonjour,
>
> je programme actuellement une application pour la quelle j'aurais
> besoin de sauvegarder plusieurs fichiers produits par cette application
> (fichiers XML, TXT...) dans une archive. L'objectif c'est ensuite de
> faire de ce fichier une extension particuliére de ce programme.
> Reconnue qui aprés serrait ouvert par ce programme. Un peu à la
> OpenOffice.
>
> La question est donc comment faire?
La solution évidente en Tcl est d'utiliser Metakit et plus
particulièrement Mk4tcl : http://www.equi4.com/metakit/tcl.html
> J'ai vu qu'il existé un package pour manipuler du zip. Mais si mes
> souvenirs sont correcte zip n'est pas un format libre (or l'application
> serras publiée sous GPL ce qui risque de poser un probléme). Enfin ou
> decompresser le zip pour acceder aux fichiers?
Il ne faut pas confondre le format de fichier Zip écrit par Phil Katz
pour PKZIP avec les algorithmes de (dé)compression Zip. Le format de
fichier est propriétaire, certains algorithmes également, mais il
existe des algorithmes libres et rien n'interdit de créer ou modifier
des fichiers ZIP avec.
Zlib (http://www.zlib.net) est un exemple d'implémentation libre et
Open Source.
Quant à la GPL, elle est, selon moi, plus virale que libre : la
licence BSD (ou NOL) c'est mieux ;-)
--
David Zolli - Kroc
En attendant je vais essayer de faire mon truc avec le metakit, mais
cela à l'air compliqué :-(
Je vous raconterais tout cela !!
> Merci pour ces conseils. Pour la licence on va attendre que le logiciel
> soit a peu prés diffusable.
>
> En attendant je vais essayer de faire mon truc avec le metakit, mais
> cela à l'air compliqué :-(
Mais non, c'est vraiment tout simple en fait :
# Création d'un fichier .kit vide :
set vide [open truc.kit w] ; close $vide
# Montage avec mk4vfs :
package require mk4vfs
set canal [vfs::mk4::Mount truc.kit truc.kit]
# Copie de fichier dans le .kit :
file copy -force ~/Pictures/kroc.png truc.kit
set fout [open truc.kit/readme.txt w]
puts $fout "Nothing interesting to write."
close $fout
# Contrôle du contenu :
glob -nocomplain truc.kit/*
# Démontage :
vfs::mk4::Unmount $canal truc.kit
Tu peux également contrôler le contenu avec "sdx unwrap truc.kit".
Nota Bene :
Le package mk4fs en inclue dans tous les tclkits et pour les tclsh/wish
classiques voir tclVFS : http://wfr.tcl.tk/TclVFS
Petite précision sur l'extension. J'ai crée une extension (enfin en
espérant qu'elle n'existe pas dans un autre programme). Cela permet de
definir l'ouverture de mon programme lorsqu'on double-clique sur un tel
fichier (sous windows du moins).
Merci pour votre grande réactivité !