应用 (可执行) 清单

平台

客户端 - Windows 8
服务器 – Windows Server 2012

说明

Windows 中引入的应用 (可执行) 清单的兼容性部分可帮助操作系统确定应用所面向的 Windows 版本。 此外,应用清单使 Windows 能够根据应用面向的 Windows 版本提供应用预期的行为。

清单的兼容性部分允许 Windows 为新创建的软件提供新行为,同时保持现有软件的兼容性。 本部分还有助于 Windows 在未来版本的 Windows 中提供更高的兼容性。 例如,在兼容性部分中声明仅支持 Windows 8 的应用将继续在 Windows 的未来版本中接收Windows 8行为。

表现

默认情况下,清单中没有兼容性部分的应用在 Windows 7、Windows 8 和将来的 Windows 版本中将具有 Windows Vista 行为。 请注意,Windows XP 和 Windows Vista 会忽略此清单部分,并且对它们没有影响。

这些 Windows 组件根据兼容性部分提供不同行为:

远程过程调用 (RPC) 默认线程池

  • Windows 8和 Windows 7:为了提高可伸缩性和减少线程计数,RPC 已切换到 NT 线程池 (默认池) 。 对于 Windows Vista,RPC 使用了专用线程池:

    • 对于为 Windows 7 及更高版本的 Windows 编译的二进制文件,使用默认池。
    • 如果在调用任何 RPC API 之前调用I_RpcMgmtEnableDedicatedThreadPool,则会 (Vista 行为) 使用专用线程池。
    • 如果在 RPC 调用后调用I_RpcMgmtEnableDedicatedThreadPool,则使用默认池,I_RpcMgmtEnableDedicatedThreadPool返回错误 1764,并且不支持请求的操作。
  • Windows Vista (默认) :对于为 Windows Vista 和早期版本的 Windows 编译的二进制文件,使用专用池。

DirectDraw 锁定

  • Windows 8和 Windows 7:适用于 Windows 7 及更高版本的操作系统的应用无法调用 DDRAW 中的锁 API 来锁定主桌面视频缓冲区;这样做将导致错误,并返回主服务器的 NULL 指针。 即使桌面窗口管理器组合未打开,也会强制实施此行为。 声明了 Windows 7 及更高版本兼容性的应用不得锁定要呈现的主视频缓冲区。
  • Windows Vista (默认) :应用可以在主视频缓冲区上获取锁,因为旧版应用依赖于此行为;运行应用会关闭桌面窗口管理器。

DirectDraw 位块传输 (bitblt) 到主节点,无需剪辑窗口

  • Windows 8和 Windows 7:禁止针对 Windows 7 及更高版本 Windows 的应用在没有剪辑窗口的情况下对主桌面视频缓冲区执行 bitblt;这样做会导致错误,并且不会呈现 bitblt 区域。 即使你未打开桌面窗口管理器组合,Windows 也会强制实施此行为。 声明了 Windows 7 及更高版本兼容性的应用必须对剪辑窗口执行 bitblt。
  • Windows Vista (默认) :应用必须能够在没有剪辑窗口的情况下对主服务器执行 bitblt,因为旧版应用依赖于此行为;运行此应用会关闭桌面窗口管理器。

GetOverlappedResult API

  • Windows 8和 Windows 7:解决了使用 GetOverlappedResult 的多线程应用可以在不重置重叠结构中的事件的情况下返回的争用条件,从而导致下一次对此函数的调用过早返回。
  • Windows Vista (默认) :为行为提供应用可能依赖的争用条件。 在 Windows 7 行为之前必须避免此争用的应用应等待重叠事件,并在收到信号时调用 bWait == FALSE 的 GetOverlappedResult。

Shell 主题在高对比度模式下的状态

  • Windows 8:返回处于高对比度模式时的真实主题设置状态。
  • Windows 7:在高对比度模式下返回主题不可用,因为 DWM 仍处于打开状态。
  • Windows Vista (默认) :当处于高对比度模式时,返回主题不可用,因为 DWM 仍处于打开状态。

