nsis - Exec vs ExecWait vs ExecShell vs nsExec:: Exec vs nsExec:: ExecToLog vs.
shellexecute (2)
ExecWait espera y por lo tanto puede devolver cosas! docs
ExecShell también puede ocultar la ventana de salida . docs
ExecCmd se considera obsoleto y reemplazado por ExecDos . ambos son complementos adicionales para NSIS que no se envían de forma predeterminada. docs
¿Puedo saber cuáles son las diferencias entre cada Exec , ExecWait , ExecShell , nsExec::Exec , nsExec::ExecToLog, nsExec::ExecToStack , ExecDos y ExecCmd , como cuándo usar?
He publicado las diversas llamadas de ejecución que conozco. Estoy tratando de hacer una lista completa, para que ayude a los futuros visitantes ..
Exec: Ejecutar de forma sencilla la cadena llamada, ya sea alguna aplicación, consola o archivo.ExecWait: se ejecuta comoExecpero espera hasta queExecWaitel proceso.ExecShell: ¿ExecShellqué es?nsExec::Exec: Al igual queExecoExecWaitpero solo para el símbolo del sistema y también sin abrir la ventana de la consola. No estoy seguro si espera que el proceso salga. ¿nsExec::Execespera a que sensExec::Execel proceso hijo?nsExec::ExecToLog:The documentation says ExecToLoges similar ansExecsimple peronsExeca la ventana de registro. ¿Qué significa eso, qué es una ventana de registro?nsExec::ExecToStack: La documentación dice queExecToStackes similar ansExecsimple pero empuja la salida a la pila. Lo entiendo.ExecDos: igual quensExec::ExecToStackpero además ( ¿no es así ?)a. toma el parámetro de cadena que sirve como entrada estándar para ejecutar la aplicación.
segundo. Funciona en ambos modos de sincronización / asíncrono.
do. funciona fuera de la sección - para .onit check out.
ExecCmd: igual queExecDospero no requiere estosExpandEnvStrings $3 %COMSPEC% ExecDos::exec /Cpartes. ¿Estoy en lo correcto?
1) 2) 3)
Exec y ExecWait usan CreateProcess internamente y solo pueden iniciar programas y archivos por lotes.
ExecShell usa ShellExecute que significa que también puede iniciar cualquier tipo de archivo registrado (.txt .chm, etc.) y URL. También debe utilizarse si el programa que está comenzando necesita elevarse con UAC.
4)
nsExec redirige stdout por lo que una ventana de consola no es visible cuando se ejecuta el proceso hijo. Y sí, espera.
5)
La ventana de registro en la página de instfiles.
7)
Sí, tanto ExecDos como ExecCmd son versiones más avanzadas de nsExec.
8)
Correcto