nsi腳本中執行.bat文件要隱藏dos窗口問題


問題原因:工作中,在一個nsi的安裝腳本文件中需要安裝虛擬攝像頭驅動,安裝驅動腳本是.bat文件。使用nsi的execwait函數執行.bat文件時會顯示dos窗口。但是領導要求不能顯示dos窗口。

解決方法一:思路是看看bat腳本命令本身有沒有隱藏dos方法。但是沒有找到。后來發現可用用.vbs文件調用來隱藏。

創建一個.vbs文件,寫入:createobject ("wscript.shell").run "a.bat",1,TRUE。使用.vbs文件來調用bat文件。windows下執行時可以隱藏窗口的。但是發現在nsi腳本無法執行.vbs文件。

所有方法一失敗了。

 

方法二:查看nsi本身帶有的exec執行函數。

網上查看到有

1、ExecWait "$INSTDIR\nsis.bat"                                           //可以等待          不可以隱藏窗口 
2、nsExec::Exec "$INSTDIR\nsis.bat"                                     //可以等待          可以隱藏窗口
3、ExecShell Open "$INSTDIR\nsis.bat" "" SW_HIDE             // 不可以等待     可以隱藏窗口
4、ExecCmd::exec "$INSTDIR\nsis.bat"                                  // 不可以等待     可以隱藏窗口  ( Pop $0、 ExecCmd::wait $0  等待)

我們需要等待bat文件返回,而且要隱藏窗口,那么可以用第二個 nsExec::Exec函數。

nsExec::Exec函數是個nsis的nsExec.dll插件中的方法。所有需要在腳本文件中添加插件。

添加方法是

!addplugindir Plugins //添加nsis程序中附帶的插件庫目錄

nsExec::Exec '${VCAM_INSTALL}'   //執行相關的.bat文件 VCAM_INSTALL是個.bat文件的完整路徑變量。

好了,這樣就不會顯示dos窗口了。


免責聲明!

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



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