2011-11-03 57 views
5

我需要在C#中使用7zip。沒有控制檯,只用7zSharp.dll? +我發現這裏的一些數據在C#中提取7zip代碼

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

,但我不知道如何使用它( - 我可以創建.BAT(.CMD)文件,但我需要throught dll文件) 正是:我需要用鍵提取.7z文件)

+0

你是否已經嘗試過[DotNetZip(http://dotnetzip.codeplex.com/)? – Oliver

+1

這是否支持7z? – CodesInChaos

+0

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

回答

0

它看起來不像這個庫支持加密文件。沒有方法將鍵作爲參數。

+0

...以及如何使用密鑰提取.7z文件? –

+0

沒有這個lib ...你可以使用System.Diagnostics來啓動一個控制檯進程,但看到你不想這麼做...開始閱讀SDK :) –

0

7zSharp庫似乎不支持密碼作爲輸入,只是一個zip文件。

該庫只是調用7zip的.exe文件,因此您可以禁用源代碼並將其更改爲接受密碼參數,然後將其傳遞給可執行文件。

+1

是的,這很好,我只是解釋瞭如何你可以做到這一點。我不會爲你寫代碼。 – CodeCaster

+0

我不需要你的代碼!我能做到!感謝您的幫助! –

5

下載standalone console version from 7zip.com並將其添加到您的項目中。

你需要這些3個文件的項目補充說:

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

不要忘了複製說輸出目錄中的首選項。

提取檔案:

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 
     } 
    } 

創建存檔:

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(); 
}