ClickOnceは.NETフレームワークのバージョン2.0でリリースされたMicrosoftのテクノロジーで、Visual Studio内から.NET Windowsアプリケーションのデプロイメントやアップデートを容易にする。デプロイメントはアプリケーションファイルをファイル、FTPまたはマニフェストと一緒にWebロケーションにコピーすることで機能する。マニフェストは .application拡張子のついたXMLファイルで、含まれるすべてのファイルのリストや提供者IDなどのセキュリティー関連情報を含んでいる。ClickOnceアプリケーションの新バージョンがリリースされる度に、新たなサブディレクトリが作成され、アップデート済みのファイルはそこに配置される。すべてのデプロイ済みのプログラムバージョンは別個に存在する。それは、ユーザを特定し、彼らが受け取ったバージョンを制御するために、アプリケーションの適切なバージョンを示す必要があることを意味する。
まず、単純なWindowsアプリケーションを作成し、 ClickOnceでデプロイする。新たにWindowsアプリケーションプロジェクトを作成し、フォームにラベルをはり、コードをNew()サブに置くと、バージョンを知ることができる。
label1.Text = "Version: " & _ System.Reflection.Assembly.GetExecutingAssembly.GetName.Version.ToString
Project プロパティからSigningタブに行き「ClickOnceマニフェストに署名する(Sign the ClickOnce manifest)」ボックスにチェックし、「テスト証明書を作成する(Create Test Certificate)」ボタンをクリックし、パスワードを選択することでテスト証明書を作成する。
ここで証明書があるので、ClickOnce配置を設定する準備が整っている。Publishタブを選択し、 発行場所およびインストールURLを入力する(これらのディレクトリを入力するか、もしくは下にあるPublish Wizardを使用することができる)。発行場所は、デプロイ済みファイルがある物理的な場所である。インストールURLは、アプリケーションをダウンロードしたりインストールしたりするためにユーザが使用するURLである。われわれの狙いでは、アプリケーションをオフラインで利用可能にしたいので「モードおよび設定のインストール(Install Mode and Settings)」の下の2番目のラジオボタンを選択する。バージョン管理を機能させるために、ClickOnceのファイルはWebアプリケーションのフォルダツリーの下にデプロイされなくてはならない。デプロイメントの場所を選択する際には、このことに留意する。
「Updates...」ボタンをクリックすると、アップデートオプションが表示できる。
この時点で、ClickOnceアプリケーションはデプロイメントの準備が整っている。表示されたアップデートオプション設定を使用し、いったんデプロイおよびインストールされると、アプリケーションは起動するたびにアップデートをチェックする。
新バージョンが利用できる場合、ユーザはアップデートするようプロンプトが出される。
この時点でデプロイ済みのClickOnceアプリケーションがあり、バージョン管理の実装準備が出来ている。マスター.applicationファイルへのWebベースのリダイレクトを設定することで、動作する。まず、IISの許可されたリストに.application拡張子を付加する。IISのWebサイトプロパティの下のHome DirectoryタブのApplication Configurationセクションで実行される。
いったんこれが完了すると、新たなWebApplicationを作成しHandlerクラスをそれに追加する。
それから、ハンドラーをアプリケーションのweb.configファイルに登録する。ハンドラータイプのフォーマットは、[Namespace].[ClassName], [Assembly]である。
<httpHandlers> <add verb="GET" path="*.application" type="WebApplication1.MyHandler,WebApplication1"/> httpHandlers> system.web> configuration>
一度サンプルクリックに戻り、Publishタブの下でUpdatesダイアログを再オープンする。Webアプリケーションを通過するアップデート場所を入力する。
最後に、要求の適切なバージョンを返すために、以前作成したHTTPハンドラーを修正する。ここでハードコードされたバージョンを返すが、必然的に真の実装は認証を処理し、さらに柔軟性を提供する。
ヘッダーはIISで構成することができる。または、ここに示すようにコードで設定される。
忠告
ClickOnceの署名目的で一時証明書を使用するとき、その証明書の期限が切れ、新たに更新する場合、アプリケーションの現在のインストールはアップデートが出来ず、すべてのユーザは再インストールしなければならない。これは、既知のバグである。幸いにも、証明書の有効期限を無期限に延長することができる回避策が用意されている。詳しくは、http://support.microsoft.com/Default.aspx?kbid=925521を参照のこと。
デプロイ済みのアプリケーションマニフェストの場所をアップデート場所に同期させることは重要である。IISは存在しないファイルには対応しないので、アップデートパスが無効な場合、ハンドラーは決して起動しない。
Visual Studio 2008を使用している場合、デプロイ済みのフォルダ構造は若干異なる。各バージョンの.applicationファイルは、マスターフォルダではなく個別のサブディレクトリーにある。VS 2005のもと設計されたバージョン管理計画があり、VS 2008でアプリケーションをデプロイする場合、問題を引き起こす可能性がある。
原文はこちらです:http://www.infoq.com/articles/ClickOnce-Versioning
(このArticleは2008年5月6日に原文が掲載されました)