2011-11-03 26 views
5

Potrzebuję użyć 7zip w C#. Bez konsoli, tylko z 7zSharp.dll? + znajdę jakieś dane tutajextract 7zip w C# code

http://7zsharp.codeplex.com/releases/view/10305,

ale nie wiem jak go używać (- Mógłbym stworzyć .bat (cmd) pliku, ale muszę bezpo¶rednio dll) Dokładnie: Potrzebuję wyodrębnić plik .7z z kluczem)

+0

byłaś już próbował [DotNetZip] (http://dotnetzip.codeplex.com/)? – Oliver

+1

Czy to obsługuje 7z? – CodesInChaos

+0

http://dotnetzip.codeplex.com/workitem/14034 –

Odpowiedz

0

Nie wygląda na to, że biblioteka obsługuje zaszyfrowane pliki. Żadna metoda nie bierze klucza jako parametru.

+0

... i jak mogę wyodrębnić plik .7z za pomocą klucza? –

+0

nie z tą biblioteką ... Można po prostu użyć System.Diagnostics, aby rozpocząć proces konsoli, ale widząc, że nie chcesz tego zrobić ... Zacznij czytać SDK :) –

0

Biblioteka 7zSharp wydaje się nie obsługiwać hasła jako wejścia, tylko plik zip.

Biblioteka po prostu wywołuje plik .exe z 7zip, więc możesz pobrać źródło i zmienić je, aby zaakceptować parametr hasła, który następnie przekazujesz do pliku wykonywalnego.

+1

Tak, to świetnie, właśnie wyjaśniłem, jak możesz to zrobić. Nie zamierzam pisać dla ciebie kodu. – CodeCaster

+0

Nie potrzebuję od ciebie kodu! Mogę to zrobić! Dziękuję za pomoc! –

5

Pobierz standalone console version from 7zip.com i dodaj go do swojego projektu.

Musisz te 3 Plików w projekcie:

  1. 7za.exe
  2. 7za.dll
  3. 7zxa.dll

Nie zapomnij powiedzieć Kopiuj do wyjścia Katalog w swoich preferencjach.

Rozpakuj archiwum:

public void ExtractFile(string sourceArchive, string destination) 
    { 
     string zPath = "7za.exe"; //add to proj and set CopyToOuputDir 
     try 
     { 
      ProcessStartInfo pro = new ProcessStartInfo(); 
      pro.WindowStyle = ProcessWindowStyle.Hidden; 
      pro.FileName = zPath; 
      pro.Arguments = string.Format("x \"{0}\" -y -o\"{1}\"", sourceArchive, destination); 
      Process x = Process.Start(pro); 
      x.WaitForExit(); 
     } 
     catch (System.Exception Ex) { 
      //handle error 
     } 
    } 

utworzyć archiwum:

public void CreateZip(string sourceName, string targetArchive) 
{ 
    ProcessStartInfo p = new ProcessStartInfo(); 
    p.FileName = "7za.exe"; 
    p.Arguments = string.Format("a -tgzip \"{0}\" \"{1}\" -mx=9", targetArchive, sourceName); 
    p.WindowStyle = ProcessWindowStyle.Hidden; 
    Process x = Process.Start(p); 
    x.WaitForExit(); 
}