webentwicklung-frage-antwort-db.com.de

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

Kann ich die Unterschiede zwischen den Exec, ExecWait, ExecShell, nsExec::Exec, nsExec::ExecToLog,nsExec::ExecToStack, ExecDos und ExecCmd, wie wann welche verwenden?

Ich habe die verschiedenen Ausführungsaufrufe gepostet, die ich kenne. Ich versuche, eine umfassende Liste zu erstellen, damit sie zukünftigen Besuchern hilft.

  1. Exec: Führt den aufgerufenen String einfach aus, sei es eine Anwendung, eine Konsole oder eine Datei.

  2. ExecWait: Wird wie Exec ausgeführt, wartet jedoch, bis der Prozess beendet wird.

  3. ExecShell: Wofür ist das?

  4. nsExec::Exec: Genau wie Exec oder ExecWait, aber nur für die Eingabeaufforderung und das auch, ohne das Konsolenfenster zu öffnen. Ich bin mir nicht sicher, ob es darauf wartet, dass der Prozess beendet wird. Tut nsExec::Exec Warten, bis der untergeordnete Prozess beendet ist?

  5. nsExec::ExecToLog: The documentation says ExecToLog ähnelt normalem nsExec, wird jedoch im Protokollfenster ausgegeben. Was heißt das, was ist ein Protokollfenster?

  6. nsExec::ExecToStack: In der Dokumentation heißt es, dass ExecToStack normalem nsExec ähnelt, die Ausgabe jedoch in den Stapelspeicher verschoben wird. Ich verstehe das.

  7. ExecDos: Gleich wie nsExec::ExecToStack aber es zusätzlich (Ist es nicht?)

    ein. Nimmt einen String-Parameter, der als Standard für die Ausführung einer Anwendung dient.

    b. Funktioniert sowohl im synchronen als auch im asynchronen Modus.

    c. es funktioniert außerhalb des Abschnitts - für .onInit-Checkout-Vorgänge.

  8. ExecCmd: Wie ExecDos, benötigt diese jedoch nicht

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

    teile. Habe ich recht?

47
nawfal

1) 2) 3)

Exec und ExecWait verwenden CreateProcess intern und können nur Programme und Batchdateien starten.

ExecShell verwendet ShellExecute , was bedeutet, dass es auch jeden registrierten Dateityp (.txt .chm usw.) und URLs starten kann. Es sollte auch verwendet werden, wenn das Programm, das Sie starten, mit der Benutzerkontensteuerung erweitert werden muss.

4)

nsExec leitet stdout um, sodass beim Ausführen des untergeordneten Prozesses kein Konsolenfenster angezeigt wird. Und ja, es wartet.

5)

Das Protokollfenster auf der Seite instfiles.

7)

Ja, sowohl ExecDos als auch ExecCmd sind fortgeschrittenere Versionen von nsExec.

8)

Richtig

44
Anders

ExecWait wartet und kann somit return stuff! docs .

ExecShell kann auch das Ausgabefenster verstecken. docs

ExecCmd wird als veraltet betrachtet und durch ExecDos ersetzt. Beide sind zusätzliche Plugins für NSIS, die nicht standardmäßig ausgeliefert werden. docs

3
ewerybody