按应用程序配置

每个应用程序配置将特定应用程序的依赖性从一个并行程序集的版本重定向到另一个程序集版本。 如果特定应用程序的正确作要求程序集版本不同于通常指定为 默认配置 的版本或 发布者配置,则可能需要每个应用程序配置。 例如,发布者对程序集版本的全局更新可能会修复程序集,但会中断此特定应用程序。 在这种情况下,可以使用每个应用程序配置使应用程序能够继续使用以前的程序集版本运行。

从 Windows Server 2003 开始,每个应用程序配置始终会基于每个应用程序替代 默认配置。 仅当 应用程序配置文件 指定 apply=“no”publisherPolicy 中存在相应的条目时,每个应用程序配置才会覆盖 发布服务器配置

注意

在 Windows XP 上,每个应用程序配置会基于每个应用程序替代 默认配置发布者 配置。 有关信息,请参阅 Windows XP 上的每应用程序配置。

 

从 Windows Server 2003 开始,如果 应用程序配置文件 指定 apply=“yes”,则每个应用程序配置将替代 发布服务器配置publisherPolicy 中为应用程序设置 EnableAppConfig 标志。 使用按应用程序配置替代发布者配置的功能使应用程序能够在 Safemode 中运行。 有关应用程序兼容性数据库和安全模式的详细信息,请参阅 Windows 应用程序兼容性工具包。 可以从 https://www.microsoft.com/downloads获取 Windows 应用程序兼容性工具包。

注意

如果使用 应用程序配置文件(.config 文件)交付组件,该配置文件指定 publisherPolicy中的 apply=“no”,这将导致激活上下文生成失败。 如果使用指定 apply=“yes”publisherPolicy中的 .config 文件提供组件,则会忽略每个应用程序配置。

 

应用程序管理员可以通过创作和安装应用程序配置文件和更新应用程序兼容性数据库来实现每个应用程序配置。 然后,应将应用程序配置文件部署并安装到与应用程序的可执行文件相同的文件夹中。 有关文件架构的列表,请参阅 应用程序配置文件架构。 应用程序兼容性数据库必须按应用程序兼容性工具包中所述进行分发。

注意

如果应用程序在 Safemode 中运行,则它不会收到任何重要的安全修补程序或 bug 修复,程序集的发布者可能会作为发布者配置文件发出问题。 因此,使用按应用程序配置的应用程序可能仍然不安全或即使在将具有这些修补程序的新程序集应用到系统后仍无法正常工作。 出于此原因,应用程序开发人员绝不应使用按应用程序配置交付应用程序。 仅当应用程序被发布者配置损坏时,企业管理员才应使用按应用程序配置作为临时修复。 在这种情况下,永久性解决方案是程序集的开发人员和应用程序的开发人员需要协同工作,以确保具有发布服务器配置的程序集完全向后兼容。

 

下面是应用程序配置文件的示例。 有关详细信息,请参阅应用程序配置文件。

<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<configuration>
 <windows>
  <assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1">
   <assemblyIdentity  processorArchitecture="X86" name="Microsoft.Windows.mysampleApp" type="win32" version="1.0.0.0"/>
   <publisherPolicy apply="no"/>                     
   <dependentAssembly>
    <assemblyIdentity type="win32" processorArchitecture="x86" name="Microsoft.Windows.SampleAssembly" publicKeyToken="0000000000000000"/>
    <bindingRedirect oldVersion="2.0.0.0" newVersion="2.0.1.0"/>
   </dependentAssembly>
  </assemblyBinding>
 </windows>
</configuration>

应用程序管理员应将所需的条目添加到应用程序兼容性数据库。 从 https://www.microsoft.com/downloads下载并安装 Windows 应用程序兼容性工具包 2.6。 使用工具包中所述的兼容性管理员创建新的自定义数据库或更新现有数据库。 要为应用程序的兼容性层选择的兼容性修补程序是 EnableAppConfig。 在安装新的兼容性数据库之前,必须始终测试应用程序。