2012-05-10 70 views
0

我想使用C#提取ISO,我找到了一个Winzip库,DotNetZip,并使用它,但是当我运行该项目时它说它无法提取ISO。使用WinZip/WinRar提取ISO文件夹

string activeDir = copyTo = this.folderBD.SelectedPath;; 

folderName = toExtract.Remove(toExtract.Length - 4, 4); 

Path.Combine(activeDir, Path.GetFileNameWithoutExtension(folderName)); 

string zipToUnpack = toExtract; 
string unpackDirectory = folderName; 

using (ZipFile zip1 = ZipFile.Read(zipToUnpack)) 
{ 
    // here, we extract every entry, but we could extract conditionally 
    // based on entry name, size, date, checkbox status, etc. 
    foreach (ZipEntry file in zip1) 
    { 
     file.Extract(unpackDirectory, ExtractExistingFileAction.OverwriteSilently); 
    } 
} 

这就是我正在使用的代码。 copyTofolderName是从程序中的其他方法发送的。

任何让我在ISO上使用Winzip或Winrar的库都会有很大帮助,但到目前为止,我的搜索没有任何结果。

在此先感谢

编辑: 你能只提取.rar程序或用winrar用C#.zip或可以通过文件被提取为arguement又如何?我试过

ProcessStartInfo startInfo = new ProcessStartInfo("winrar.exe"); Process.Start("winrar.exe",@"C:\file\to\be\extracted");

的ISO的位置,但它返回一个例外,没有什么解压那里。

+0

我一直能够提取ISO,只要提取它就可以创建正确的方法。什么是不工作,你确定ISO已经产生了正确的方式? –

+0

ISO确定生成正确。我尝试使用winzip,因为我找到了它的库,所以想通了它是唯一的方法,但它不会让我提取一个iso,只有一个zip – ELSheepO

+0

你问了同样的问题[Here](http://stackoverflow.com/ q/10579964/1118933)也!和[答案是这样的!](http://stackoverflow.com/a/10580489/1118933) – Writwick

回答

1

你可以使用Process.Start从c#执行winrar,并传递你需要的参数来提取iso。

+0

我不需要导入任何库? – ELSheepO

+1

@ELSheepO:否 - 但您必须确保WinRar存在于您运行代码的机器上 –

+0

您可以给我一个关于您使用的代码的粗略代码吗?我尝试了Process.Start(winrar,copyTo,foldername);但是,你可以猜测它不起作用。我使用的是system.diagostics,所以我得到了很多:P – ELSheepO