7. アプリケーションの配置

更新日: 2009 年 10 月 23 日


アプリケーションを作成した後は、クライアント PC に対して、配布そして配置という作業が必要になります。前述したように、以前ではレジストリに依存した COM が多く使われていたため、アプリケーションを配置する際には、関連するコンポーネントをレジストリに登録するという作業が必要でした。そのため、例えばデスクトップ アプリケーションの場合では、インストーラーを作成して配布し、それをユーザーに実行してもらって配置するという方式が一般的でした。.NET ではレジストリへの依存がなくなり、アプリケーションの配置が簡単に行えるようになっています。

XCOPY による配置

.NET アプリケーションを配置する最も簡単な方法は、XCOPY コマンドによる配置になります。.NET では、レジストリへの登録が必要なくなったため、関連するファイルをすべてローカル ディスク上にコピーするだけでアプリケーションの配置が完了します。

実際に XCOPY コマンドで配置するには、次のようにコマンドを実行します。

xcopy /I /S <配置元パス> <配置先パス>

/I は、ディレクトリのすべてのファイルをコピーするためのオプションです。コピー先にディレクトリがない場合は、ディレクトリを作成します。/S は、すべてのディレクトリとファイルをコピーします。実際に XCOPY コマンドを使用しない場合でも、単純なファイルのコピーによるインストールを、XCOPY による配置と呼ぶ場合もあります。

ただしこの方法は、あらかじめクライアント PC に .NET Framework がインストールされている環境でのみ使用できます。クライアント PC に .NET Framework がインストールされていない場合には、併せてそれを配置しなければなりませんが、その場合には次に説明しているインストーラーによる配置が必要になります。この XCOPY による配置方法は ASP.NET Web アプリケーションの配置によく使用されます。

なお、ファイルをコピーせずに、ファイル サーバーにプログラム一式を配置しておいて、それを直接実行してもらう方が簡単だと思えるかもしれませんが、前述のコード アクセス セキュリティ (CAS) によるセキュリティの制限があるため、.NET ではその方法は適切ではありません。

ページのトップへ


インストーラーによる配置

以前は、インストーラーを作成するために、サード パーティ製の専用ソフトウェアを購入する必要がありましたが、現在では Visual Studio にも一般的な使用に問題がないレベルのインストーラーを作成する機能が備わっています。

ここではその基本的な作成方法について解説しておきます。まず Visual Studio で [セットアップ プロジェクト] のテンプレートを選択して、新しいプロジェクトを作成します。

まず Visual Studio で [セットアップ プロジェクト] のテンプレートを選択して、新しいプロジェクトを作成します。

[ファイル システム] 画面が表示されるので、[アプリケーション フォルダー] を右クリックして、セットアップ プロジェクトに追加したいファイルやアセンブリを指定します。これにより、それらが参照しているアセンブリも含めて、[アプリケーション フォルダー] にアセンブリが追加されます。

[ユーザーのデスクトップ] や [ユーザーのプログラム メニュー] には、必要に応じて実行ファイルのショートカットを作成し、ビルドを実施すると、インストーラーが作成されます。

[ユーザーのデスクトップ] や [ユーザーのプログラム メニュー] には、必要に応じて実行ファイルのショートカットを作成し、ビルドを実施すると、インストーラが作成されます。

このようにして作成したインストーラーには.NET Framework も自動的に含められており、インストール先のクライアント PC に .NET Framework がインストールされていない場合には、アプリケーションと同時に .NET Framework がインストールされます。

また当然ながら、このようなインストーラーを使ってアプリケーションをインストールした場合には、ユーザーはコントロール パネルの「プログラムの追加と削除」からアプリケーションをアンインストールすることができます。

また当然ながら、このようなインストーラを使ってアプリケーションをインストールした場合には、ユーザーはコントロール パネルの「プログラムの追加と削除」からアプリケーションをアンインストールすることができます。

ページのトップへ


ClickOnce による配置

.NET アプリケーションの基本的な形態としては、表現力や操作性に優れた Windows アプリケーションと、配置や更新が容易でクライアント PC へのインストールが不要な Web アプリケーションの 2 つがありますが、ClickOnce は、Windows アプリケーションでありながら、Web アプリケーションのような手軽な配置を目指した技術です。

ここでは ClickOnce による配布 (ClickOnce では発行と呼ばれます) から配置、更新、保守までの具体的な手順を説明していきます。ClickOnce アプリケーションは、.NET Framework SDK に付属のコマンドライン ツールでも設定できますが、Visual Studio を使用するとより簡単に行えます。

