-1

这可能是一个简单的问题...我正在尝试提取或解压缩 exe 文件。我尝试使用 winzip 手动解压缩我的 exe 文件,它提取了许多.mst, .cam, .exe files in a folder cache-2012.1.2.702-win_x64我想通过使用 c# 以编程方式执行此操作的内容。

我从这个链接得到这个示例代码:http ://dotnetzip.codeplex.com/wikipage?title=CS-Examples&referringTitle=Examples

任何人都可以提供一些代码来提取或解压缩 exe 文件,然后我想从提取的文件中启动特定的 exe( cache_x86.msi) 文件。

下面制作了一个 zip 文件,它没有提取 .exe 文件。

var sfxFileToCreate = @"D:\2012.1.2.702\64\cache-2012.1.2.702-win_x64.exe";
            using (var zip = new ZipFile())
            {
                var filesToAdd = System.IO.Directory.GetFiles(".", "*.cs");
                zip.AddFiles(filesToAdd, "");
                var sfxOptions = new SelfExtractorSaveOptions
                {
                    Flavor = SelfExtractorFlavor.WinFormsApplication,
                    Quiet = false,
                    Copyright = "(c) 2011 Test",
                    Description = "This is a test",
                    SfxExeWindowTitle = "My SFX Window title" 
                };
                zip.SaveSelfExtractor(sfxFileToCreate, sfxOptions);
            }
4

2 回答 2

2

我建议使用 7zip.exe 控制台应用程序。您可以使用 Process 类启动它。

[编辑]

这是教程: http: //www.dotnetperls.com/7-zip-examples

于 2012-07-26T07:28:31.253 回答
1
    output = StartProcessing("MySelfExtractExeFile.exe", " /auto " + sOutputFilePath);

    private string StartProcessing(string sProcessingFile, string Arguments)
    {
        try
        {
            Process p = new Process();
            p.StartInfo.FileName = sProcessingFile;// "cmd.exe";
            p.StartInfo.Arguments = Arguments;// " /auto " + sOutputFilePath;

            p.StartInfo.RedirectStandardOutput = true;
            p.StartInfo.UseShellExecute = false;
            //make the window Hidden 
            p.StartInfo.WindowStyle = ProcessWindowStyle.Hidden;
            p.Start();
            string output = p.StandardOutput.ReadToEnd();
            p.WaitForExit();
            return output;
        }
        catch (Exception ex)
        {

            return ex            
        }
    }
于 2013-02-18T06:07:58.643 回答