■ClickOnceを始めてみよう!

今回が初めての実験になるわけですが、何はともあれ、ClickOnceアプリを作成して その凄さを体感してみましょう。今回はClickOnceを動かす事がメインの目的なので、 設定の詳細等は省略します。各項目の詳細は「コラム」や今後の「実験室」で扱って 行きたいと思います。
始めるまえに以下のツールをご準備下さい。何れも、MSDNのサイトからダウンロードできます。

Visual C# 2005 Express Edition Beta
Microsoft .NET Framework SDK v2.0

ClickOnceは「.NET Framework2.0」からサポートされる機能です。 「Visual C# 2005 Express Edition Beta」は「.NET Framework2.0」に対応した 開発環境です。今回の実験では「Microsoft .NET Framework SDK v2.0」で 提供されているツールを使って、ClickOnceアプリを設定しようと思いますので、 こちらもGETして下さい。「Microsoft .NET Framework SDK v2.0」はMSDNの 英語サイトからダウンロードできます。

さて、それではClickOnceアプリの作成を順を追って進めていきましょう。 まずはアプリケーションの作成からです。

○手順1

今回、サンプルとして使用するアプリケーションは WindowsFormにButtonを一つ貼り付けて、それがクリックされるとHelloと表示するという 単純なものです。

このアプリケーションの実行可能形式のファイルは「TestApp.exe」です。 アプリケーションの作成に関しては通常のアプリケーションを作成するのと 全く変わりません。ただ、一点だけ注意しないといけない点があります。 それは、作成するアセンブリに「厳密名」を付ける必要が有るということです。 厳密名が何ぞやというお話はひとまずそのままにしておいて、手順だけをご説明します。 アセンブリに厳密名を付けるために、アセンブリにデジタル署名を行います。 まずは、デジタル署名を行うための、秘密キーと公開キーのペアをsn.exeを 使用して作成します。
※sn.exeはVisual Studioがインストールされているフォルダの下にあるSDK\v2.0フォルダの下のbinフォルダに置かれています。私のマシンでは「C:\Program Files\Microsoft Visual Studio 8\SDK\v2.0\Bin」に置かれています。

コマンドラインから以下のコマンドを実行すると、実行を行ったフォルダにkeyPair.snkが作成されます。

sn -k keyPair.snk

次にこのファイルをソースファイルが置かれているフォルダにコピーします。 そして「AssemblyInfo.cs」のソースコードに以下を追加します。

[assembly: AssemblyKeyFile("keyPair.snk")]

この状態でビルドを行うとデジタル署名が行われたアセンブリが作成されます。「TestApp.exe」の他に、「TestApp.exe.config」というファイルも生成されます。デジタル署名を行う方法についてはこの他に も有りますが、今回は説明を割愛させて頂きます。

○手順2

さて、ここからがClickOnceアプリを設定する手順となります。 ClickOnceによりアプリケーションを配布するためには2つのマニフェストファイルと実行に必要なファイルをサーバ上に配置すれば良いのです。それでは2つのファイルのうちのアプリケーションマニフェストを作成する手順をご説明します。

そのまえに、適当なフォルダに以下の構成を持つフォルダを作成して下さい。
<アプリケーション名>\<バージョン>
<例>TestApp\1.0.0.0
次に上記のフォルダに作成したモジュール「TestApp.exe」と設定ファイル「TestApp.exe.config」を 配置して下さい。

そしてコマンドラインから以下を実行します。
※「C:\Program Files\Microsoft Visual Studio 8\SDK\v2.0\Bin」にpathが設定されている必要があります。
mageUI

Mageが立ち上がったら、ツールバーの一番左のボタンをクリックします。アプリケーションマニフェストの作成画面が表示されます。「Name」には任意のアプリケーションの名前を入力します。「Version」にはアプリケーションのバージョンを入力します。 今回は初回なので「1.0.0.0」と入力します。次に左のリストボックスの「Files」を選択します。