すでに Windows アプリケーションが完成しているものとして、ClickOnce を利用するための手順を見ていきましょう。まずアプリケーションの発行を行うために、プロジェクトを右クリックして [発行] をクリックします。

すでに Windows アプリケーションが完成しているものとして、ClickOnce を利用するための手順を見ていきましょう。まずアプリケーションの発行を行うために、プロジェクトを右クリックして [発行] をクリックします。

発行ウィザードが実行されますので、発行先を入力します。通常は Web サイトを使用しますが、ファイル サーバーや FTP サーバーなどに発行することも可能です。

発行ウィザードが実行されますので、発行先を入力します。通常は Web サイトを使用しますが、ファイル サーバーや FTP サーバーなどに発行することも可能です。

Web サイトに発行した場合には、発行ウィザードを完了させると、以下のようなインストール ページが作成されます。(デザインにこだわらなければ) 利用者にこのページの URL を伝えれば作業は完了です。

Web サイトに発行した場合には、発行ウィザードを完了させると、以下のようなインストール ページが作成されます。(デザインにこだわらなければ) 利用者にこのページの URL を伝えれば作業は完了です。

すでに必須コンポーネントがクライアント PC にインストールされている場合には、[起動] リンクをクリックしてアプリケーションを起動することができます。そうでない場合には、この画面のように必須コンポーネントの一覧が表示され、[インストール] ボタンをクリックすることでそれらのインストールが開始され、その後、アプリケーションが起動します。

そうでない場合には、この画面のように必須コンポーネントの一覧が表示され、[インストール] ボタンをクリックすることでそれらのインストールが開始され、その後、アプリケーションが起動します。

必須コンポーネントの種類と、それらをどこからインストールするかは、Visual Studio の [必須コンポーネント] ダイアログで設定しておきます。

必須コンポーネントの種類と、それらをどこからインストールするかは、Visual Studio の [必須コンポーネント] ダイアログで設定しておきます。

ここでアプリケーションの動作に必要なコンポーネントを選択しておくと、アプリケーションのインストール時にはクライアント PC にすでにインストールされているコンポーネントが確認され、不足しているコンポーネントがインストールされます。通常、.NET Framework などの必須コンポーネントについては自動的に判別されて選択されているため気にする必要はありませんが、SQL Server Express などのコンポーネントを追加する必要があるときは、このダイアログで設定します。

インストール ページからプログラムが起動されると、スタート メニューにプログラムが追加されて、次回からは Web ページを開かずに、スタート メニューからアプリケーションを起動できるようになります。

インストール ページからプログラムが起動されると、スタート メニューにプログラムが追加されて、次回からは Web ページを開かずに、スタート メニューからアプリケーションを起動できるようになります。

ClickOnce には、アプリケーションの自動更新機能も備わっています。アプリケーションを更新して再発行した場合には、ユーザーがアプリケーションを実行したときに更新が促されます。更新チェックのタイミングは自分で設定できますが、デフォルトではアプリケーションの起動時となっています。

ユーザーがスタート メニューからプログラムを起動したときにプログラムが更新されている場合、以下のようなダイアログが表示され、バージョンアップすることができます。

ユーザーがスタート メニューからプログラムを起動したときにプログラムが更新されている場合、以下のようなダイアログが表示され、バージョンアップすることができます。

また、ClickOnce によりアプリケーションがインストールされた場合にも、通常のインストーラーなどでインストールされたアプリケーションと同様に、「プログラムの追加と削除」に項目が追加されます。

また、ClickOnce によりアプリケーションがインストールされた場合にも、通常のインストーラなどでインストールされたアプリケーションと同様に、「プログラムの追加と削除」に項目が追加されます。

[変更と削除] ボタンをクリックすると、次のようなダイアログが表示されます。 

[変更と削除] ボタンをクリックすると、次のようなダイアログが表示されます。

ここで「アプリケーションを以前の状態に復元します。」を選択して、インストールされたアプリケーションを 1 つ前のバージョンに戻すといったことも可能です。アプリケーションをバージョンアップした結果、動作がおかしくなった場合などに使用します。

次に、Visual Studio により発行されたアプリケーションが、発行先でどのように構成されているかを見ておきましょう。まずは、発行先のフォルダーを開きます。

次に、Visual Studio により発行されたアプリケーションが、発行先でどのように構成されているかを見ておきましょう。まずは、発行先のフォルダを開きます。

先ほどのインストール ページである publish.htm と、そこで [インストール] ボタンをクリックしたときに実行される setup.exe が作られているのを確認できます。またこれ以外に、拡張子が .application のファイルが作成されているのも確認できます。このファイルは、配置マニフェストと呼ばれていて、アプリケーションの配置に関する情報が記述されています。

