2013-01-24 153 views
3

我試圖使用7-Zip壓縮作爲例子 http://www.dotnetperls.com/7-zip 作爲URL給創建示例文件的ZIP說,「你必須指定」如果複製更新「或」始終複製「將可執行文件等文件複製到輸出目錄。」7-zip壓縮

我發現,當我在VS項目使用此代碼,我得到指定「複製,如果新」當我看到在屬性窗口

7za.exe的屬性選項,但我在使用一個VS網站,我無法找到這個選項。其結果是,當我調試這個程序時,它說,它無法找到7za.exe

string sourceName = "pdfSample.pdf"; 
string targetName = "pdfSample.gz"; 

ProcessStartInfo p = new ProcessStartInfo(); 
p.FileName = "7za.exe"; 

p.Arguments = "a -tgzip \"" + targetName + "\" \"" + sourceName + "\" -mx=9"; 
p.WindowStyle = ProcessWindowStyle.Hidden; 

try 
{ 
    Process x = Process.Start(p); 
    x.WaitForExit(); 
} 
catch (Exception ex) 
{ 
    Console.Write(ex.ToString()); 
} 

任何想法,爲什麼沒有選擇在VS的網站的情況下,「如果新的複製」?

謝謝!

+2

是否有特定的7zip需求?我發現在dotnet 4.5中的zip庫非常容易。否則,我會在4.5之前使用sharpziplib。 – tgolisch

+1

已經發現7zip可以達到更好的壓縮效果,即dotnet zip庫 –

+1

除非您有非常特殊的需求,否則使用System.IO.Compression會簡單得多。此外,如果你真的需要更好的壓縮,並且你願意調用一個exe,爲什麼不使用.7z格式?這會給你額外的一些額外的壓縮。 –

回答

1

就我個人而言,我絕對不敢從ASP.NET應用程序中啓動一個新進程。

原因是我不知道該進程是否可能顯示某些窗口或執行其他操作,如單實例。

如果我不得不解決您的需求,我會use a class library to work with 7zip files

2

您需要包含7za.exe的路徑。請記住,該網頁正在匿名用戶或應用程序池的帳戶下運行。這些帳戶還需要具有7zip路徑和exe的權限。

相關問題