Configuración del publicador

Un archivo de configuración del publicador redirige globalmente las aplicaciones y los ensamblados que dependen de una versión de un ensamblado en paralelo para usar otra versión del mismo ensamblado. Esto permite que las aplicaciones y ensamblados usen el ensamblado actualizado sin tener que volver a generar todas las aplicaciones afectadas.

El publicador de un ensamblado puede proporcionar archivos de configuración del publicador al emitir una nueva versión del ensamblado con correcciones de errores compatibles o actualizaciones de seguridad. La versión actualizada debe ser totalmente compatible con versiones anteriores. Un archivo de configuración del publicador nunca debe usarse para agregar nuevas características a menos que la actualización sea totalmente compatible con versiones anteriores. Los archivos de configuración del publicador nunca deben usarse para incrementar la versión principal o secundaria de un ensamblado. Por ejemplo, no redirija la versión del ensamblado 6.0.0.0 a 7.0.0.0 ni a 6.1.0.0.

Los archivos de configuración del publicador solo deben ser emitidos por el publicador del ensamblado. Los desarrolladores de ensamblados deben firmar ensamblados compartidos en paralelo y archivos de configuración del publicador. Use la misma clave para firmar el ensamblado y los archivos de configuración del publicador asociados. Los archivos de configuración del publicador deben firmarse con las mismas herramientas que se usan para los ensamblados, vea Ejemplo de firma de ensamblados y Creación de archivos y catálogos firmados.

Normalmente, la nueva versión de un ensamblado y el archivo de configuración del publicador asociado se instalarán en una actualización de Service Pack. Los archivos de configuración del publicador nunca deben proporcionarse con aplicaciones como redistribuibles porque la instalación de un archivo de configuración del publicador redirige globalmente los ensamblados en el sistema. Si el ensamblado que se actualiza se proporciona como redistribuible, el publicador debe proporcionar ambos de los siguientes elementos.

  • Paquete de Windows Installer (.msi archivo) que incluye la nueva versión del ensamblado con la configuración del publicador. Esto puede instalarse como service pack o QFE porque en este caso el cliente ha elegido actualizar globalmente el sistema. Las aplicaciones nunca deben instalar esta versión del paquete.
  • Módulo de combinación de Windows Installer (archivo .msm) que solo incluye la nueva versión del ensamblado. Esta versión puede incluirse con aplicaciones.

Las aplicaciones que requieren una versión mínima del ensamblado deben indicar su dependencia en la versión mínima, si la versión mínima no está disponible en un sistema, la aplicación no se iniciará. Si está disponible como redistribuible, debe incluirse en la configuración de la aplicación.

Por ejemplo, al instalar el siguiente archivo de configuración del publicador , se redirige el enlace de la versión 2.0.0.0 de Microsoft.Windows.SampleAssembly a la versión 2.0.1.0. Esto agrega una nueva directiva denominada 1.1.0.0.Policy, en %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="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>

Al instalar el siguiente archivo de configuración del publicador para el mismo ensamblado, se redirige el enlace desde la versión 2.0.0.0 de Microsoft.Windows.SampleAssembly a la versión 2.0.3.0. Esto agrega otra directiva denominada 2.1.0.0.Policy, en %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>