GAC (グローバル アセンブリ キャッシュ)は、共有アセンブリを含むディレクトリで、ファイル システムの %Windows%\Assembly の下に保存されています。 GAC は、グローバル コンポーネントを保存し、個別ファイルの複数のバージョン(同じファイル名も可)を保管できます。 GAC は、Fusion とも呼ばれます。
GAC は、HKLM\Software\Microsoft\Fusion というレジストリで指定されています。
GAC (グローバル アセンブリ キャッシュ)は、.NET ランタイム システムとともに自動的にインストールされます。 GAC 内のアセンブリには、独自の参照カウントがあります。 この参照カウントを正しく処理するために、GAC 内のすべての変更が Fusion API を使用して記録され、インストールされます。
パッケージャは、GAC に加えられた変更を gac.sxp アーカイブ ファイルに保存します。
gac.sxp アーカイブ ファイルは、以下のセクションを任意の数だけ含むことができます。
n は、アーカイブ ファイルのシーケンス番号(1、2、3 など)。
以下の例では、CreateAssembly を 1 つ、および DeleteAssembly を 1 つ含む gac.sxp アーカイブ ファイルの内容がどのようになるのかを示します。
#Sign# ArchiveName=gac_xmpl Release=4002 SXP=1.0
#Locale# Codepage=3
#CreateAssembly1# AsmDisplayName=MyAsm, Version=1.0.2879.30837, Culture=GER, PublicKeyToken=316630fb36ca936c AsmFile=$(SxpWinDir)\assembly\GAC\MyAsm\1.0.2879.30837_GER_316630fb36ca936c\MyAsm.dll Ref.Size=32 Ref.Flags=0 Ref.guidScheme=Data1=2ec93463 Data2=b0c3 Data3=45e1 Data4=8364327e96aea856 Ref.Identifier=SXP Ref.NonCanonicalData=Created by SXP Installer
#DeleteAssembly1# AsmDisplayName=MyAsm, Version=1.0.2879.30837, Culture=GER, PublicKeyToken=316630fb36ca936c AsmFile=$(SxpWinDir)\assembly\GAC\MyAsm\1.0.2879.30837_GER_316630fb36ca936c\MyAsm.dll Ref.Size=32 Ref.Flags=0 Ref.guidScheme=Data1=2ec93463 Data2=b0c3 Data3=45e1 Data4=8364327e96aea856 Ref.Identifier=Test Ref.NonCanonicalData=MyReferenz
AsmDisplayName および AsmFile entries は必須です。
Ref.xxx エントリはオプションで、インストールする参照を指定します。 すべての参照が削除されると、アセンブリは GAC から削除されるだけです。 つまり、DeleteAssemblyn セクションで指定されているアセンブリが最後の参照を削除する場合のみ、SXP インストーがアセンブリを GAC から削除します。 その他の場合は、参照のみが削除されます。 それに応じて、SXP インストーラは、CreateAssemblyn セクション内のアセンブリがすでにインストールしてある場合にのみ、参照をインストールします。
参照エントリが CreateAssemblyn セクションで見つからない場合、アセンブリは参照なしでインストールされます。
Microsoft Installer (MSI)によってインストールされたアセンブリは、特殊な GUID スキーム(fusion.h で定義されている FUSION_REFCOUNT_MSI_GUID)を持ちます。 アセンブリをインストールする際に、Microsoft Installer のみがこの GUID スキームを使用できます。 そのため、SXP インストーラは、インストールを実行する前に GUID スキームを変更します。 SXP インストーラは、MSI GUID スキームを OPAQUE GUID スキームに置き換え、識別子を MSI から SXP へ変更します。
Fusion API がアセンブリの情報を保存するレジストリ キー HKEY_LOCAL_MACHINE\Software\Microsoft\Fusion は、SXP パッケージャが実行するレジストリ スキャンから除外されます。
、パッケージのインストール中に削除されたアセンブリは、SXP パッケージのアンインストールの過程で復元されません。
| Copyright © 2014 CA Technologies. All rights reserved. |
|