ClickOnce では、アプリケーションがサーバー上で以下のように配置されます。

ClickOnce では、アプリケーションがサーバー上で以下のように配置されます。

アプリケーションを構成するアセンブリは、ApplicationFiles フォルダーが作成され、そこにバージョンごとにサブ フォルダーが作成されて配置されます。ただし、Web サーバーによっては、拡張子が .exe のファイルの配置に制限がかかっている場合があるために .deploy という拡張子が付与されて配置されています。特に問題がない場合は、.deploy を付与せずに発行することもできます。

配置マニフェスト (.application ファイル) では、最新バージョンのアプリケーション マニフェスト (.manifest ファイル) に関する情報やアプリケーションの配置ポリシーについて記述されています。アプリケーション マニフェストは、アプリケーションの実行に必要なアセンブリに関する情報が記述されたファイルです。

アプリケーション マニフェストでは、アプリケーションの実行に必要なアクセス許可も指定されています。ClickOnce で配布されたアプリケーションも、当然ながらコード アクセス セキュリティ によってセキュリティの制限がかけられます。通常の配布方法であれば、Web サーバーからアプリケーションを起動した場合、LocalIntranet または、Internet のセキュリティが適用されるため、アプリケーションの動作に大きな制約がかかることになります。

ClickOnce では、アプリケーション マニフェストにアプリケーションの動作に必要なアクセス許可を宣言することによって、デフォルトで付与されるアクセス許可以上のアクセス許可を要求できるようになっています。これによって、アプリケーションの制限を少なくし、業務アプリケーションなどの配布をより容易に実現可能にしています。

ClickOnce によりインストールされたアプリケーションに対しては、.NET Framework は、アプリケーション マニフェストで宣言されたアクセス許可セットを持つサンドボックスを作成します。アプリケーションは、このサンドボックスの中でのみ実行されるため、高い信頼性を実現できます。

アプリケーションは、このサンドボックスの中でのみ実行されるため、高い信頼性を実現できます。

ページのトップへ


GAC への配置

複数のアプリケーションから参照され、厳密なバージョン管理が必要なコンポーネントは GAC にインストールすることでバージョン管理を容易にすることができます。

開発時には、.NET Framework SDK に含まれるグローバル アセンブリ ツール (Gacutil.exe) を使用して、以下のようなコマンドラインにより GAC にアセンブリをインストールできます。

gacuti.exe /i lib.dll

同じく、削除するには /u オプションを指定して、次のように実行します。

gacutil.exe /u "lib, Version=1.0.0.0, Culture=neutral, PublicKeyToken=25520ce5d712a2c6"

このように、開発時には Gacutil.exe が使えますが、実際にアプリケーションの配置を行うときには、クライアント PC に .NET Framework SDK がインストールされていないのが普通であるため、Gacutil.exe は使えません。そのため、配置時にアセンブリを GAC に登録する必要がある場合には、インストーラーを作成するのが一般的です。

Visual Studio のセットアップ プロジェクトでは、「対象コンピューター上のファイル システム」に特別なフォルダーとして「グローバル アセンブリ キャッシュ フォルダー」を追加し、そこにアセンブリを登録しておくことで、インストール時にアセンブリを GAC に登録するようなインストーラーを作成できます。

Visual Studio のセットアップ プロジェクトでは、「対象コンピュータ上のファイル システム」に特別なフォルダとして「グローバル アセンブリ キャッシュ フォルダ」を追加し、そこにアセンブリを登録しておくことで、インストール時にアセンブリを GAC に登録するようなインストーラを作成できます。

ちなみに、GAC にアセンブリを登録するもう 1 つの方法としては、エクスプローラーを使用する方法があります。GAC フォルダーは、エクスプローラーのシェル拡張機能により以下のような表示になっていることは、すでに解説しましが、このシェル拡張の働きによって、エクスプローラーでドラッグ&ドロップによりアセンブリを GAC に登録することが可能です。

ちなみに、GAC にアセンブリを登録するもう 1 つの方法としては、エクスプローラを使用する方法があります。GAC フォルダは、エクスプローラのシェル拡張機能により以下のような表示になっていることは、すでに解説しましが、このシェル拡張の働きによって、エクスプローラでドラッグ&ドロップによりアセンブリを GAC に登録することが可能です。

ただし、このような操作はエクスプローラーだけで可能であり、コマンド プロンプトなどでは有効ではありません。つまり、COPY や XCOPY コマンドを使用してもアセンブリを GAC に登録することはできません。

ページのトップへ