ExecTimeout是NSIS定时调用外部程序的插件

/*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
© 版权声明
THE END
喜欢就支持一下吧
点赞8 分享
评论 抢沙发

请登录后发表评论

    暂无评论内容