/*ExecTimeout是NSIS定时调用外部程序的插件
这是一个可以执行外部程序并且等待程序退出的插件,与ExecWait功能相似.
但是此插件可以自定义程序退出时间.如果外部程序在指定的时候内都没有完成,
程序会回到安装程序继续执行,从而保证安装程序不会因外部程序而一直阻塞中断,
当时间到了你可以让外部程序继续独立运行,也可以中止它,通过Terminate参数进行控件.
使用方法:
${ExecTimeout} <Commandline> <Timeout> <Terminate> <Var ExitCode>
Commandline:命令行参数如:$WINDIRNotepad.exe.
Timeout:等待程序执行的时间.
Terminate:当等待时间结束是否结束外部程序.0否1是
ExitCode:外调程序返回值."timeout" 或者 "error"
*/
; usage:
; ${ExecTimeout} <Commandline> <Timeout> <Terminate> <Var ExitCode>
;
; Arguments:
; <Commandline> should contain the path to the executable file [string]
; <Timeout> specifies the timeout in milliseconds [integer]
; <Terminate> specifies whether the process will be terminated on timeout [0|1]
;
; Return Value:
; <ExitCode> will return the exit code of the application, "timeout" or "error"
;
;-----------------------------------------------------------------------------------
!AddPluginDir "../../Plugins"
!macro ExecTimeout commandline timeout_ms terminate var_exitcode
Timeout::ExecTimeout '${commandline}' '${timeout_ms}' '${terminate}'
Pop ${var_exitcode}
!macroend
!define ExecTimeout "!insertmacro ExecTimeout"
Name "TestTimeout"
OutFile "TestTimeout.exe"
ShowInstDetails show
Section
MessageBox MB_ICONINFORMATION "I will start Notepad now. It will time out after 5 seconds!"
DetailPrint 'Executing: "$WINDIRNotepad.exe"'
${ExecTimeout} '"$WINDIRNotepad.exe"' 5000 1 $0
DetailPrint "Exit Code: $0"
SectionEnd
免责声明:根据《计算机软件保护条例》第十七条规定“为了学习和研究软件内含的设计思想和原理,通过安装、显示、传输或者存储软件等方式使用软件的,可以不经软件著作权人许可,不向其支付报酬。”您需知晓本站所有内容资源均来源于网络,仅供用户交流学习与研究使用,版权归属原版权方所有,版权争议与本站无关,用户本人下载后不能用作商业或非法用途,需在24个小时之内从您的电脑中彻底删除上述内容,否则后果均由用户承担责任;如果您访问和下载此文件,表示您同意只将此文件用于参考、学习而非其他用途,否则一切后果请您自行承担,如果您喜欢该程序,请支持正版软件,购买注册,得到更好的正版服务。丨本站为个人博客非盈利性站点,所有软件信息均来自网络,所有资源仅供学习参考研究目的,并不贩卖软件,不存在任何商业目的及用途。丨本文采用知识共享 署名4.0国际许可协议 [BY-NC-SA] 进行授权
BY-NC-SA协议进行授权
转载请注明:永恒心锁-分享互联网 » ExecTimeout是NSIS定时调用外部程序的插件