发布服务器配置

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

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

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

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

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

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

例如,安装以下 发布服务器配置文件 将绑定从 Microsoft.Windows.SampleAssembly 版本 2.0.0.0 重定向到版本 2.0.1.0。 这将在 %systemDrive%\windows\winsxs\policies\x86_policy.2.0.Microsoft.Windows.SampleAssembly_75e377300ab7b886_x-ww_<哈希值>下添加名为 1.1.0.0.Policy 的新策略。

<?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.Windows.SampleAssembly 版本 2.0.0.0 重定向到版本 2.0.3.0。 这将在 %systemDrive%\windows\winsxs\policies\x86_policy.2.0.Microsoft.Windows.SampleAssembly_75e377300ab7b886_x-ww_<哈希值>下添加另一个名为 2.1.0.0.Policy 的策略。

<?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>