问题原因:工作中,在一个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窗口了。

nsi脚本中执行.bat文件要隐藏dos窗口问题的更多相关文章

  1. 在cygwin中执行bat文件

    在cygwin中执行bat文件 #!/bin/bash dir_gen_image_bat=C:/MinGW/msys/1.0/home/Administrator/feitian_audio/FOT ...

  2. 在c++代码中执行bat文件 【转】

    我想在c++代码中执行磁盘上的一个bat文件. 这个bat文件的完整路径是:E:\\7z\\my7z.bat. 方法一: system("E:\\7z\\my7z.bat"); s ...

  3. C#和Java中执行SQL文件脚本的代码(非常有用)

    原文:C#和Java中执行SQL文件脚本的代码(非常有用) 我们在做程序的时候有事后会涉及到利用sql文件 直接执行,可是在sql文件中有很多注释,我们要一句一句的执行首先必须的得把sql文件解析 去 ...

  4. 自学Linux Shell14.2-在脚本中使用其他文件描述符

    点击返回 自学Linux命令行与Shell脚本之路 14.2-在脚本中使用其他文件描述符 在脚本中重定向输入和输出,并布局限于以上讲的3个默认的文件描述符,shell最多可以有9个打开的文件描述符.这 ...

  5. Shell脚本中执行mysql的几种方式(转)

    Shell脚本中执行mysql的几种方式(转) 对于自动化运维,诸如备份恢复之类的,DBA经常需要将SQL语句封装到shell脚本.本文描述了在Linux环境下mysql数据库中,shell脚本下调用 ...

  6. shell脚本中执行另一个shell脚本

    分类: 可以在一个shell脚本中执行另一个shell脚本(或非可执行文件,主要用于取得一些变量的值),方法是: . 文件名(包括路径) 或 变量=文件名(包括路径) . $变量   注意,圆点后面有 ...

  7. Shell脚本中执行sql语句操作mysql的5种方法【转】

    对于自动化运维,诸如备份恢复之类的,DBA经常需要将SQL语句封装到shell脚本.本文描述了在Linux环境下mysql数据库中,shell脚本下调用sql语句的几种方法,供大家参考.对于脚本输出的 ...

  8. 技术分享:如何在PowerShell脚本中嵌入EXE文件

    技术分享:如何在PowerShell脚本中嵌入EXE文件 我在尝试解决一个问题,即在客户端攻击中只使用纯 PowerShell 脚本作为攻击负荷.使用 PowerShell 运行恶意代码具有很多优点, ...

  9. Js使用WScript.Shell对象执行.bat文件和cmd命令

    Js使用WScript.Shell对象执行.bat文件和cmd命令 http://www.jb51.net/article/58669.htm WScript.Shell(Windows Script ...

随机推荐

  1. Ogre 编辑器三(自动生成与更新Ogre对象编辑界面)

    最开始设计这个编辑器时,其中一个要求就是能在运行过程中,通过UI来更新各对象,这样我们就能明确每个Ogre对象更新其属性影响的渲染效果.比如点光源,方向光源,聚光灯各属性与效果,深度测试开启与关闭,深 ...

  2. 访问网站出现EOF

    HTTP/0.0 503 Service Unavailable Date: Tuesday, 18-Apr-17 10:29:46 CST Keep-Alive: timeout=38 EOF 今天 ...

  3. JDBC删除表实例

    在本教程将演示如何在JDBC应用程序中删除一个数据库表. 在执行以下示例之前,请确保您已经准备好以下操作: 具有数据库管理员权限,以在给定模式中删除数据库表. 要执行以下示例,需要用实际用户名和密码替 ...

  4. 关于js中namespace命名空间模式

    命名空间有助于减少程序中所需要的全局变量的数量,并且同时有助于避免命名冲突或过长的名字前缀. 关于命名空间的例子: /** * 创建全局对象MYAPP * @module MYAPP * @title ...

  5. UISegmentedControl: 增加代理方法

    UISegmentedControl 没有代理方法可以设置,不能在选择之前做预处理.为此,重写了 UISegmentedControl 创建文件 RFSegmentedControl,继承自 UISe ...

  6. PHP安全之临时文件的安全

    (一)临时文件简介临时文件,顾名思义是临时的文件,文件的生命周期短.然而,很多应用的运行都离不开临时文件,临时文件在我们电脑上无处不在,通常有以下几种形式的临时文件: 文件或图形编辑程序,所生成的中间 ...

  7. Thinkphp5笔记七:设置错误页面①

    设置网站的错误提示页面,也是一个很重要的环节. 一.空操作 在当前控制器里面增加E_empty操作 public function _empty(){ $this->error('方法不存在') ...

  8. 用好这6个APP,学英语SO EASY!

      http://www.jianshu.com/p/30a27af18340  

  9. ApkTool反编译和重新打包

    有时会需要反编译APK,各人有各人的原因,你都懂的…… 准备工作: 下载APKTool,通过下面这个连接进行下载,https://code.google.com/p/android-apktool/d ...

  10. 用Fiddler查看 Android/iOS 网络请求

    1.下载fiddler,尽量到官方网站找最新的版本 我这里也放了一个:http://files.cnblogs.com/xiaokang088/fiddler4setup.zip 2. 打开Fiddl ...