技術解説
DLL Hellを解消する新しいWindowsインストーラとアセンブリ

コラム:アプリケーションのインストール時に何が起きているか?

Peter Pawlak
2003/03/13
Copyright(C) 2003, Redmond Communications Inc. and Mediaselect Inc.

 コンピュータ環境には実にさまざまな種類の組み合わせが考えられる。そのため、アプリケーションのセットアップ・プログラムには「どのような環境においても正しく機能できる性能」が要求される。

 Windows Installerであれ、そのほかのセットアップ・プログラムであれ、インストール・プログラムはすべて共通のタスク・セットを実行する必要があり、それらのタスクがすべて正しく実行されない場合、アプリケーションが正しく動作しなかったり(あるいは全く動作しない)、ほかのアプリケーションやシステムサービスに障害を引き起こす可能性がある。

基本的なタスク

 アプリケーションをインストール、アンインストール、更新する場合(マイナーなhotfixからメジャー・アップグレードまで)、インストール・ルーチンの作成者が定めたルールに応じて、以下の4つの基本的なアクションが発生する。

●ディレクトリの作成または削除、ファイルのコピーまたは削除
 アプリケーションの実行コードとデータを含むすべてのファイルをファイル・システム内の適切なディレクトリにコピーしなければならない。ショートカットもそのうちの1つだ。ショートカットはほかのファイルへのリンクで、ユーザーがデスクトップやスタートメニューからアプリケーションを実行するためのポイントを提供する専用ファイル。

 アンインストールの際には、不要となるすべてのファイルとディレクトリを削除しなければならない。開発者は使用中のファイルや、ほかのアプリケーションが依存するファイルを考慮しなければならないため、削除には相当の注意が必要だ。

●レジストリ・キーの記述、修正、または削除
 アプリケーションがWindowsレジストリに保存する情報は、COMオブジェクト登録データ、設定パラメータ、ファイル拡張子関連付け、サービスとしてバックグラウンド動作するアプリケーション(ウイルス・スキャナなど)のスタートアップ情報と多岐にわたる。

 Windowsはマルチ・ユーザー・システムであるため、アプリケーションはシステムごとの設定とユーザーごとの設定の両方を必要とする場合が多い。しかもコンピュータ上にすでにプロファイルを持っているアカウントだけでなく、後から追加された新しいプロファイルもカバーする必要がある。

 つまりインストールは、単に1回限りの作業ではないということだ。新規ユーザーがコンピュータにログオンするたびに、ほかのアプリケーションやシステム・コンポーネントを破壊することなく、適切なレジストリ・キーを作成、修正、あるいは削除しなければならない。

●ファイルとレジストリ・キーへのアクセス許可の設定
 アプリケーションの安全性を保ち、インストール時の不注意に伴うトラブルを避けるために、セットアップ・プログラムでファイルとレジストリ・キーのアクセス許可を設定し、管理者以外のユーザーがそれらを変更したり、削除したりできないようにする必要がある。

●設定ファイルの作成と編集
 ほとんどのWindowsアプリケーションは設定情報をレジストリに保存するが、一部のアプリケーションは個別のファイルに保存する。例えば、IISは設定パラメータの多くを個別のメタベース・ファイルに保存する。こうしたファイルはインストール時に作成され、通常、更新時に編集が必要となる。

 これらのタスクの大半は、ファイル・システムとレジストリの保護された領域で実行されるため、セットアップ・プログラムは通常、高い権限を持つユーザーが実行する必要がある。

そのほかの重要なタスク

 こうしたアクションがどのように実行されるかを決定するのがインストール規則だ。インストール規則はさまざまな要因に依存する。そのほかの重要なセットアップ・タスクには、以下のようなものがある。

●インストール時のデータ収集
 最もシンプルな通常のインストールの場合、情報はインストールを実行しているユーザーから、またはWindows InstallerのTransformファイルといったアンサー・ファイルで管理者から提供される。こうした情報には、好ましいインストールの経路、プログラム・オプション、起動キー情報などが含まれる。またセットアップ・プログラムは、個人ユーザーに追加のソース・メディアへの経路を問い合わせたり、ディスクを切り替えるように促すこともある。

●依存関係の確認
 インストールを成功させるために、セットアップ・プログラムはOSの種類、ディスクの空き容量、メモリ容量、必須デバイス、コンポーネント、そしてサービスなど、さまざまな依存関係を確認する必要がある。また、フル・インストールではなくアップデートで済むかどうかを判断するために、同じアプリケーションの以前のバージョンの存在についても確認する必要がある。

●例外処理
 インストール時には、さまざまな失敗が生じる可能性がある。だが、アプリケーションのインストールを中途半端な状態で終えるわけにはいかない。開発者は、プログラムをインストールしているユーザーにエラー情報を提供したり、あらゆる時点で問題を修正できるようにするなど、例外的状況を処理するためのコードをセットアップ・プログラムに含める必要がある。

 また、想定外の問題が生じた場合は、システムを以前の良好な状態にロールバックしなければならない。例えば、ドライブに十分なディスク容量が残っていない場合、セットアップ・プログラムはユーザーにその旨を伝え、別のドライブを選択させる必要がある。ユーザーがほかのドライブを選択しなかった場合は、システムをインストール以前の状態に戻さなければならない。

 ほとんどのセットアップ・プログラムは、こうした重要なアクションのほかにも、進行状況の通知、グラフィックの表示、製品登録情報の要求など、各種のタスクを実行する。


 INDEX
  [技術解説]DLL Hellを解消する新しいWindowsインストーラとアセンブリ
    1.クライアント・ソフトウェアのインストールに関わる問題
    2.Windows Installer 2.0の新機能
    3.新しいサイド・バイ・サイド・コンポーネントのサポート
    コラム:アプリケーションのインストール時に何が起きているか?
      コラム:インストール技術の改善の歴史
      コラム:Windows Installerの概要
      コラム:.NETとWin32のサイド・バイ・サイド共有コンポーネント
 
 技術解説

Windows Server Insider フォーラム 新着記事
@ITメールマガジン 新着情報やスタッフのコラムがメールで届きます(無料)

スキルアップ/キャリアアップ

.NET管理者虎の巻

- PR -
- PR -