我能知道每种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
相同,但另外(不是吗?)一种。接受用作运行应用程序的stdin的字符串参数。
b。在同步/异步模式下均可工作。
C。它不起作用-对于.onInit check out 。
ExecCmd
:与ExecDos
相同,但不需要这些ExpandEnvStrings $3 %COMSPEC%
ExecDos::exec /C
部分。 我正确吗?
最佳答案
1)2)3)Exec
和ExecWait
在内部使用CreateProcess,并且只能启动程序和批处理文件。ExecShell
使用ShellExecute,这意味着它也可以启动任何注册的文件类型(.txt .chm等)和URL。如果您要启动的程序需要使用UAC进行提升,则也应使用它。
4)
nsExec重定向标准输出,因此子进程执行时控制台窗口不可见。是的,它在等待。
5)
instfiles页面上的日志窗口。
7)
是的,ExecDos和ExecCmd都是nsExec的更高级版本。
8)
正确
关于nsis - Exec,ExecWait,ExecShell,nsExec::Exec与nsExec::ExecToLog,nsExec::ExecToStack,ExecDos,ExeCmd,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/11708779/