Подтвердить что ты не робот

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

Могу ли я узнать, в чем различия между каждыми 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, но дополнительно ( Не?)

    а. принимает параметр string, который служит в качестве stdin для запуска приложения.

    б. работает в режиме sync/async.

    с. он работает вне раздела - для проверки .onInit.

  • ExecCmd: То же, что и ExecDos, но это не требует этих

    ExpandEnvStrings $3 %COMSPEC% 
    ExecDos::exec  /C 
    

    части. Правильно ли я?

4b9b3361

Ответ 1

1) 2) 3)

Exec и ExecWait использовать CreateProcess и запускать программы и пакетные файлы.

ExecShell использует ShellExecute, что означает, что он также может запускать любой зарегистрированный тип файла (.txt.chm и т.д.) и URL-адреса. Он также должен использоваться, если программа, которую вы запускаете, должна поднять с помощью UAC.

4)

nsExec перенаправляет stdout, поэтому окно консоли не отображается, когда выполняется дочерний процесс. И да, он ждет.

5)

Окно журнала на странице instfiles.

7)

Да, и ExecDos, и ExecCmd являются более продвинутыми версиями nsExec.

8)

Правильный

Ответ 2

ExecWait ждет и, следовательно, может вернуть материал! docs.

ExecShell также может скрывать окно вывода. docs

ExecCmd считается устаревшим и заменяется на ExecDos. оба являются дополнительными плагинами для NSIS, которые по умолчанию не отправляются. docs