1

Winrar 3 を使用して自己エクストラクターを作成し、-spフラグを使用して、内部にバンドルされている実行可能ファイルに引数を渡しました。正常に動作していました。WinRar を にアップデートしたら5.1、動作しなくなりました。-sp<>フラグが機能しなくなりました。

他の誰かが同様の問題に直面していますか? 自己抽出プログラムによって呼び出される実行可能ファイルにパラメーターを渡すために使用できる他のフラグはありますか。使用可能なフラグに関する次のドキュメントを読みました。 http://www.winrar-tr.com/winrar/Help/ENG/html/HELPGUISFXCmd.htm

4

1 に答える 1

3

実行可能ファイルのパラメーターは、SFX モジュールのパラメーターと共にコメント ファイルで直接指定できます。

この手法を示すバッチ ファイルの例を次に示します。

@echo off
cd /D "%TEMP%"

rem Create the file for the SFX module with the SFX options.

echo ;The comment below contains SFX script commands.>TestSetup.txt
echo.>>TestSetup.txt
echo Setup=Test.bat Switch "One more parameter">>TestSetup.txt
echo Overwrite=1>>TestSetup.txt
echo Title=Test Installation>>TestSetup.txt
echo Text>>TestSetup.txt
echo {>>TestSetup.txt
echo ^<font face='Arial'^>An SFX test which just shows how SFX module runs the installer.^<br^>^<br^>Just click on button Install or hit RETURN.^</font^>>>TestSetup.txt
echo }>>TestSetup.txt

rem Create the batch file executed by SFX archive.

echo @echo %%0 %%*>Test.bat
echo @pause>>Test.bat
echo @del %%0 ^>nul>>Test.bat

rem Create the SFX archive.

RAR.exe a -sfx -c -zTestSetup.txt TestSetup.exe Test.bat

rem Delete the created batch and comment file.

del Test.bat
del TestSetup.txt

rem Run the self-extracting archive. User has to press only RETURN.

start /wait TestSetup.exe

rem Delete the self-extracting archive.

:DeleteLoop
del TestSetup.exe >nul
if exist TestSetup.exe goto DeleteLoop

このバッチ ファイルは、最初に次の内容のテキスト ファイルTestSetup.txtを一時ファイル用のディレクトリに作成します。

;The comment below contains SFX script commands.

Setup=Test.bat Switch "One more parameter"
Overwrite=
Title=Test Installation
Text
{
<font face='Arial'>An SFX test which just shows how SFX module runs the installer.<br><br>Just click on button Install or hit RETURN.</font>
}

あなたにとって重要なのは、 で始まる行Setup=です。

  • Test.bat抽出後に実行するファイルです。
  • Switchに最初のパラメータとして渡すオプションTest.batです。
  • "One more parameter"Test.batは、スペースがあるため二重引用符で囲む必要がある渡される内部にスペースを含む 2 番目のパラメーターです。

次に、バッチ ファイルは、コンテンツを含む Test.batの作成を続行します。

@echo %0 %*
@pause
@del %0 >nul

この小さなバッチ ファイルは、SFX アーカイブによってどのように呼び出されたかを最初の行で出力するだけで、次にユーザーがキーを押すのを待って、最後に自分自身を削除します。したがって、バッチ ファイルがどのディレクトリに抽出されるかは問題ではありません。デフォルトは、一時ファイルのディレクトリである現在のディレクトリです。

次に、バッチ ファイルによって SFX アーカイブTestSetup.exeが作成されます。使用するスイッチの詳細については、 WinRARのプログラム ファイル ディレクトリにあるRar.txtを参照してください。

の行は、 WinRARRar.exeのプログラム ファイル ディレクトリが環境変数PATHに含まれている場合、または Windows がWinRARのコンソール バージョンを検出できない場合にのみ、変更なしで機能することに注意してください。二重引用符で囲まれた完全なパスを含む行を変更して、バッチ ファイルのこの行がPATHに含まれるディレクトリとは無関係に機能するようにします。Rar.exeRar.exe

SFX RAR アーカイブが作成された後、ファイルTest.batおよびTestSetup.txtは不要になったため削除されます。

作成された SFX アーカイブTestSetup.exeが呼び出され、RETURN キーを押すと、 TestSetup.txt で指定された 2 つのパラメーターを使用して Test.bat が呼び出されることわかります

バッチファイルは、作成した SFX アーカイブも最後に削除します。

于 2014-07-04T10:29:39.370 に答える