IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

C# Discussion :

Compression ZIP sous Windows CE


Sujet :

C#

  1. #1
    Membre habitué
    Homme Profil pro
    Inscrit en
    Juillet 2007
    Messages
    153
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Royaume-Uni

    Informations professionnelles :
    Secteur : Finance

    Informations forums :
    Inscription : Juillet 2007
    Messages : 153
    Points : 161
    Points
    161
    Par défaut Compression ZIP sous Windows CE
    Bonjour, voilà mon problème.

    Je suis en train de développer une application qui stocke des données, puis les envoie sur un serveur via FTP. Donc, j'ai une procédure qui génère une archive contenant mes données, puis je les envoie, puis une autre application traite le fichier ZIP et ainsi les données.

    Le souci, c'est que l'application a été développé avec la librairie ZLIB, et moi, j'ai utilisé #ZipLib, et étrangement, lorsque j'envoie mon fichier, l'application du serveur n'arrive pas à ouvrir le ZIP. Pourtant, avec Windows, je peux l'ouvrir, le fichier semble fonctionner.

    J'ai donc fait un programme de test, en utilisant ZipForge (qui utilise ZLib.dll), et en effet, lorsque je compresse un fichier avec #ZipLib, impossible de l'ouvrir avec l'algorithme de ZipForge.

    Malheureusement, je n'ai pas réussi à trouver de version compatible de ZipForge sous Windows CE 5.0. Et donc, actuellement, je suis à la recherche d'un algorithme de ZIP utilisant la DLL ZLib.dll, mais sans succès... La plupart des sites proposent d'utiliser #ZipLib, ou fournissent des algorithmes permettant de compresser 1 seul fichier, et non plusieurs.

    Quelqu'un aurait-il un algo tout fais sous la main pour zipper un répertoire avec ZLib? (ou sinon, m'expliquer comment intéger plusieurs fichiers dans un Zip avec cette librairie)

    Merci d'avance

  2. #2
    Expert éminent
    Avatar de smyley
    Profil pro
    Inscrit en
    Juin 2003
    Messages
    6 270
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2003
    Messages : 6 270
    Points : 8 344
    Points
    8 344
    Par défaut
    Peut être que ceci pourra t'aider. Si j'ai bien compris, ça utilise la zlib :
    http://www.codeproject.com/KB/files/sharpzlib.aspx

  3. #3
    Membre habitué
    Homme Profil pro
    Inscrit en
    Juillet 2007
    Messages
    153
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Royaume-Uni

    Informations professionnelles :
    Secteur : Finance

    Informations forums :
    Inscription : Juillet 2007
    Messages : 153
    Points : 161
    Points
    161
    Par défaut
    Merci

    Je fais quelques tests et je vous tiens au courant.

  4. #4
    Membre habitué
    Homme Profil pro
    Inscrit en
    Juillet 2007
    Messages
    153
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Royaume-Uni

    Informations professionnelles :
    Secteur : Finance

    Informations forums :
    Inscription : Juillet 2007
    Messages : 153
    Points : 161
    Points
    161
    Par défaut
    Me revoila !

    Alors, j'ai pris ce code source, et je l'ai adapté à mon besoin. Sur mon ordinateur, cela fonctionne très bien. Il génère une archive correctement, et elle est utilisable par mon programme serveur. Par contre, je n'arrive pas à l'intégrer sur Windows CE.
    Lorsque je copie les fichiers dans mon programme WinCE, il y a un certain nombre d'erreur de compilation. J'ai tenté de les résoudre comme j'ai pu, mais une d'entre elle me pose problème :
    Au moment de l'importation de la DLL, j'ai comme ligne de code sur PC :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    [DllImport("zlib.dll", ExactSpelling=true, CharSet=CharSet.Ansi)]
    et sur Windows CE, déjà le paramètre ExactSpelling n'existe pas, et de plus, la classe CharSet ne possède pas le code Ansi... Je l'ai remplacé par
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    [DllImport( "zlib.dll", CharSet=CharSet.Auto)]
    Mais lors de l'execution, j'ai une Exception qui dit
    Can't find an Entry Point 'zipOpn' in PInvoke DLL 'zlib.dll'
    Une idée?

  5. #5
    Expert éminent
    Avatar de smyley
    Profil pro
    Inscrit en
    Juin 2003
    Messages
    6 270
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2003
    Messages : 6 270
    Points : 8 344
    Points
    8 344
    Par défaut
    Faudrait voir comment cette fonction est déclarée en C/C++ (fichier .h de la zlib). C'est peut être là le problème ...
    Ou alors recompiler la zlib pour Windows CE ...

  6. #6
    Membre habitué
    Homme Profil pro
    Inscrit en
    Juillet 2007
    Messages
    153
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Royaume-Uni

    Informations professionnelles :
    Secteur : Finance

    Informations forums :
    Inscription : Juillet 2007
    Messages : 153
    Points : 161
    Points
    161
    Par défaut
    Bon, j'ai tenté de retourner le problème dans tous les sens, mes connaissances dans le domaine sont trop limitées.

    J'ai essayé de regarder dans la librairie. Le seul nom de fonction qui ressemble à open est gzopen, pourtant, la fonction déclaré dans le code est ZipOpen.

    Je pense que je vais changer d'optique et passer par un script batch. Et donc pour cela, quelqu'un connaitrais un executable utilisable en console pour zipper ou dézipper sous Windows CE ? (j'ai trouvé 7z.exe sur PC, mais pas sur pocketPC)

  7. #7
    Expert éminent
    Avatar de smyley
    Profil pro
    Inscrit en
    Juin 2003
    Messages
    6 270
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2003
    Messages : 6 270
    Points : 8 344
    Points
    8 344

  8. #8
    Membre habitué
    Homme Profil pro
    Inscrit en
    Juillet 2007
    Messages
    153
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Royaume-Uni

    Informations professionnelles :
    Secteur : Finance

    Informations forums :
    Inscription : Juillet 2007
    Messages : 153
    Points : 161
    Points
    161
    Par défaut
    Me revoilà...

    Bon, et bien j'ai fini par trouver le fin mot de l'histoire :

    La librairie ZLib ne peut traiter des fichiers de trop grosses tailles (2Go). La librairie SharpZipLib a répondu à ce problème, et donc les entêtes des fichiers dans le Zip sont différentes d'une librairie à une autre, d'où l'incompatibilité.

    La solution était toute simple :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    ZipOutputStream zos = new ZipOutputStream(File.Create(nomarchive));
     
    //Permet d'utiliser des entêtes de fichier codé sur 32bits et non 64bits
    zos.UseZip64 = UseZip64.Off
    Cette fonction permet la compatibilité entre les 2 librairies, mais est limité comme ZLib.

    Merci à tous

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Bizarre de problème 7-zip sous Windows 7 Home Premium 64 bits
    Par annedeblois dans le forum Windows 7
    Réponses: 5
    Dernier message: 14/05/2010, 02h37
  2. [C]Modifier un fichier .zip sous Windows
    Par Kicker dans le forum Windows
    Réponses: 14
    Dernier message: 05/08/2008, 15h48
  3. Compresser *.tar.gz en .zip sous windows
    Par 18Marie dans le forum Autres Logiciels
    Réponses: 3
    Dernier message: 06/07/2006, 15h03
  4. Compression des dump Oracle sous windows
    Par thomasjcj dans le forum Oracle
    Réponses: 5
    Dernier message: 28/10/2005, 14h06
  5. problem de compression(zip) d'un fichier sur windows.
    Par timsah dans le forum Autres Logiciels
    Réponses: 14
    Dernier message: 25/10/2005, 13h21

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo