web-dev-qa-db-fra.com

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

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 ..

  1. Exec: Exécutez simplement la chaîne appelée, que ce soit une application, une console ou un fichier.

  2. ExecWait: s'exécute comme Exec mais attend la fin du processus.

  3. ExecShell: A quoi ça sert?

  4. 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?

  5. 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?

  6. nsExec::ExecToStack: La documentation indique que ExecToStack est similaire à plain nsExec mais il pousse la sortie vers la pile. Je comprends ça.

  7. 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.

  8. ExecCmd: Identique à ExecDos mais il n'en a pas besoin

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

    les pièces. Ai-je raison?

47
nawfal

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

44
Anders

ExecWait attend et peut donc retourner des trucs! documents .

ExecShell est également capable de masquer la fenêtre de sortie . documents

ExecCmd est considéré comme obsolète et remplacé par ExecDos. les deux sont des plugins supplémentaires pour NSIS qui ne sont pas fournis par défaut. documents

3
ewerybody