Publisher配置

发布 服务器配置文件 全局重定向依赖于并行程序集的一个版本的应用程序和程序集,以使用同一程序集的另一个版本。 这使应用程序和程序集能够使用更新的程序集,而无需重新生成所有受影响的应用程序。

Publisher bug修复或安全更新程序发布新版本的程序集时,程序集的发布者可能会提供这些配置文件。 更新的版本应完全向后兼容。 除非更新完全向后兼容,否则不应使用发布服务器配置文件来添加新功能。 Publisher配置文件不应用于递增程序集的主要版本或次要版本。 例如,不要将程序集版本 6.0.0.0 重定向到 7.0.0.0 或 6.1.0.0。

Publisher配置文件应仅由程序集的发布服务器颁发。 程序集开发人员应该对共享的并行程序集和发布服务器配置文件进行签名。 使用相同的密钥对程序集和关联的发布服务器配置文件进行签名。 Publisher使用用于程序集的工具对配置文件进行签名,请参阅程序集签名示例创建签名的文件和目录

通常,新版本的程序集和关联的发布服务器配置文件将安装在 Service Pack 更新中。 Publisher配置文件不应随应用程序一起作为可再发行组件提供,因为安装发布服务器配置文件会全局重定向系统上的程序集。 如果要更新的程序集作为可再发行组件提供,则发布服务器应提供以下两项。

  • 一Windows安装程序 (.msi文件) ,其中包含具有发布服务器配置的程序集的新版本。 这可安装为 Service Pack 或 QFE,因为在这种情况下,客户已选择全局更新系统。 应用程序不应安装此版本的包。
  • 一Windows安装程序合并模块 (.msm) ,该文件仅包含程序集的新版本。 此版本可能包含在应用程序中。

需要程序集最低版本的应用程序应说明其对最低版本的依赖关系,如果最低版本在系统上不可用,则应用程序将无法启动。 如果它作为可再发行组件提供,则它应包含在应用程序设置中。

例如,安装以下发布服务器配置文件会重定向 Microsoft 版本 2.0.0.0 中的绑定。Windows。从 SampleAssembly 到版本 2.0.1.0。 这会在 %systemDrive% \ windows \ winsxs \ policies \ x86 _ policy.2.0.Microsoft.Windows 下添加名为 1.1.0.0.Policy 的新策略。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>

为同一程序集安装以下发布服务器配置文件会重定向 Microsoft 版本 2.0.0.0 中的绑定。Windows。从 SampleAssembly 到版本 2.0.3.0。 这会在 %systemDrive% \ windows \ winsxs \ policies \ x86 _ policy.2.0.Microsoft.Windows 下添加名为 2.1.0.0.Policy 的另一个策略。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>