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

コラム:インストール技術の改善の歴史

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

 1990年代後半にシック・クライアント・アプリケーションが複雑化した結果、Microsoftは顧客がシン・クライアント・アプリケーションへ移行するのを阻止するために、インストール技術を大幅に改良しなければならないことを認識した。

 Windows Installer(開発コード名:Darwin)はOfficeアプリケーションをインストールする手段として開発されたものだが、幅広い適応性を備えていたため、その後、Windowsに組み込まれた。一方、アプリケーションのインストール時に生じるDLL Hellの問題に悩まされていたWindowsチームは、1台のコンピュータに同一のコンポーネントの複数のバージョンが搭載される場合に発生する問題を解消するための技術開発にも着手した。

Windows Installer 1.x

 この3年間でWindows Installerはインストールの標準的な手段となり、いまではMicrosoftとサード・パーティのほとんどすべてのクライアント・アプリケーションが、この方法でMicrosoftのWin32 OSにインストールされている。また、アプリケーションがWindowsのロゴ要件を満たすためには、このインストール手段を利用する必要がある。

 ただし、Windows Installerはシステム・レベルのコンポーネント、Internet Explorerなどのミドルウェア、サーバ・アプリケーションなどのインストールは想定していない。これらの要素は通常、ドライバやカーネル・レベルのコンポーネントをインストールする必要があるからだ。またWindows InstallerはTerminal Serverへのクライアント・アプリケーションのインストールもサポートするが、多くの場合、特別な手順が必要となる。

 Microsoftは以下の目標を念頭にWindows Installerを開発した。

●インストールのための標準ツールの提供
 Windows Installerが提供される前、各種のセットアップ・プログラムは、それぞれ異なるスイッチ・オプションを使っていた(例えば、ユーザーの介在なしでインストールを実行するようにプログラムに伝えるスイッチなど)。また、セットアップやオプションに対するプリセット・アンサーの提供方法もまちまちだった(あるいは、そうした手段が全く提供されず、管理者がセットアップ・プログラムを再パッケージしなければならないケースもあった)。

 こうしたことから、かつてはSystems Management Server(SMS)などの自動ソフト配布ツールでアプリケーションを正しくインストールすることは、非常に難しいか、あるいはほとんど不可能とも思える状況だった。

 だが、Windows Installerを利用するアプリケーションは、コマンド・スイッチがすべて同一で、自動インストールを実行するための設定はTransformファイルにパッケージできる。またWindows Installerは、最終的なステータスを配布ツールに自動的に送信することが可能だ。

 Windowsのグループポリシー・ベースのソフト配布も、Windows Installerパッケージでのみ機能する。

●インストール、インストール取り消しの信頼性向上
 Windows Installerの場合、インストールはプロセス全体が正しく完了するか、そうでなければシステムがインストール以前の状態にロールバックされるかのどちらかだ。こうすることで、インストールとインストール取り消しの信頼性を高めている。

●インストールのダイナミック化
 かつての静的なインストール技術では、いったんインストールを開始すると、セットアップ・プロセス情報は一切表示されなかった。しかしWindows Installerでは、Win32 APIと自動インターフェイスにより、アプリケーションがインストール・ステータスをその場で問い合わせたり、検証できるようになった。これによって、アプリケーションは問題が生じても自己修復できるほか、新規ユーザーはアプリケーションの個人設定を行うことが可能になった。

 さらに、Windows Installerではオンデマンドでインストールが可能だ。つまり、あまり使わない機能は最初の段階でインストールせず、後から必要に応じてインストールできる。例えば、Officeのクリップアート・ライブラリは、ユーザーが実際に使いたい時点でコンピュータにインストールすることが可能だ。

 開発者はVisual Studio 6.0またはVS.NETに含まれるツールを使って、Windows Installerベースのセットアップ・パッケージを作成できるが、InstallShieldとWiseがこのプロセスを大幅に簡略化するツールを販売している。

サイド・バイ・サイド・コンポーネントのサポート

 Windows 2000とWindows 98 Second Editionから、Microsoftは1つのシステムに同じCOM/Win32コンポーネントの複数のバージョンを格納し(通常はDLLで)、同時に実行できる機能を追加した。しかし、初期の並列実行機能は、Windows XPで導入されたサイド・バイ・サイド共有Win32アセンブリのサポートとは異なる。

 初期の並列実行機能は特定のアプリケーションに限定され、例えば多くのアプリケーションが使用するVisual C++ランタイム・ライブラリといったグローバルに共有されるコンポーネントでは利用できなかった(この件に関しては、MSDN Libraryの「Application Specification for Microsoft Windows 2000 for Desktop Applications」を参照)。

 それでもこの機能によってDLL Hellの一部は解消された。多くのアプリケーションは通常、テストされたバージョンのコンポーネントのみをコールしたからだ。さらに、この機能はアプリケーションをインストールした後の再起動の必要性も少なくした。専用DLLは、新しいバージョンがインストールされてもリプレイスされないからだ。


 INDEX
  [技術解説]DLL Hellを解消する新しいWindowsインストーラとアセンブリ
    1.クライアント・ソフトウェアのインストールに関わる問題
    2.Windows Installer 2.0の新機能
    3.新しいサイド・バイ・サイド・コンポーネントのサポート
      コラム:アプリケーションのインストール時に何が起きているか?
    コラム:インストール技術の改善の歴史
      コラム:Windows Installerの概要
      コラム:.NETとWin32のサイド・バイ・サイド共有コンポーネント
 
 技術解説
Windows Server Insider フォーラム 新着記事
@ITメールマガジン 新着情報やスタッフのコラムがメールで届きます(無料)

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

.NET管理者虎の巻

- PR -
- PR -