ClickOnce で配布したアプリケーションから別のアプリケーションを呼び出す

昨日は、午前から午後にかけてコア関西様でも Microsoft On ワークショップを行いました。テーマは「Visual Studio 2005による開発」と「スマートクライアント開発」で、講師は私ではありませんでしたが後半に出席した際にいただいた「ClickOnce で複数のアプリケーションを呼び出すランチャーを作りたい」という質問をご紹介します。

このためには、ソリューション エクスプローラでランチャーアプリケーションのためのプロジェクトを選び、右クリックして[参照の追加]を呼び出します。[参照の追加]ダイアログの[参照]ページで、呼び出したいアプリケーションを追加すればよいのです。ただし、呼び出すアプリケーションのプロジェクトが同じソリューションに含まれている場合でも、[プロジェクト]から選択しないでください。実は、このように操作するとビルドするときに問題が起きることがわかっています(サポート技術情報#907757)。

ランチャープログラムでは、System.Diagnostics にある Process.Start を使って

Process.Start("myapp1.exe");

とすれば、参照したアプリケーションを実行できます。

※2006.9.22追記。コメントのご指摘にあるとおり Process.Start で別プロセスとして実行させるとセキュリティ上の問題が発生することがあります。

なお、すべてのアプリケーションを一度にダウンロードさせないという設定もあります。このためには、メインプロジェクトの「プロパティ」を呼び出します。このウィンドウは、[プロジェクト]―[(プロジェクト名)のプロパティ]で表示できます。左側の[発行]タブをクリックすると、ClickOnce の配布条件を設定する画面が表示されます。ここで、[インストール モードと設定]にある[アプリケーション ファイル]というボタンを押します。ここで、ダウンロードグループを作成すればよいのです。ダウンロードグループの活用法については、アットマークアイティClickOnce解説ページに詳しい情報が掲載されていますので、参考にしてください。

※本エントリは、MSDNブログのアカウント削除にともない転載しました。追記におけるコメントは転載していません(2010/12/26)。