0

特定のイベントで別のアプリケーション(ワーカー)を実行するには、アプリケーション(マスター)が必要です。

ワーカーアプリケーションを標準の実行可能ファイルとして配布すれば、すべて問題なく、Process.Startを問題なく使用でき、引数を渡してWaitForExitを呼び出すことができます。

ワーカーアプリケーションをClickOnceアプリケーションとして配布すると、アプリケーションリファレンスが作成されます。これはProcess.Startで開始できます(Master.exeと同じディレクトリにコピーを配置すると)が、引数を渡すことができません。または、WaitForExitを使用します。

両方できるようになりたいです。参照への呼び出しは、Worker実行可能ファイルが実際に実行される別のプロセスを開始すると思われます。

私のコード:

// This works as I expect, and returns a valid Process.
Process p0 = Process.Start("Worker.exe", "DoSomeMagic");
// This seems to work, but returns null.
Process p1 = Process.Start("Worker.appref-ms");
// This also returns null, but does not pass the argument to Worker.
Process p2 = Process.Start("Worker.appref-ms", "DoSomeMagic"); 

私の質問:

これを「適切に」行うにはどうすればよいですか?

4

1 に答える 1

1

ClickOnceアプリケーションでは、デフォルトでコマンドライン引数(または、その場合はクエリ文字列による引数)を渡すことができません。それらを許可するには、マニフェストファイルで適切なオプションを設定する必要がありますが、それでも考慮すべきいくつかの注意事項があります。ClickOnceプラットフォーム全体では、アプリケーションの実行方法と起動方法に非常に厄介な制限が課せられます。もちろん、これはすべてセキュリティを装っていますが、個人的には近視眼的だと思います。

ClickOnceアプリに引数を渡す方法の詳細については、http://msdn.microsoft.com/en-us/library/ms172242.aspxを参照してください。

于 2010-08-23T15:12:19.363 に答える