1

Javaプロジェクト用にnsisスクリプトを正常にビルドしました。NSISインストーラー内で実行する必要のあるバッチファイルがあります。すべてのファイルが抽出された後に実行する必要があります。次のコマンドを試しました。

!define MUI_FINISHPAGE_RUN $INSTDIR\bin\batch.bat

これも試しました:

SetOutPath $INSTDIR
ExpandEnvStrings $0 %COMSPEC%
nsExec::ExecToStack '"$INSTDIR\batch.bat"'

このリンクを参照しました。

私の要件は次のとおりです。

1.Nsisスクリプトを使用してインストール完了後にバッチファイルを開始するにはどうすればよいですか?

4

1 に答える 1

1

結果を使用しないのに、なぜExpandEnvStringsを呼び出すのですか?2つの例では、パスが一致していません。

パスと引用符が正しい限り、それは機能するはずです。

!include MUI2.nsh
!insertmacro MUI_PAGE_INSTFILES
!define MUI_FINISHPAGE_RUN
!define MUI_FINISHPAGE_RUN_FUNCTION RunBatch
!insertmacro MUI_PAGE_FINISH
!insertmacro MUI_LANGUAGE English

Function RunBatch
;The most basic version, runs with visible console:
ExecWait '"$temp\test.cmd" /foo "bar baz" /blergh'

;You must use cmd.exe if you want redirection (With stupid extra quotes for cmd.exe):
ExpandEnvStrings $0 %COMSPEC%
ExecWait '"$0" /C ""$temp\test.cmd" /foo "bar baz" /blergh > "$temp\stdout.txt""'

;Use one of the exec plugins if you want to hide the console:
nsExec::Exec '"$temp\test.cmd" /foo "bar baz" /blergh'
FunctionEnd

ニーズに応じて使用できるいくつかのexecプラグインがあります:nsExecExecDos またはExecCmd

于 2012-10-17T13:36:19.177 に答える