分離アプリケーションとSide-by-Sideアセンブリ
(Isolated Applications and Side-by-side Assemblies から転送)
出典: フリー百科事典『ウィキペディア(Wikipedia)』 (2022/01/05 16:04 UTC 版)
ナビゲーションに移動 検索に移動分離アプリケーションとSide-by-Sideアセンブリ (Isolated Applications and Side-by-side Assemblies) とは、Windows XPで導入された複数バージョンのソフトウェアコンポーネントの衝突を避けるための仕組みである。システム上に複数バージョンのコンポーネントを共存させ、アプリケーションごとに適切なバージョンのコンポーネントを選択可能にすることで、DLL地獄の解消を意図している。.NET Frameworkにおけるバージョン管理の仕組みをWindowsネイティブに持ち込んだものという見方もできる。
使用例
- コモンコントロール (comctl32.dll) のバージョン6[1][2]
- Microsoft Visual C++ 2005/2008ランタイムの動的リンクバージョン[3][4][注釈 1]
- GDI+ (gdiplus.dll)
分離アプリケーション
分離アプリケーションとは、後述するアプリケーションマニフェストに自己の使用するコンポーネント(Side-by-Sideアセンブリ)を記述したアプリケーションである。分離アプリケーションの実行時、Win32システムはアプリケーションマニフェストを見て、読み込むべきアセンブリ (DLL/EXE) のバージョンを決定する。アセンブリは自身専用のプライベートアセンブリか、複数のバージョンが共存する共有アセンブリとして存在するため、他のアプリケーションによるアセンブリの追加・削除・更新などの影響を受けずに済む。
Side-by-Sideアセンブリ
Side-by-Sideアセンブリとは、DLL、ウィンドウクラス、COMサーバ、タイプライブラリ、COMインターフェイスなどの集合をマニフェストに記載したものである。
アセンブリは自身について次のような情報を持ち[5]、これによって区別される。
- 種別 (win32など)
- 名前
- 言語
- プロセッサアーキテクチャ
- バージョン
- 公開キートークン
このうち、少なくとも種別・名前・バージョンが必須である。
アセンブリは、共有アセンブリとプライベートアセンブリに区別される。
共有アセンブリ
共有アセンブリは様々なアプリケーションにまたがって用いられるアセンブリであり、WinSxSフォルダーにインストールされる。インストールにはデジタル署名とWindows Installerの使用が求められる[6]。例え同名のファイルでも、異なるアセンブリに属していれば、異なるサブディレクトリに格納され、上書きされることはない。
プライベートアセンブリ
プライベートアセンブリは共有されることなくアプリケーションが個別に用いるアセンブリである。共有アセンブリと違いインストールの必要がない。アプリケーションの実行ファイルの存在するディレクトリもしくはそのサブディレクトリに配置される。そのため、共有アセンブリを使用しないアプリケーションは、インストーラーを使用せず単純なファイルコピーのみでアプリケーションを使用できる。
通常COMコンポーネントはWindowsシステムレジストリへの事前登録が必要となり、また登録の際には管理者権限を要求するが、SxSプライベートアセンブリの仕組みを利用することでレジストリ登録が不要なCOMコンポーネントを作成・利用することも可能となる[7]。
マニフェスト
マニフェストは分離アプリケーション、Side-by-Sideアセンブリの双方で自己について記載するXMLファイルであり、拡張子manifestを持つ。分離アプリケーションが用いるものをアプリケーションマニフェスト、Side-by-Sideアセンブリが用いるものをアセンブリマニフェストと呼ぶ。
Microsoft Docs(旧MSDNライブラリ)の「Windows XP ビジュアル スタイルの使用」[1]に記載されてあるアプリケーションマニフェストの例を以下に引用する。
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<assembly xmlns="urn:schemas-microsoft-com:asm.v1" manifestVersion="1.0">
<assemblyIdentity
version="1.0.0.0"
processorArchitecture="X86"
name="CompanyName.ProductName.YourApp"
type="win32"
/>
<description>アプリケーションの説明</description>
<dependency>
<dependentAssembly>
<assemblyIdentity
type="win32"
name="Microsoft.Windows.Common-Controls"
version="6.0.0.0"
processorArchitecture="X86"
publicKeyToken="6595b64144ccf1df"
language="*"
/>
</dependentAssembly>
</dependency>
</assembly>
assemblyIdentity要素およびdescription要素では、分離アプリケーション自身の情報について記述する。そして、dependentAssembly要素でこのアプリケーションが参照するSide-by-Sideアセンブリの情報を記載する。assemblyIdentity要素1つがアセンブリ1つに対応する。
アプリケーションマニフェストは、通常、分離アプリケーションの実行時に読み込まれるが、アクティベーションコンテキストAPIを使用することでより細かく制御できる。
なお、分離アプリケーションとSide-by-Sideアセンブリに関する項目のほか、アプリケーションマニフェストには以下の項目も存在する。
- ユーザーアカウント制御に関するもの(Windows Vistaより)[8]。
- 高DPI対応の宣言(Windows Vistaより)[9]。
- Windowsへの互換性表明(Windows 7より)[10]。この機能が搭載されたのはWindows 7からではあるものの、Windows Vistaへの互換を宣言する旨の項目も用意されている。
マニフェストは「実行ファイル名.manifest」という名前で実行ファイルと同じフォルダーに置くか、ビルド時にリソースとして実行ファイルに埋め込むことで機能する[11]。
構成ファイル
アセンブリの配布を始めた後に、使用するアセンブリの変更を行うための仕組みである。
例えば、セキュリティ上の問題が発覚した場合、発行者構成ファイルをWinSxSにインストールすると、プライベートアセンブリを使用していた分離アプリケーションでもバージョンが該当すれば、共有アセンブリにインストールされたより新しいバージョンを使用させると言ったことも可能である。
Side-by-Sideコンポーネント共有
Side-by-Sideコンポーネント共有とは、Windows 2000およびWindows 98 Second Editionにおいて導入された、コンポーネントの衝突を避けるための実装技術である[12][13]。「分離アプリケーションとSide-by-Sideアセンブリ」と同じ目的を持ち、その前身であると言える。
脚注
注釈
- ^ Visual C++ 2010以降の再頒布可能パッケージは中央配置 (central deployment) 方式に戻っている。すなわち、ランタイムインストーラーによって
%WinDir%\System32
にmsvcr100.dllなどが配置される。
出典
- ^ a b “Windows XP ビジュアル スタイルの使用”. Microsoft Docs. マイクロソフト (2008年12月3日). 2022年1月6日閲覧。
- ^ DLL Hellを解消する新しいWindowsインストーラとアセンブリ(7/7) - @IT
- ^ “C/C++ 分離アプリケーションおよび side-by-side アセンブリのビルド”. MSDNライブラリ. マイクロソフト (2007年11月). 2010年3月30日時点のオリジナルよりアーカイブ。2008年11月8日閲覧。
- ^ Concepts of Isolated Applications and Side-by-side Assemblies | Microsoft Docs
- ^ “Assembly Manifests” (英語). MSDNライブラリ. マイクロソフト (2007年11月1日). 2008年11月8日閲覧。
- ^ “Installing Side-by-side Assemblies as Shared Assemblies” (英語). MSDNライブラリ. マイクロソフト (2007年11月1日). 2008年11月8日閲覧。
- ^ Creating Registration-Free COM Objects - Win32 apps | Microsoft Docs
- ^ “Step 6: Create and Embed an Application Manifest (UAC)”. MSDNライブラリ. マイクロソフト. 2008年11月8日閲覧。
- ^ “高 DPI 対応の Win32 アプリケーションを記述する” (日本語). Windows 7 ホワイト ペーパー. マイクロソフト (2009年4月28日). 2010年12月29日閲覧。
- ^ “Application Manifest - Win32 apps” (英語). Microsoft Docs. マイクロソフト (2021年4月28日). 2022年1月6日閲覧。
- ^ “Using Side-by-Side Assemblies as a Resource” (英語). MSDNライブラリ. マイクロソフト (2007年11月1日). 2008年11月8日閲覧。
- ^ アプリケーションで共有する Side-by-Side コンポーネントの実装 (拡張) | Microsoft Docs
- ^ DLL Hellを解消する新しいWindowsインストーラとアセンブリ(5/7) - @IT
参考
![]() | この節には参考文献や外部リンクの一覧が含まれていますが、脚注による参照が不十分であるため、情報源が依然不明確です。 |
以下はMSDNライブラリ内
- Windows XP で分離アプリケーションと Side-by-Side アセンブリをビルドし、サービスを提供する方法
- Isolated Applications and Side-by-side Assemblies
関連項目
外部リンク
![]() | この節には参考文献や外部リンクの一覧が含まれていますが、脚注による参照が不十分であるため、情報源が依然不明確です。 |
「Isolated Applications and Side-by-side Assemblies」の例文・使い方・用例・文例
- 私はまず、この点をAmandaに確認します。
- 11月21日にHolyoke Bar and Grillで、Pete Laurenの退職パーティーが開かれることをお知らせします。11 月10 日までにお返事をください。
- 来月のロンドンへの出張のために、飛行機の便を予約して、Southland銀行の近くの宿泊施設を手配してもらえますか。
- 年次監査を行うために、Bradford and Partnersの会計士たちが10 月10 日の午前10 時に当社を訪ねてくる予定です。
- 一般に公開されたことのない、Ruth and Steve Whitmanの個人コレクションの絵画を含む、およそ120 点の作品が展示される。
- Ruth and Steve Whitmanを紹介すること。
- Conteeさんは、昨年Hope and Learnの会長に就任された、受賞歴のあるミュージカル女優さんです。
- Hope and Learnは遠隔地に学校を建設する資金を集める慈善団体です。
- Hope and Learnへの寄付は、この夜会の最後に集めます。
- 気をつけの姿勢で立つ (⇔stand at ease).
- 等位[対等]接続詞 《対等の語句を接続する and, but など》.
- 等位接続詞 《and, but, or, for など; ⇔subordinate conjunction》.
- 連結接続詞 《and など》.
- 【文法】 相関接続詞 《both…and; either…or など》.
- 蒸留酒, 火酒 《brandy, gin, rum, whiskey など》.
- 英国陸軍士官学校 《Berkshire の Sandhurst /sndhɚːst|‐həːst/ にある》.
- (英国の)運輸省. the Ministry of Education(, Science and Culture) (日本の)文部省.
- 中央裁判所施設 《London の Strand 街にある高等法院の建物》.
- 弱形 《and の /ən/など》.
- 《主に米国で用いられる》 = 《主に英国で用いられる》 the Committee of Ways and Means 歳入委員会.
- Isolated Applications and Side-by-side Assembliesのページへのリンク