Fichier d'archive gac.sxp

Le Global Assembly Cache (GAC) est un répertoire contenant les assemblages partagés qui se trouvent dans le système de fichiers sous %Windows%\Assembly. Le GAC stocke les composants globaux et peut conserver plusieurs versions d'un fichier (portant le même nom de fichier). Le GAC est également appelé Fusion.

L'emplacement du GAC est spécifié dans le registre sous HKLM\Software\Microsoft\Fusion.

Le Global Assembly Cache (GAC) est automatiquement installé avec le système d'exécution .NET. Les assemblages du GAC possèdent leur propre compteur de référence. Pour gérer correctement ce compteur de référence, toutes les modifications apportées au GAC sont enregistrées et installées à l'aide de Fusion API.

L'outil de packaging de logiciels stocke les modifications apportées au GAC et au fichier d'archive gac.sxp.

Le fichier d'archive gac.sxp peut contenir un nombre illimité des sections suivantes :

n est le numéro séquentiel du fichier d'archive (1, 2, 3 etc.).

L'exemple suivant présente l'apparence d'un fichier d'archive gac.xsp contenant une section CreateAssembly et une section DeleteAssembly :

#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

Les entrées AsmDisplayName et AsmFile sont obligatoires.

Les entrées Ref.xxx sont facultatives et spécifient une référence à installer. Un assemblage est uniquement supprimé à partir du GAC lorsque toutes les références sont supprimées. Cela signifie que le programme d'installation SXP supprime un assemblage du GAC uniquement si l'assemblage spécifié dans la section DeleteAssemblyn supprime la dernière référence. Dans le cas contraire, seule la référence est supprimée. De même, le programme d'installation SXP installe la référence uniquement lorsque l'assemblage dans la section CreateAssemblyn est déjà installé.

Si les entrées de référence sont manquantes dans la section CreateAssemblyn, l'assemblage est installé sans référence.

Les assemblages installés par Microsoft Installer (MSI) présentent un schéma GUID spécifique (FUSION_REFCOUNT_MSI_GUID défini dans fusion.h). Seul Microsoft Installer peut utiliser le schéma GUID lors de l'installation des assemblages. Par conséquent, le programme d'installation SXP modifie le schéma GUID avant de procéder à une installation. Le programme d'installation SXP remplace le schéma GUID MSI par le schéma OPAQUE GUID et transforme l'identificateur de MSI en SXP.

La clé de registre HKEY_LOCAL_MACHINE\Software\Microsoft\Fusion, où Fusion API stocke les informations sur les assemblages, est exclue de l'analyse du registre effectuée par le PAckager SXP.

Lors de la désinstallation d'un package SXP, les assemblages supprimés lors de l'installation du package ne sont pas restaurés.