3

次のオプションを指定してDotNetZipを使用して自己解凍型zipを作成しました。

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を作成するときに指定することはできません。

4

2 に答える 2

2

ソースコードを調べましたが、DotNetZipではこれが不可能なようです。ここに示されているように、私は現在7zipを使用してこれを行っています

私はこの質問も見つけました。これはWinRarで可能であると言っています。

于 2013-01-01T06:28:25.553 に答える
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
}
于 2017-07-18T18:20:46.177 に答える