Configuration du serveur de publication
Un fichier de configuration de l’éditeur redirige globalement les applications et les assemblys ayant une dépendance vis-à-vis d’une version d’un assembly côte à côte pour utiliser une autre version du même assembly. Cela permet aux applications et aux assemblys d’utiliser l’assembly mis à jour sans avoir à reconstruire toutes les applications affectées.
fichiers de configuration publisher peuvent être fournis par l’éditeur d’un assembly lors de l’émission d’une nouvelle version de l’assembly avec des correctifs de bogues compatibles ou des mises à jour de sécurité. La version mise à jour doit être entièrement rétrocompatible. Un fichier de configuration de l’éditeur ne doit jamais être utilisé pour ajouter de nouvelles fonctionnalités, sauf si la mise à jour est entièrement rétrocompatible. Les fichiers de configuration du serveur de publication ne doivent jamais être utilisés pour incrémenter la version principale ou mineure d’un assembly. Par exemple, ne redirigez pas l’assembly version 6.0.0.0 vers la version 7.0.0.0 ou vers la version 6.1.0.0.
Les fichiers de configuration de l’éditeur doivent uniquement être émis par l’éditeur de l’assembly. Les développeurs d’assemblys doivent signer des assemblys côte à côte partagés et des fichiers de configuration de l’éditeur. Utilisez la même clé pour signer l’assembly et les fichiers de configuration de l’éditeur associés. Les fichiers de configuration de l’éditeur doivent être signés à l’aide des mêmes outils que ceux utilisés pour les assemblys, consultez exemple de signature d’assembly et création de fichiers signés et de catalogues.
En règle générale, la nouvelle version d’un assembly et le fichier de configuration d’éditeur associé sont installés dans une mise à jour de Service Pack. Les fichiers de configuration de l’éditeur ne doivent jamais être fournis avec des applications redistribuables, car l’installation d’un fichier de configuration de serveur de publication redirige globalement les assemblys sur le système. Si l’assembly mis à jour est fourni comme redistribuable, l’éditeur doit fournir les deux éléments suivants.
- Package Windows Installer (fichier.msi) qui inclut la nouvelle version de l’assembly avec la configuration de l’éditeur. Cela peut être installé en tant que Service Pack ou QFE, car dans ce cas, le client a choisi de mettre à jour globalement le système. Cette version du package ne doit jamais être installée par les applications.
- Module de fusion Windows Installer (fichier .msm) qui inclut uniquement la nouvelle version de l’assembly. Cette version peut être incluse dans les applications.
Les applications nécessitant une version minimale de l’assembly doivent indiquer leur dépendance sur la version minimale, si la version minimale n’est pas disponible sur un système, l’application ne démarre pas. S’il est disponible en tant que redistribuable, il doit être inclus dans la configuration de l’application.
Par exemple, l’installation du fichier de configuration de l’éditeur de suivante redirige la liaison de la version 2.0.0.0 de Microsoft.Windows.SampleAssembly vers la version 2.0.1.0. Cela ajoute une nouvelle stratégie nommée 1.1.0.0.Policy, sous %systemDrive%\windows\winsxs\policies\x86_policy.2.0.Microsoft.Windows.SampleAssembly_75e37300ab7b86_x-ww_<hashvalue>.
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<assembly xmlns="urn:schemas-microsoft-com:asm.v1" manifestVersion="1.0">
<assemblyIdentity type="win32-policy" publicKeyToken="0000000000000000" name="policy.2.0.Microsoft.Windows.SampleAssembly" version="1.1.0.0" processorArchitecture="x86"/>
<dependency>
<dependentAssembly>
<assemblyIdentity type="win32" name="Microsoft.Windows.SampleAssembly" processorArchitecture="x86" publicKeyToken="75e377300ab7b886"/>
<bindingRedirect oldVersion="2.0.0.0" newVersion="2.0.1.0"/>
</dependentAssembly>
</dependency>
</assembly>
L’installation du fichier de configuration de l’éditeur suivant pour le même assembly redirige la liaison de la version 2.0.0.0 de Microsoft.Windows.SampleAssembly vers la version 2.0.3.0. Cela ajoute une autre stratégie nommée 2.1.0.0.Policy, sous %systemDrive%\windows\winsxs\policies\x86_policy.2.0.Microsoft.Windows.SampleAssembly_75e377300ab7b886_x-ww_<hashvalue>.
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<assembly xmlns="urn:schemas-microsoft-com:asm.v1" manifestVersion="1.0">
<assemblyIdentity type="win32-policy" publicKeyToken="0000000000000000" name="policy.2.0.Microsoft.Windows.SampleAssembly" version="2.1.0.0" processorArchitecture="x86"/>
<dependency>
<dependentAssembly>
<assemblyIdentity type="win32" name="Microsoft.Windows.SampleAssembly" processorArchitecture="x86" publicKeyToken="75e377300ab7b886"/>
<bindingRedirect oldVersion="2.0.0.0" newVersion="2.0.3.0"/>
</dependentAssembly>
</dependency>
</assembly>