Puis-je savoir quelles sont les différences entre chaque Exec
, ExecWait
, ExecShell
, nsExec::Exec
, nsExec::ExecToLog,
nsExec::ExecToStack
, ExecDos
et ExecCmd
, comme quand utiliser quoi?
J'ai publié les différents appels d'exécution que je connais. J'essaie de faire une liste complète, afin qu'elle aide les futurs visiteurs ..
Exec
: Exécutez simplement la chaîne appelée, que ce soit une application, une console ou un fichier.
ExecWait
: s'exécute comme Exec
mais attend la fin du processus.
ExecShell
: A quoi ça sert?
nsExec::Exec
: Tout comme Exec
ou ExecWait
mais uniquement pour l'invite de commande et cela aussi sans ouvrir la fenêtre de la console. Je ne sais pas s'il attend la fin du processus. Est-ce que nsExec::Exec
attendre la fin du processus enfant?
nsExec::ExecToLog
: The documentation says ExecToLog
est similaire à plain nsExec
mais il sort dans la fenêtre de journalisation. Qu'est-ce que cela signifie, qu'est-ce qu'une fenêtre de journal?
nsExec::ExecToStack
: La documentation indique que ExecToStack
est similaire à plain nsExec
mais il pousse la sortie vers la pile. Je comprends ça.
ExecDos
: Identique à nsExec::ExecToStack
mais en plus (n'est-ce pas?)
une. prend un paramètre de chaîne qui sert de stdin pour exécuter l'application.
b. fonctionne en mode sync/async.
c. cela fonctionne hors section - pour les extractions .onInit.
ExecCmd
: Identique à ExecDos
mais il n'en a pas besoin
ExpandEnvStrings $3 %COMSPEC%
ExecDos::exec /C
les pièces. Ai-je raison?
1) 2) 3)
Exec
et ExecWait
utilisent CreateProcess en interne et ne peuvent démarrer que des programmes et des fichiers batch.
ExecShell
utilise ShellExecute ce qui signifie qu'il peut également lancer n'importe quel type de fichier enregistré (.txt .chm etc.) et URL. Il doit également être utilisé si le programme que vous démarrez doit s'élever avec l'UAC.
4)
nsExec redirige stdout afin qu'une fenêtre de console ne soit pas visible lorsque le processus enfant s'exécute. Et oui, ça attend.
5)
La fenêtre du journal sur la page instfiles.
7)
Oui, ExecDos et ExecCmd sont des versions plus avancées de nsExec.
8)
Correct