在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/"