Leggerre e decomprimere archivio autoestraente

lunedì 01 febbraio 2010 - 11.49

ysdemarc Profilo | Expert

Ho fino ad aggi usato la SharpZipLib per lavorare coi file compressi.

Adesso mi serve sapere come leggere ed estrarre file da un archivio autoestraente.

ho cercato un po in giro e mi sono imbattuto su un'altra libreria DotNetZip dove in un blog dicevano che era possibile leggere gli autoestraenti..allora l'ho scaricata da qui http://dotnetzip.codeplex.com/wikipage?title=CS-Examples&referringTitle=Examples

in realtà non riesco a fare nulla che già non facessi con SharpZipLib.. per l'utilizzo con autoestraenti nessuna traccia.. o meglio io non riesco a trovarle nulla....

C'è qualcuno magnanimo che mi possa dare una mano o qualche suggerimento?

A me serve controllare l'estrazione dei file dell'auto estraente..quindi mi andrebbe bene anche una soluzione dove lanciando l'autoestraente mi ritorni un codice che mi dica se è andato bene o è stato impossibile sovrascrive qualche file..

sinceramente preferirei di gran lunga gestirmelo e controllarlo io da codice..cmq.. spero in un aiuto..

ciao
Vincenzo
Programmatore sbilenco

Faelar Profilo | Junior Member

Ciao!

Non sono sicuro di aver capito quello che ti serve, ma se fai così

Dim zl As Ionic.Zip.ZipFile = Ionic.Zip.ZipFile.Read(nomeDelFile.exe)

Lui apre il file, e ti permette di leggerne il contenuto.


Poi a quel punto, ti trovi un normale file zip da gestire, e
puoi fare praticamente tutto quello che ti serve.


Spero di esserti stato utile, e se serve altro chiedi pure.

Ciao,
Luca

ysdemarc Profilo | Expert

hai capito bene..

però appena faccio la Read ho il seguente errore..

ZipEntry::ReadHeader(): Bad signature (0x00505A4D) at position 0x00000000

all'indirizzo 0x00000000 nell'autoestraente io trovo 0x4D5A50000200 mentre nello zip 0x504B03041400 per cui non capisco affatto l'errore
Vincenzo
Programmatore sbilenco

Faelar Profilo | Junior Member

Ciao

Prova con questo esempio.

C'é un form con tre tasti per creare un self extract, e per leggerne il contenuto.


Ti ho anche inserito la dll che uso.

Se hai dubbi o problemi dimmi.


Ciao.

ysdemarc Profilo | Expert

grazie mille.. ma non riesco a cavarne nulla di buono..

ho fatto queste 2 prove.

Ho creato tramite il tuo programmino di test un auto estraente.. e tutto va alla grande.

ed infatti facendo pi la "Read Header" mi spunta il bel messaggio con il contenuto dell'archivio..

poi invece ho provato a dare in pasto alla "Read Header" uno degli autoestraenti che dovrei manipolare e che sono stati creati con winrar..
ebbene all'istruzione
Ionic.Zip.ZipFile ioZip = new Ionic.Zip.ZipFile(dlg.FileName);
si imballa e resituisce il seguente errore: "C:\mioarchivio.exe is not a valid zip file"

ho notato che i byte iniziali sono diversi..

Ionic mette 4D 5A 90 00 03 00 00 mentre winrar mette 4D 5A 50 00 02 00 00 volavo fare il furbetto ed ho sostituito i byte di winrar con quelli di Ionic.. ma ci sono rimasto da fesso ..il risultato non cambia.. ho sempre il precedente errore

grazie ancora..ciao
Vincenzo
Programmatore sbilenco

Faelar Profilo | Junior Member

Questo succede perché l'algoritmo di compressione é diverso.

Se chiedi a winrar di creare l'archivio usando la codifica winzip, ti funziona. Altrimenti la libreria non va.


Dovresti allora cercarne una che permetta di gestire gli archivi rar.

Io non ho trovato nulla di buono...

In bocca al lupo.


Luca

ysdemarc Profilo | Expert

neanche io..dubito che esista qualcosa in giro..

cmq..grazie tante ugualmente

ciaooo
Vincenzo
Programmatore sbilenco
Partecipa anche tu! Registrati!
Hai bisogno di aiuto ?
Perchè non ti registri subito?

Dopo esserti registrato potrai chiedere
aiuto sul nostro Forum oppure aiutare gli altri

Consulta le Stanze disponibili.

Registrati ora !
Copyright © dotNetHell.it 2002-2017
Running on Windows Server 2008 R2 Standard, SQL Server 2012 & ASP.NET 3.5