簡體   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