繁体   English   中英

在NSIS安装程序中执行批处理文件

[英]Executing Batch File in NSIS installer

我有一个批处理文件,我需要在我的NSIS安装程序中运行。 它必须在提取完所有文件后运行(我想这很明显,否则批处理文件还不存在)。

我尝试将MUI_PAGE_CUSTOMFUNCTION_PRE与完成页面一起使用以运行它,但是当它到达脚本的那一部分时,它似乎跳过它。 以下是我如何调用它。

;;Finish Page
!define MUI_PAGE_CUSTOMFUNCTION_PRE Done
!insertmacro MUI_PAGE_FINISH

Function Done
    ExecWait '"$INSTDIR\BatchFile" "$INSTDIR" "$DATA_FOLDER"'
FunctionEnd

在此先感谢您的帮助。

UPDATE

我现在尝试使用以下内容:

ExpandEnvStrings $0 %COMSPEC% 
ExecWait '"$0" /C "$INSTDIR\batch.bat" "$INSTDIR" "$DATA_FOLDER"'

这不起作用,所以我拿出/ C看看cmd提示符说的是什么(它弹出,但立即关闭)似乎它执行cmd.exe但是就是这样,它没有完成其余的执行。

更新#2

可以在这里找到导致我使用它的核心知识:

Windows批处理文件:.bat vs .cmd?

无论出于何种原因.bat文件都不同意ExecWait。

到底:

ExecWait '"$INSTDIR\BatchFile.cmd" "$INSTDIR" "$DATA_FOLDER"'

工作得很好。

Exec [等待]需要正确引用:

ExpandEnvStrings $0 %COMSPEC%
ExecWait '"$0" /C "c:\path\to\batch.cmd" "quoted param" normalparam "c:\last param"'

我已经非常成功地使用了exec扩展

这是语法:

  SetOutPath $INSTDIR\${APPLICATION_DIR}
    ExpandEnvStrings $0 %COMSPEC%
    nsExec::ExecToStack '"C:\path-tobatch-file\commands.bat"'

这是NSIS Wiki的链接http://nsis.sourceforge.net/Docs/nsExec/nsExec.txt

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM