我能知道每个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)
对,是这样
https://stackoverflow.com/questions/11708779
复制相似问题