首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在提取C# - DotNetZip后运行自解压缩exe

在提取C# - DotNetZip后运行自解压缩exe
EN

Stack Overflow用户
提问于 2011-09-29 12:11:43
回答 1查看 3.6K关注 0票数 0

我正在尝试创建一个自解压缩的exe。创造它不是问题。我面临的问题是

  • 设置exe存在的提取路径
  • 运行解压缩的exe。

对于第二部分,最有可能的是,我必须有正确的提取路径。我正在使用来自DotNetZipLibrary的以下修改代码

代码语言:javascript
复制
zip.AddDirectory(DirectoryPath, "putty.exe");
zip.Comment = "This will be embedded into a self-extracting console-based exe";
SelfExtractorSaveOptions options = new SelfExtractorSaveOptions();
options.Flavor = SelfExtractorFlavor.ConsoleApplication;
options.DefaultExtractDirectory = "";
options.PostExtractCommandLine = "..\\putty.exe";
options.RemoveUnpackedFilesAfterExecute = true;
zip.SaveSelfExtractor("archive.exe", options);
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2011-10-04 15:30:55

我看到了两个问题。

首先,你要打电话

代码语言:javascript
复制
zip.AddDirectory(DirectoryPath, "putty.exe");

AddDirectory()方法将一个目录添加到zip存档中。接受2个输入(您正在使用的输入)的重载用第二个参数来命名zip归档中的目录。因此,在进行此调用之后,您将在zip存档中拥有所有可以在您的文件系统上的DirectoryPath中找到的文件。压缩存档中使用的根目录名将是"putty.exe“。这至少是一个令人困惑的目录名称。我想你可能不是有意这么做的。

如果要向归档文件添加文件,请使用AddFile(),而不是使用AddDirectory()。

第二,根据文献资料,将运行后置提取命令。

...using提取目录作为进程的工作目录,

因此,如果您的zip在归档根目录中有一个名为"putty.exe“的文件,那么要运行的命令可能是"putty.exe",而不是"..\putty.exe”。

我建议在开发期间,您可以取出保存到自解压缩器中的部分,并将其替换为保存到常规zip文件中。检查您生成的zip文件,以确保它看起来像您希望它看起来。在正确的情况下,将SaveSelfExtractor()部分放回其中,您将得到一个正确的SFX。

票数 4
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/7597130

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档