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 comoExec
pero espera hasta queExecWait
el proceso.ExecShell
: ¿ExecShell
qué es?nsExec::Exec
: Al igual queExec
oExecWait
pero 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::Exec
espera a que sensExec::Exec
el proceso hijo?nsExec::ExecToLog
:The documentation says ExecToLog
es similar ansExec
simple peronsExec
a la ventana de registro. ¿Qué significa eso, qué es una ventana de registro?nsExec::ExecToStack
: La documentación dice queExecToStack
es similar ansExec
simple pero empuja la salida a la pila. Lo entiendo.ExecDos
: igual quensExec::ExecToStack
pero 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 queExecDos
pero no requiere estosExpandEnvStrings $3 %COMSPEC% ExecDos::exec /C
partes. ¿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