「Application Directory」にモジュールを置いたフォルダを指定し、「Popluate」ボタンをクリックします。 すると、指定したフォルダに置かれているファイルが表示されます。アセンブリのFile TypeにはEntry Pointを指定し、 configファイルのFile Typeにはconfig Fileを指定します。

本来であれば、アプリケーションが必要とする「Permission」の設定を行う必要が有るか今回の目的は、 ClickOnceアプリケーションが作動する事を体感する事なので、省略したいと思います。ここまでで、 アプリケーションマニフェストの設定は完了なので、設定を保存します。保存する時にファイルに デジタル署名を行うためダイアログが表示されますので、以前にsnコマンドで作成した「keyPair.snk」を 指定します。今回はTestApp.exe.manifestというファイル名で[TestApp\1.0.0.0]に保存します。次にデプロイメントマニフェストの 作成に入ります。

○手順3

ツールバーの左から2番目のボタンをクリックします。

「Name」と「Version」にはアプリケーションマニフェストで入力した値と同じ値を入力します。 「Run Location」にはClickOnceアプリケーションを配置する場所(正確にはデプロイメントマニフェスト を配置する場所)を指定します。記述の仕方はHTTP、FTP、共有ディレクトリ等、配布に使用する媒体によります。 「Application type」には「Install Locally」を指定します。次に左のリストボックスの「Description」を選択します。

「Publisher」に入力された値はインストール後、スタートメニューに表示されるフォルダの名称になります。 今回は「ClickOnceApp」を入力します。「Product」に入力された値はスタートメニューに表示されるアプリケーションの 名称になります。

「Update Options」はClickOnceアプリの更新に関する設定を入力する箇所ですが、今回は詳細の設定は省略します。 「This Application should check for updates」のチェックを外しておきましょう。 最後に「Application Reference」を設定します。

「select Manifest」ボタンをクリックし、アプリケーションマニフェストファイルを選択します。 通常アプリケーションマニフェストファイルはバージョン名が付いたフォルダの中に置かれており、 デプロイメントマニフェストはその一つ階層が上のフォルダに配置する事になるので、 「Location」には「1.0.0.0\TestApp.exe.manifest」のようにならないといけません。 以上でデプロイメントマニフェストファイルの設定は完了です。(Trust Licences)の設定については必須でないので 省略します。アプリケーションマニフェストと同じようにデジタル署名をして、ファイルに保存します。 今回は「TestApp.application」という名前で「TestApp」フォルダに配置します。アプリケーションマニフェストは 「バージョンフォルダ(1.0.0.0)」に保存し、デプロイメントマニフェストは「アプリケーションフォルダ(TestApp)」の 直下に保存する事に注意して下さい。これはClickOnceアプリが更新されると、デプロイメントマニフェストを更新し、 次バージョンのアプリケーションマニフェストを参照するように変更するからです。

○手順4 マニフェストの作成が完了しましたので、いよいよClickOnceアプリをWebサーバーに配置します。 先ほど作成したフォルダごと(「TestApp」)Webサーバーに配置します。配置が完了したら、全ての 作業は完了です。

ブラウザでデプロイメントマニフェストファイルを配置したURLを指定し、アクセスしてみましょう。 以下のようなダイアログが表示されます。

インストールボタンをクリックすると、アプリケーションがインストールされ、ただちに起動されます。 スタートメニューとコントローパネルのプログラムの追加と削除にも追加されます。

上手くいったでしょうか?今回は、冒頭でもお話しましたように、詳細についてかなりすっ飛ばして やりましたので、次回以降では詳細の部分についても触れながら、いろいろなパターンをためして みたいと思います。「Visual C# 2005 Express Edition Beta」にはClickOnceアプリをPublishするための 機能が付いていない?ため、SDKのツールを使用しましたが、Visual Studioに付いている機能を 使えばもっと簡単にできる(多分)と思います。

HOMEへ