連載目次
前回はClickOnceの基本的な開発方法について説明した。今回はClickOnceの基本機能を拡張して、ClickOnceアプリケーション(以降、ClickOnceアプリ)の動作をカスタマイズする方法について解説する(※本稿ではすべてC#で記述しているが、もちろん同様のコードはVisual Basicでも記述可能である)。
具体的には、ClickOnceアプリが必要とするコンポーネントを必要に応じて必要な分だけダウンロードして利用する方法と、ClickOnceアプリのアップデートをそのClickOnceアプリ自体で制御する方法だ。
まずは本稿で開発するサンプル・アプリケーションの実行方法について説明しておく。サンプル・アプリケーション全体は、次のリンクからダウンロードできる。
このサンプル・アプリケーションを自分の環境で動作させるには、次の手順を実行してほしい。なお前提条件として、IISがローカル・コンピュータにインストールされ、すでに実行中の状態でなければならいので注意すること。これは、本サンプル・アプリケーションをIISに配置し、そこからダウンロードしてClickOnceで実行させるためだ。
また、Visual C# 2005 Express EditionもしくはVisual Studio 2005の開発環境がローカル・コンピュータにインストールされている必要がある。
- ダウンロードした「SampleApplication.zip」を任意の場所(例えば「C:\」など)に解凍する(※ClickOnce実行時のダウンロード状況を分かりやすくするために100Mbytesという巨大なサイズのファイルが2つ含まれている。このため、解凍に少し時間がかかるので注意すること)。
- 「SampleApplication」という名前のフォルダが解凍されるので、その中にある「SampleApplication.sln」をダブルクリックしてソリューションをVisual C# 2005 Express EditionまたはVisual Studio 2005で開く。
- ソリューションが開かれたら、IDEのメニュー・バーから[ビルド]−[ソリューションのリビルド]を選択する。これにより、ソリューション全体がビルドされる。
- ビルドが完了したら、メニュー・バーから[ビルド]−[SampleApplication の発行]を選択する。これにより[発行ウィザード]が表示されるので、その[完了]ボタンをクリックする。これで本稿のClickOnceアプリがlocalhost上のIISに発行されるはずだ。
- 発行が完了すると、「ClickOnceサンプル・アプリケーション」というインストール用Webページが表示されるので、[インストール]というボタン(リンク)をクリックすればサンプル・アプリケーションがインストールされ、起動する。
次の画面は、そのサンプル・アプリケーションを実際に起動した例だ。
サンプル・アプリケーションの実行画面
本アプリケーションのフォーム上には、[オンデマンド配置]と[アップデート]というボタンが置かれている。これらのボタンをクリックすると、本稿で実装するClickOnceの機能が動作する。
[オンデマンド配置]ボタンをクリックすると、オンデマンドで(つまりユーザーから要求されたタイミングで)Webサーバから一部のコンポーネント(.DLLファイル群)をダウンロードして、そのコンポーネントの機能を使用する(具体的には.DLLファイル内に含まれるダイアログを表示する)。
一方の[アップデート]ボタンをクリックすると、アプリケーション自体の最新バージョンに関する情報をWebサーバ(IIS)にチェックしに行き、そこで新しいバージョンがあればそれをダウンロードして、アプリケーションが自分自身をその場でアップデートする(アップデートを適用するにはアプリケーションの再起動が必要になる)。
ちなみにサンプル・アプリケーションのソリューション/プロジェクトの内容は、次の画面のとおりだ。
サンプル・アプリケーションのソリューション/プロジェクトの内容
本稿では「SampleApplication」というソリューションを作成し、その中に以下の3つのプロジェクトを追加している。
(1)「ClickOnce」プロジェクトは、本稿で紹介するClickOnceのカスタマイズ・プログラミングで必要となる汎用的な機能をまとめたクラス・ライブラリ(.DLLファイル)である。読者はこれを自由に改変して使ってよい。
(2)「SampleApplication」プロジェクトは、サンプル・アプリケーションの本体(.EXEファイル)である。
(3)「SampleClassLibrary」プロジェクトは、オンデマンド配置で使用するクラス・ライブラリ(.DLLファイル)である。本稿のサンプル・アプリケーションでは、[オンデマンド配置]ボタンがクリックされると、このライブラリをダウンロードして、これに含まれるDownloadedDialogダイアログという機能を使用する。
それでは、これらのClickOnce機能の実装方法を解説していこう。
ClickOnceでアプリケーションを配布する際、アプリケーションを構成するすべてのアセンブリ(.DLLファイル)を一度にダウンロードさせると、初回時のインストールおよび起動に非常に時間がかかってしまう場合がある。
この問題を回避するには、最初の実行時には必要最小限のファイルしかダウンロードせず、ある機能を実行する必要が発生した段階で、初めてその機能が実装されているアセンブリ(.DLLファイル)をダウンロードするという手段が考えられる(これを本稿では「オンデマンド配置」と呼ぶ)。
ClickOnceは標準でこのオンデマンド配置に対応している。これは前回「アプリケーション・ファイルとダウンロード・グループ」という項目で解説した機能のことで、要するに「インストールするファイルをあらかじめグループ分けしておき、そのグループ単位でダウンロード、インストールする」という機能だ。
●ダウンロード・グループの作成
従って、まずはダウンロード・グループを作成しておく必要がある。本稿では、次の画面の手順によって「SampleClassLibraryGroup」というダウンロード・グループを作成した(この画面はVisual C# 2005 Express Editionの例である)。
(3)[アプリケーション ファイル]ボタンをクリック
Visual Studio 2005のIDEにおけるダウンロード・グループの設定手順
ダウンロード・グループはVisual Studio 2005、Visual C# 2005/Visual Basic 2005 Express EditionなどのIDEで簡単に作成できる。
(1)ソリューション・エクスプローラで「SampleApplication」プロジェクトの「Properties」項目をダブルクリックしてプロジェクトのプロパティを開く(もしくは「SampleApplication」プロジェクトを右クリックしてコンテキスト・メニューを表示し、そこから[プロパティ]を選択してもよい)。
(2)プロジェクト・プロパティの[発行]タブを開く。
(3)[アプリケーション ファイル]ボタンをクリックする。これにより、[アプリケーション ファイル]ダイアログが表示される。
(4)ここでは「SampleClassLibrary.dll」をオンデマンド配置するファイルに設定する。そこで、このファイルの[ダウンロード グループ]を「SampleClassLibraryGroup」に変更する。これを行うには、コンボボックスから「(新規作成)」を選択し、そこで表示される[新しいグループ]ダイアログで「SampleClassLibraryGroup」と入力して[OK]ボタンをクリックする。次に、再びコンボボックスを開き、いま作成した「SampleClassLibraryGroup」というグループを選択すればよい。
(5)「bigfile_for_Update」ファイルは、アップデートを実行する際の進ちょく(=何%ダウンロードが完了したか)を目で確認できるようにするために用意したテスト用のファイルである。ファイル・サイズが100Mbytesである。
(6)同じく、「bigfile_for_OnDemand」ファイルは、オンデマンド配置の進ちょくを見られるようにするために用意したテスト用のファイルで、そのファイル・サイズは100Mbytesである。このファイルは「SampleClassLibrary.dll」と同じダウンロード・グループとしてオンデマンド配置するため、[ダウンロード グループ]を「SampleClassLibraryGroup」に変更しておく。
(7)ダウンロード・グループの設定が済んだら、[OK]ボタンをクリックする。これでIDE側の設定は完了だ。
ダウンロード・グループが作成できたら、次はそれをオンデマンドでダウンロードするコードを記述すればよい。