我使用DotNetZip创建了一个自解压缩文件,其中包含以下选项:
var opts = new SelfExtractorSaveOptions();
opts.RemoveUnpackedFilesAfterExecute = true;
opts.PostExtractCommandLine = "TestApp.exe";
opts.Flavor = SelfExtractorFlavor.ConsoleApplication;
zip1.SaveSelfExtractor("TestAppSFX.exe", opts);
是否可以将命令行参数传递给我的自解压缩zip,然后将其传递给解压缩后调用的控制台应用程序?
即,我希望能够输入如下内容:
TestAppSFX.exe -flag
然后,我的控制台应用程序TestApp.exe
将收到-flag
作为参数。
这些参数会因使用情况而有所不同,因此在创建SFX时指定它们不是一种选择。
答案 0 :(得分:2)
答案 1 :(得分:2)
是的,您可以使用DotNetZip传递标记,但您需要做一些工作。
您需要下载源代码并修改CommandLineSelfExtractorStub.cs以接受您自己的自定义参数。完成后,您可以将其构建为新的存根exe。
要构建您的SFX,您可以执行以下操作......
byte[] stub = GetStubExecutable(); //read in your new stub file
output.Write(stub, 0, stub.Length);
using (ZipFile zip = new ZipFile())
{
String[] filenames = System.IO.Directory.GetFiles(Path.Combine(path,FilesFolder));
// Add the rest of they files you'd like in your SFX
foreach (String filename in filenames)
{
ZipEntry e = zip.AddFile(filename, OutputZipFolder);
}
zip.Save(output); // save the zip to the outputstream
}