zoukankan      html  css  js  c++  java
  • 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 sis.bat"                                           //可以等待          不可以隐藏窗口 
    2、nsExec::Exec "$INSTDIR sis.bat"                                     //可以等待          可以隐藏窗口
    3、ExecShell Open "$INSTDIR sis.bat" "" SW_HIDE             // 不可以等待     可以隐藏窗口
    4、ExecCmd::exec "$INSTDIR sis.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窗口了。

  • 相关阅读:
    Java访问Oracle服务器
    easyUI之练习
    easyUI之Tree(树)
    easyUI之Messager(消息窗口)
    easyUI之表单
    easyUI之Dialog(对话框窗口)
    easyUI之函数
    easyUI之window窗口
    easyUI之progressbar进度条
    easyUI之slider滑动条框
  • 原文地址:https://www.cnblogs.com/lisuyun/p/5526975.html
Copyright © 2011-2022 走看看