Hallo allerseits,
ich habe eine Frage zur Verwendung des SevenZipSharp Unpacker (http://sevenzipsharp.codeplex.com/).
Mein Code sieht folgendermaßen aus:
using SevenZip;
using System.IO;
......
if (openFileDialog1.ShowDialog() == DialogResult.OK)
{
SevenZipExtractor.SetLibraryPath(@"C:\Users\Andi-PC\Desktop\SevenZipSharp.dll");
string rarFile = openFileDialog1.FileName;
string destination = "Output";
SevenZipExtractor extractor = new SevenZipExtractor(rarFile);
if (!Directory.Exists(destination))
Directory.CreateDirectory(destination);
extractor.ExtractArchive(destination);
extractor.Dispose();
}
Fehler (bei der Ausführung nach der Auswahl eines Beispiel RAR Archives):
Fehlermeldung:
Can not load 7-zip library or internal COM error! Message: library is invalid.
Hatte jemand dieses Problem schonmal ? Ein Verweis zur DLL ist vorhanden, er findet sie ja auch schließlich. Die DLL ist die normale von der oben angegebenen Seite.
Vielen Dank schonmal!
Die Benamsung deiner variable lässt darauf schliessen das Du ein rar file liest. rar != 7zip
Wenn ich das richtig verstanden habe, dann musst du in SetLibraryPath den Pfad zu der 7-zip dll angeben. Die SevenZipSharp dll musst du ja ohnehin schon referenziert haben, sonst würdest du die Typen (z.B. SevenZipExtractor) ja gar nicht kennen.
7z.dll : Message: failed to load library.
7-zip.dll : same
Normalerweise sollte damit auch rar funktionieren.
Ja, RAR sollte schon funktionieren. Schonmal im Netz nach dem Fehler gesucht?
Das sieht ganz passend aus: How would i use Sevenzipsharp with this code?
Die DLL (7z.dll) findet er definitiv, da wenn er sie nicht findet eine andere Fehlermeldung kommt.
Der 2. Hinweis der Seite sagt ich bräuchte eine 64 bit Version, nach einigem Googlen konnte ich die aber nicht finden, sicher dass sie heute noch verwendet wird ?!
Ebenfalls hab ich mal probiert das Programm unter AnyCPU, x86 und x64 zu testen, ohne Erfolg.
Hallo,
also bei mir funktioniert es einwandfrei:
var filename = @"F:\tmp\test.zip";
SevenZip.SevenZipCompressor.SetLibraryPath(@"C:\Program Files\7-Zip\7z.dll");
var extractor = new SevenZipExtractor(filename);
extractor.ExtractArchive(@"F:\tmp");
extractor.Dispose();
Ich habe 7-zip in der 64-bit version installiert und wenn ich in VS als Target auch 64-bit wähle, dann passt alles. Wenn ich allerdings AnyCpu wähle, bekomme ich die gleiche Meldung wie du.
Sprich: Stell sicher, dass deine platformen zusammen passen.
Danke!
Du hast mich darauf gebracht mal zu überprüfen, welches 7Zip ich installiert habe, und das war die 32 bit Version. Mit x64 Version + x64 beim Projekt klappt's.
Vielen Dank!