我能知道每个Exec、ExecWait、ExecShell、nsExec::Exec、nsExec::ExecToLog, nsExec::ExecToStack、ExecDos和ExecCmd在什么时候使用哪种不同吗?
我已经发布了我所知道的各种执行电话。我正在尝试做一个全面的列表,以便帮助未来的访问者。
Exec:简单地执行被调用的字符串,无论是应用程序、控制台还是文件。ExecWait:像Exec一样执行,但等待直到进程退出。ExecShell:,它是干什么用的?nsExec::Exec:就像Exec或ExecWait一样,但只适用于命令提示符,也不需要打开控制台窗口。我不确定它是否等待进程退出。nsExec::Exec 是否等待子进程退出?nsExec::ExecToLog:The documentation says ExecToLog类似于普通的nsExec,但它输出到日志窗口。,这是什么意思,什么是日志窗口?nsExec::ExecToStack:文档显示ExecToStack类似于普通的nsExec,但它将输出推到堆栈中。我明白了。ExecDos:和nsExec::ExecToStack一样,但另外(不是吗?)
a.接受用作运行应用程序的stdin的字符串参数。
b.在同步/异步模式下工作。
c.它的工作范围超出了.onInit退房的范围。ExecCmd:和ExecDos一样,但它不需要这些
ExpandEnvStrings $3 %COMSPEC% ExecDos::exec /C
零件。我说对了吗?发布于 2012-07-29 14:56:16
1) 2) 3)
Exec和ExecWait在内部使用CreateProcess,只能启动程序和批处理文件。
ExecShell使用ShellExecute,这意味着它还可以启动任何已注册的文件类型(.txt、.chm等)和URL。如果您正在启动的程序需要与UAC一起提升,也应该使用它。
4)
nsExec重定向stdout,以便在执行子进程时看不到控制台窗口。是的,它在等待。
5)
instfiles页面上的日志窗口。
7)
是的,ExecDos和ExecCmd都是nsExec的更高级版本。
8)
对,是这样
发布于 2015-02-06 12:01:45
ExecWait在等待,因此可以返回!文档。
ExecShell还可以隐藏输出窗口。文档
ExecCmd被认为是过时的,被ExecDos所取代。这两个插件都是NSIS的额外插件,在默认情况下是不提供的。文档
https://stackoverflow.com/questions/11708779
复制相似问题