您的位置:首页 > 其它

nsi脚本中执行.bat文件要隐藏dos窗口问题

2016-05-25 14:48 453 查看
问题原因:工作中,在一个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窗口了。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: