55

、、、、、、、のそれぞれExecの違いは何ですか?いつどのように使用するかなどExecWait、わかりますか?ExecShellnsExec::ExecnsExec::ExecToLog, nsExec::ExecToStackExecDosExecCmd

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

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

  2. ExecWait:のように実行Execしますが、プロセスが終了するまで待機します。

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

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

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

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

  7. ExecDos:と同じですnsExec::ExecToStackが、さらに追加します(そうではありませんか?)

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

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

    c。セクション外で機能します-.onInitチェックアウトの場合。

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

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

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

4

2 に答える 2

46

1)2)3)

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

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

4)

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

5)

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

7)

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

8)

正しい

于 2012-07-29T14:56:16.550 に答える
4

ExecWait待っているので、ものを返すことができます!ドキュメント

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

ExecCmd古く、に取って代わられていると見なされExecDosます。どちらもNSIS用の追加のプラグインであり、デフォルトでは出荷されていません。ドキュメント

于 2015-02-06T12:01:45.543 に答える