NSIS 使用ExecShell打開文件或者應用程序


在NSIS安裝過程中或者安裝完成后打開一個應用程序或者文件

使用ExecShell命令

語法:ExecShell action command [parameters] [SW_SHOWDEFAULT | SW_SHOWNORMAL | SW_SHOWMAXIMIZED | SW_SHOWMINIMIZED | SW_HIDE]

action 通常為 "open" 或者 "print"

command 為要執行的文件,其它都是些可選參數根據自己需要填寫。

在vs code中我們看到語法提示,包含了ExecShell 和ExecShellWait,區別在於后者會等待。

 

下面我們實際測試下幾個例子

1、打開文件

我們在文件夾中放了一個test.txt的文本文件,完了編譯運行測試是否打開這個文本文件

Unicode true
OutFile "ExceShell.exe"

Section "main" sec1
    ExecShell open "$EXEDIR/test.txt"
    DetailPrint "使用ExecShell 打開test.txt成功"
SectionEnd

編譯執行后如下:

 

 

運行后確實打開了文件,並且沒有等待打開的文件關閉即執行了后面的指令,完成了。

2、打開應用程序

命令修改如下:

; ExecShell open "$EXEDIR/test.txt"
; DetailPrint "使用ExecShell 打開test.txt成功"
ExecShell open "D:\Program Files (x86)\NSIS\NSIS.exe"
DetailPrint "使用ExecShell 打開NSIS.exe成功"

編譯運行后如下:

 

 運行后確實打開了程序,並且沒有等待打開的程序關閉即執行了后面的指令,完成了。

 

 通過上面的例子,我們已經可以在安裝腳本中打開一個文件或者應用程序,前面都提到了執行完命令后沒有等待,而是立即執行了后面的代碼,下面我們就來驗證下,如何在打開一個應用后等待該應用關閉后再執行后面的代碼。

我們再對代碼稍作修改,如下所示:

 

 編譯運行如下所示:

 

 很明顯,安裝進度被卡在了這里,沒有打印輸出后面的內容,當我們關閉打開的NSIS.exe后,安裝繼續打印了內容並完成。

 

3、打開url地址

ExecShell "open" "http://nsis.sf.net/"

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM