Exec vs ExecWait vs ExecShell vs nsExec :: Exec vs nsExec :: ExecToLog vs nsExec :: ExecToStack vs ExecDos vs ExeCmd

naw*_*fal 48 nsis shellexecute

我能知道什么是各自之间的差异Exec,ExecWait,ExecShell,nsExec::Exec,nsExec::ExecToLog, nsExec::ExecToStack,ExecDosExecCmd,如在什么时候使用?

我已经发布了我知道的各种执行调用.我正在努力制作一份全面的清单,以便它可以帮助未来的访客.

  1. Exec:明确地执行被调用的字符串,无论是应用程序,控制台还是文件.

  2. ExecWait:执行类似Exec但等待进程退出.

  3. ExecShell:它是为了什么?

  4. nsExec::Exec:就像ExecExecWait仅仅用于命令提示符,而且无需打开控制台窗口.我不确定它是否等待进程退出.是否nsExec::Exec等待子进程退出?

  5. nsExec::ExecToLog:The documentation says ExecToLog类似于plain nsExec但它输出到日志窗口.这是什么意思,什么是日志窗口?

  6. nsExec::ExecToStack:文档说明ExecToStack类似于plain,nsExec但它将输出推送到堆栈.我明白了.

  7. ExecDos:与nsExec::ExecToStack它相同(不是吗?)

    一个.获取用作运行应用程序的stdin的字符串参数.

    湾 在同步/异步模式下工作.

    C.它的部分工作 - 用于.onInit检查.

  8. ExecCmd:相同ExecDos但不需要这些

    ExpandEnvStrings $3 %COMSPEC% 
    ExecDos::exec  /C 
    
    Run Code Online (Sandbox Code Playgroud)

    部分.我对么?

And*_*ers 45

1)2)3)

Exec并在内部ExecWait使用CreateProcess,只能启动程序和批处理文件.

ExecShell使用ShellExecute,这意味着它还可以启动任何已注册的文件类型(.txt .chm等)和URL.如果您启动的程序需要使用UAC升级,也应该使用它.

4)

nsExec重定向stdout,以便在子进程执行时看不到控制台窗口.是的,它等待.

5)

instfiles页面上的日志窗口.

7)

是的,ExecDos和ExecCmd都是nsExec的更高级版本.

8)

正确