gac.sxp-Archivdatei

Das Global Assembly Cache (GAC) ist ein Verzeichnis mit freigegebenen Assemblies. Es befindet sich im Dateisystem unter "%Windows%\Assembly". Das GAC speichert globale Komponenten und kann mehrere Versionen einer einzelnen Datei aufbewahren (sogar mit demselben Dateinamen). Das GAC ist auch als "Fusion" bekannt.

Der Speicherort des GAC ist in der Registrierung unter "HKLM\Software\Microsoft\Fusion" angegeben.

Das Global Assembly Cache (GAC) wird automatisch zusammen mit dem .NET-Laufzeitsystem installiert. Die Assemblies im GAC haben eine eigene Referenzzählung. Damit diese Referenzzählung ordnungsgemäß erfolgt, werden alle Änderungen im GAC aufgezeichnet und mit Hilfe der Fusion-API installiert.

Der Packager speichert Änderungen am GADC in der Archivdatei "gac.sxp".

Die Archivdatei "gac.sxp" kann eine beliebige Zahl der folgenden Abschnitte enthalten:

n ist die Sequenznummer der Archivdatei (1, 2, 3 usw.).

Nachfolgendes Beispiel zeigt, wie eine gac.sxp-Archivdatei mit einem CreateAssembly- und einem DeleteAssembly-Abschnitt aussieht:

#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

Die Einträge "AsmDisplayName" und "AsmFile" sind obligatorisch.

Die Einträge "Ref.xxx" sind optional. Sie geben eine zu installierende Referenz an. Ein Assembly wird nur aus dem GAC entfernt, wenn alle Referenzen gelöscht werden. Dies bedeutet, dass das SXP-Installationsprogramm ein Assembly nur dann aus dem GAC entfernt, wenn das im Abschnitt "DeleteAssemblyn" angegebene Assembly die letzte Referenz löscht. Andernfalls wird nur die Referenz gelöscht. Gleichermaßen installiert das SXP-Installationsprogramm die Referenz nur dann, wenn das im Abschnitt "CreateAssemblyn" angegebene Assembly bereits installiert ist.

Falls die Referenzeinträge in einem Abschnitt "CreateAssemblyn" fehlen, wird das Assembly ohne Referenz installiert.

Assemblies, die vom Microsoft Installer (MSI) installiert werden, haben ein spezielles GUID-Schema (FUSION_REFCOUNT_MSI_GUID definiert in fusion.h). Nur der Microsoft Installer kann dieses GUID-Schema bei der Installation von Assemblies verwenden. Daher ändert das SXP-Installationsprogramm das GUID-Schema, bevor es eine Installation durchführt. Das SXP-Installationsprogramm ersetzt das MSI-GUID-Schema durch das OPAQUE GUID-Schema und ändert die Kennung von "MSI" in "SXP".

Der Registrierungsschlüssel "HKEY_LOCAL_MACHINE\Software\Microsoft\Fusion", in dem die Fusion-API Informationen über die Assemblies speichert, wird beim Durchsuchen der Registrierung durch den SXP-Packager ausgeschlossen.

Bei der Deinstallation eines SXP-Pakets werden Assemblies, die bei der Installation des Pakets gelöscht wurden, nicht wiederhergestellt.