我已经为我的java项目成功构建了nsis脚本。我有一个需要在我的NSIS安装程序中运行的批处理文件。它必须在所有文件都被提取后运行。我试过以下命令
!define MUI_FINISHPAGE_RUN $INSTDIR\bin\batch.bat
这个也试过了:
SetOutPath $INSTDIR
ExpandEnvStrings $0 %COMSPEC%
nsExec::ExecToStack '"$INSTDIR\batch.bat"'
我已经提到了link。
我的要求是:
1.如何使用Nsis脚本在安装完成后启动批处理文件?
答案 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