web-dev-qa-db-ja.com

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

ExecExecWaitExecShellnsExec::ExecnsExec::ExecToLog,nsExec::ExecToStackExecDosExecCmd、どちらを使用するかなど。

私が知っているさまざまな実行呼び出しを投稿しました。将来の訪問者に役立つように、包括的なリストを作成しようとしています。

  1. Exec:アプリケーション、コンソール、ファイルなど、呼び出された文字列をそのまま実行します。

  2. ExecWaitExecと同様に実行されますが、プロセスが終了するまで待機します。

  3. ExecShellそれは何のためですか?

  4. nsExec::ExecExecまたはExecWaitと同様ですが、コマンドプロンプトのみで、コンソールウィンドウを開かずに使用します。プロセスが終了するのを待つかどうかはわかりません。 nsExec::Execは子プロセスの終了を待機しますか?

  5. nsExec::ExecToLogThe documentation says ExecToLogは、プレーンnsExecと似ていますが、ログウィンドウに出力します。 それはどういう意味ですか、ログウィンドウとは何ですか?

  6. nsExec::ExecToStack:ドキュメントには、ExecToStackはプレーンnsExecに似ていますが、出力をスタックにプッシュします。わかった。

  7. ExecDosnsExec::ExecToStackと同じですが、さらに(そうではない?)

    a。アプリケーションを実行するための標準入力として機能する文字列パラメーターを取ります。

    b。同期/非同期モードの両方で動作します。

    c。それはセクション外で動作します-.onInitチェックアウトの場合。

  8. ExecCmdExecDosと同じですが、これらは必要ありません

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

    部品。 私は正しいですか?

47
nawfal

1)2)3)

ExecおよびExecWaitは内部で CreateProcess を使用し、プログラムとバッチファイルのみを起動できます。

ExecShellShellExecute を使用します。これは、登録済みのファイルタイプ(.txt .chmなど)およびURLも起動できることを意味します。また、開始するプログラムがUACで昇格する必要がある場合にも使用する必要があります。

4)

nsExecはstdoutをリダイレクトするため、子プロセスの実行時にコンソールウィンドウは表示されません。そして、はい、待っています。

5)

Instfilesページのログウィンドウ。

7)

はい、ExecDosとExecCmdはどちらもnsExecのより高度なバージョンです。

8)

正しい

44
Anders

ExecWaitは待機するため、returnができます! ドキュメント

ExecShellは、出力ウィンドウを非表示にすることもできます。 ドキュメント

ExecCmdは古いと見なされ、ExecDosに置き換えられます。どちらもデフォルトでは出荷されていないNSISの追加プラグインです。 ドキュメント

3
ewerybody