2013-01-24 47 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的权限。

相关问题