分離アプリケーションとサイドバイサイドアセンブリ
分離アプリケーション(Isolated Applications)とサイドバイサイドアセンブリ(Side-by-Side Assemblies)は、Windows XPにおいて導入された技術であり、複数の
ソフトウェアコンポーネントが同時に存在する際の衝突を防ぐための重要な仕組みです。この技術の目的は、異なるバージョンのコンポーネントがアプリケーションの実行時に混在して起きる「DLL地獄」と呼ばれる問題を解消することにあります。
分離アプリケーションとは
分離アプリケーションは、特定のアプリケーションが自身の依存コンポーネントをアプリケーション
マニフェストというファイルに記載することで構成されます。この
マニフェストには、必要なDLLやEXEファイルのバージョンが明示的に定義されており、アプリケーションが実行されるときにWin32
システムがこの情報を参照して正しいアセンブリをロードします。その結果、各アプリケーションは独立して必要なバージョンのアセンブリを使用でき、他のアプリケーションがアセンブリを追加、削除、または更新した場合でも影響を受けることがありません。
サイドバイサイドアセンブリについて
サイドバイサイドアセンブリとは、複数のコンポーネントをまとめて扱う仕組みであり、これによりDLL、ウィンドウクラス、COMサーバ、タイプライブラリ、COMインターフェイスの情報を
マニフェストに記載することができます。ここに記載される情報には、アセンブリの種別、名前、言語、プロセッサアーキテクチャ、バージョン、公開キートークンなどが含まれ、これらの情報に基づいてアセンブリが唯一無二のものであると判断されます。特に、種別、名前、バージョンは必須項目であり、アセンブリを共に利用するさまざまなアプリケーション間での整合性を保つことを可能にします。
共有アセンブリとプライベートアセンブリ
アセンブリは大きく分けて共有アセンブリとプライベートアセンブリに分類されます。共有アセンブリとは、複数のアプリケーションで共有されるアセンブリで、WinSxSフォルダ内に
インストールされ、
デジタル署名とWindows Installerを利用して管理されます。一方、プライベートアセンブリは特定のアプリケーションでのみ使用され、アプリケーションの実行ファイルと同じディレクトリ内またはそのサブディレクトリに配置されます。このため、プライベートアセンブリを使うアプリケーションは特別な
インストール手順を必要とせず、単純なファイルコピーで利用可能です。さらに、COMコンポーネントの利用際に、SxSプライベートアセンブリを活用することで、レジストリへの事前登録なしで済むケースもあります。
マニフェストは分離アプリケーションやサイドバイサイドアセンブリの基本構成ファイルであり、XML形式で作られています。このファイルには該当アプリケーションの情報が記載されるほか、必要なアセンブリや依存関係についての情報も盛り込まれて成り立っています。アプリケーション
マニフェストとアセンブリ
マニフェストの2種類があり、通常はアプリケーション実行時に読み込まれます。また、Windows Vista以降の
ユーザーアカウント制御や高DPI対応の宣言、Windowsへの互換性表明なども
マニフェストに含まれます。
まとめ
分離アプリケーションとサイドバイサイドアセンブリは、Windowsにおいてアプリケーションの互換性や安定性を保つための重要な技術です。この仕組みを使用することで、異なる
ソフトウェアコンポーネントのコンフリクトを避け、
システム全体の健全性を高めることが可能となり、多様なアプリケーションが共存できる環境を実現しています。