Shell iPersistFile::Save 方法

  • Windows 8:CShellLink::Save 现在确定是否使用相对路径参数调用 IPersistFile 处理程序,如果调用为,则调用失败。

    描述此行为 的公共文档 指示 path 参数必须是绝对路径:

  • Windows 7 及更早版本 (默认) :CShellLink::Save 无法确定 iPersistFile 处理程序是否检查发送相对路径并允许应用继续使用绝对路径或相对路径。

程序兼容性助手 (PCA)

  • Windows 8:具有兼容性部分的应用不会获得 PCA 缓解。
  • (本文档) 中所述,跟踪具有兼容性部分的应用,以查找Windows 8更改的潜在兼容性问题。
  • Windows Vista (默认) :在某些特定情况下,在运行时无法正确安装或崩溃的应用将获得 PCA 缓解措施。 有关详细信息,请参阅资源部分。

利用功能

使用操作系统支持的最新兼容性信息更新应用清单。 本部分介绍清单中的新增功能:

命名 空间: Compatibility.v1 (xmlns=“urn:schemas-microsoft-com:compatibility.v1”>)

节名称: 兼容性 (新部分)

SupportedOS: 支持的操作系统的 GUID - 映射到受支持操作系统的 GUID 包括:

  • {e2011457-1546-43c5-a5fe-008deee3d3f0}

    适用于 Windows Vista:这是 switchback 上下文的默认值

  • {35138b9a-5d96-4fbd-8e2d-a2440225f93a}

    适用于 Windows 7:在应用清单中设置此值的应用获取 Windows 7 行为

  • {4a2f28e3-53b9-4441-ba9c-d69d4a4a6e38}

    Windows 8:在应用程序清单中设置此值的应用获取Windows 8行为

Microsoft 将根据需要为将来的 Windows 版本生成和发布 GUID。

更新清单的 XML 示例:

注意

应用清单中的属性和标记名称区分大小写。

 

<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<assembly xmlns="urn:schemas-microsoft-com:asm.v1" manifestVersion="1.0"> 
<compatibility xmlns="urn:schemas-microsoft-com:compatibility.v1"> 
    <application> 
        <!--The ID below indicates app support for Windows Vista -->
        <supportedOS Id="{e2011457-1546-43c5-a5fe-008deee3d3f0}"/> 
        <!--The ID below indicates app support for Windows 7 -->
        <supportedOS Id="{35138b9a-5d96-4fbd-8e2d-a2440225f93a}"/>
        <!--The ID below indicates app support for Windows 8 -->
        <supportedOS Id="{4a2f28e3-53b9-4441-ba9c-d69d4a4a6e38}"/>
    </application> 
</compatibility>
</assembly>

上一示例中所有操作系统的 GUID 提供下层支持。 支持多个平台的应用不需要每个平台的单独清单。

测试

一个应用可以指定多个受支持的操作系统 ID。 如果已测试或正在测试该操作系统上的应用,则应添加支持的操作系统 ID。 Windows Vista 和以前的操作系统版本不注意这些条目。 从 Windows 7 开始,Windows 将在清单中选择最高版本的 GUID,一直持续到正在运行的 Windows 版本,并为应用提供该级别的支持。 若要验证应用是否适用于新的应用清单兼容性部分,请执行以下操作:

  1. 使用新的兼容性部分和支持的OS ID = { 4a2f28e3-53b9-4441-ba9c-d69d4a4a6e38} 测试应用,以确保应用使用最新的Windows 8行为正常工作。
  2. 使用新的兼容性部分和支持的OS ID = {35138b9a-5d96-4fbd-8e2d-a2440225f93a} 测试应用,以确保应用使用 Windows 7 行为正常工作。
  3. 使用新的兼容性部分和支持的OS ID = {e2011457-1546-43c5-a5fe-008deee3d3f0} 测试应用,以确保应用使用 Windows Vista 行为正常工作。

资源