在NSIS安装程序中执行Bat文件 - 无法正常工作

时间:2012-10-17 12:53:55

标签: nsis

我已经为我的java项目成功构建了nsis脚本。我有一个需要在我的NSIS安装程序中运行的批处理文件。它必须在所有文件都被提取后运行。我试过以下命令

!define MUI_FINISHPAGE_RUN $INSTDIR\bin\batch.bat

这个也试过了:

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

我已经提到了link

我的要求是:

1.如何使用Nsis脚本在安装完成后启动批处理文件?

1 个答案:

答案 0 :(得分:1)

如果您不打算使用结果,为什么要调用ExpandEnvStrings?在您的两个示例中,路径甚至不匹配。

只要你得到正确的路径和引号,就应该有效:

!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插件:nsExecExecDosExecCmd