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?您的两个示例中的路径甚至都不匹配。

只要您获得正确的路径和引号,它就应该可以工作:

!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

于 2012-10-17T13:36:19.177 回答