Windows 8 的程序兼容性助手方案详述

来源:互联网 发布:马勒第六交响曲知乎 编辑:程序博客网 时间:2024/05/21 11:28

平台

客户端 — Windows XP |Windows Vista | Windows 7 | Windows 8

描述

程序兼容性助手(PCA)是Windows 8中的一项功能,可帮助最终用户运行为早期的Windows版本设计的桌面应用。Windows 8有很好的内置应用兼容性,这样为Windows 7或更早Windows版本设计的应用都可以自动在Windows 8上很好地运行。但是,有很少数的应用需要干预,否则可能无法运行。

当用户运行某个应用时,PCA会跟踪该应用,并标识Windows 8中某些已知兼容性问题的所有症状。当它检测到任何问题症状时,将向用户提供一个应用所建议修复的机会,该修复有助于在Windows 8上更好地运行该应用。

方案

PCA针对Windows 8中的一组已知兼容性问题跟踪应用。PCA跟踪问题,标识修复,并向用户提供含有应用建议修复说明的对话框。用户可以决定是应用建议的修复,还是选择不应用并取消建议操作。如果用户取消,PCA将不再跟踪该应用。

PCA通常应用三个Windows兼容性模式之一— Windows XP SP3、Windows Vista SP2或Windows 7,具体取决于程序(或其安装程序)的编写时间。PCA使用程序的 LINK_DATE和SUBSYSTEM VERSION属性以及可执行文件清单的TRUSTINFO和COMPATIBILITY部分确定与哪种模式相关,然后相应地应用Windows XP SP3(包括管理权限)、Windows Vista SP2或Windows 7。文档末尾的术语表列出了PCA应用的每个兼容性模式及其描述。

对于下面列出的所有方案,PCA在应用修复后会再次跟踪应用。如果在应用兼容性修复后,应用仍然因为相同的原因失败,则 PCA 会还原该修复。PCA 随后将永久停止跟踪失败的特定应用。

虽然 PCA 会跟踪许多潜在的问题,但实际上并非所有问题都会导致应用失败。仅当由于 Windows 兼容性原因导致应用很有可能失败时,PCA 才会建议修复。以下各个部分详细介绍了在 Windows 8 中开发的各个 PCA 方案。每个部分介绍了问题方案和PCA提供的能让应用在Windows 8中继续正常运行的建议。

若要了解有关Windows 8中兼容性更改的详细信息,请参考“Windows 8兼容性手册”中的其他主题。

PCA跟踪并建议修复的方案有:

·        应用无法安装或卸载

·        应用无法运行,并出现Windows版本检查消息

·        应用因管理权限无法启动

·        应用因特定内存问题崩溃

·        应用因系统文件不匹配失败

·        应用因64位Windows上出现未处理的错误失败

·        应用在尝试删除受保护的非Windows文件时失败

·        应用在尝试修改Windows文件时失败

·        应用因使用8或16位颜色模式失败

·        应用因图形或显示问题失败

·        应用无法声明DPI感知

·        应用因缺少Windows功能失败

·        应用因64位Windows 8中的未签名驱动程序失败

·        通过兼容性设置跟踪安装的应用

·        应用无法启动安装程序或更新程序

·        需要使用管理权限运行的应用安装程序

·        需要使用管理权限运行的旧控制面板小程序

下面将详细介绍所有这些方案:

应用无法安装或卸载

这是安装应用过程中最常见的应用失败类型之一。旧安装程序最常见的两种失败情形是:

·        安装程序不了解 Windows 8 中的用户帐户控制 (UAC) 功能,因此可能无法使用对Windows 8的保护区域进行系统更改所需的全部权限运行

·        安装程序会检查Windows版本,如果检查到的版本高于它预期的版本,它将自行停止运行

这些失败的情形是安装过程中最常见的两种兼容性失败。PCA在其他各种Windows组件(如UAC)的帮助下,在启动时检测安装程序,并跟踪程序直到安装结束。如果安装程序无法在 Windows 控制面板的“添加删除程序”部分添加文件或添加有效条目,则PCA将视安装已失败。

在这种情况下,PCA会建议一个适合应用的兼容性模式。兼容性模式使安装程序能够在设计它时所针对的 Windows 模式下运行,并能确保应用使用管理权限运行。PCA会应用RUNASADMIN兼容性模式及相应的Windows XP、Windows Vista或Windows 7兼容性模式。在失败的安装结束时,用户将看到含有PCA建议的对话框:


用户随后可以选择:

·        使用兼容性设置(建议的选项)运行程序,PCA 随后应用建议的设置(兼容性模式),重新启动安装程序,然后跟踪程序直到安装成功完成

·        指示程序正常安装,在这种情况下,PCA将不再添加任何设置,并将停止跟踪安装

·        单击“关闭”,在这种情况下,PCA将不再添加任何设置,并将停止跟踪此安装

当用户尝试从 Windows 的“添加删除程序”部分或从应用的卸载程序快捷方式卸载应用时,也可以使用同样的机制帮助卸载应用。


应用无法运行,并出现Windows版本检查消息

在应用运行时出现的最常见兼容性失败之一是由于Windows版本检查。许多应用会在启动时检查Windows版本;如果应用不能识别检查到的版本,即使应用可以正常运行,也会自行停止运行。

一般情况下,这种检查与PCA跟踪的两个条件相关:

·        应用显示警告用户的消息框。示例如下所示:

 

·        应用立即终止或崩溃

如果PCA标识应用的这两个条件,它将向用户提供建议。PCA将允许用户使用兼容性设置重新运行应用。PCA将根据应用使用相应的Windows XP、Windows Vista或 Windows 7 兼容性模式。和在所有方案中一样,用户可以告诉 PCA 应用正常运行,也可以单击“关闭”按钮取消建议的设置。提供的对话框示例如下所示:



应用因管理权限无法启动或运行

有些应用需用管理权限才能运行和执行其功能。但是在 Windows 8 中,与在Windows 7和Windows Vista中相似,由于UAC,应用默认以较低的权限等级来运行。为Windows Vista和更高版本设计的新应用一般会使用EXE清单的TRUSTINFO 部分声明其运行所需的权限等级。但是,旧应用的失败一般有两种情形:

·        应用向用户显示它需要管理权限的消息,如下所示:

·        应用立即终止或崩溃

如果 PCA 标识应用的这两个条件,它将向用户提供建议。PCA 将允许用户使用管理权限重新运行应用(PCA应用RUNASHIGHEST兼容性模式)。在应用重新运行时,用户将看到UAC提示。和在所有方案中一样,用户可以选择使用建议的设置重新运行,也可以单击“关闭”取消建议的设置。提供的对话框示例如下所示:



应用因特定内存问题崩溃

有些应用会因为众所周知的内存问题崩溃。应用会从内存中取消对某个DLL的引用,然后调用一个函数执行相同 DLL 中的代码。这会导致应用立即崩溃。虽然此问题不是由于Windows 8兼容性更改才出现,但它是很多应用中相对常见的问题。PCA会跟踪此问题,以便向用户提供更可靠地运行其应用的机会。

对于这些应用,PCA 会在无任何提示的情况下自动应用 PINDLL 兼容性模式。PCA 调用的兼容性模式会阻止应用从内存释放该 DLL。因此,应用对该 DLL 的函数调用将发挥作用,从而阻止应用崩溃并使它继续正常运行。


应用因系统文件不匹配失败

有些为Windows XP及更低版本设计的应用中包括Windows系统DLL的副本及其安装程序。安装此类应用时,应用在自己的文件夹中保存旧的DLL副本,同时在Windows系统文件夹中保存最新版本的DLL。

在 Windows Vista 和更高版本中,这种情况会导致应用在尝试加载本地 DLL 时失败,因为此DLL无法与当前Windows系统DLL的其余部分很好地一起运行。由于应用通常不能识别此DLL的更新版本,因此无法正常工作。

当PCA检测到此DLL无法正常加载时,它将应用一个允许Windows从Windows系统文件夹中加载最新版本DLL的兼容性设置,以便应用可以正常运行。

在应用第一次运行失败结束时,用户将看到通知他们已应用设置的PCA对话框,如下所示:



应用因64位Windows上出现未处理的错误失败

在Windows 8的64位版本上,对消息循环回调机制启用了一个新例外。虽然此例外在Windows 7中第一次引入,但不是必须使用它处理此错误。在Windows 8中,使用消息循环的应用必须处理此新例外。如果不处理,则应用会崩溃。为旧版本Windows设计的应用可能无法识别此例外,因此可能无法正确处理此错误(例外)。

PCA检测到由于此未处理的错误失败的应用后,将对应用自动使用DISABLEUSERCALLBACKEXCEPTION 兼容性模式。在运行结束时应用此设置后,用户将收到如下通知。应用在下一次运行时将使用此模式,并可避免发生此错误。



应用在尝试删除受保护的非Windows文件时失败

一些为Windows XP和更低版本设计的应用会假定它们通常使用完全管理权限运行。作为正常应用行为的一个过程,它们可能会尝试删除受保护的非Windows 文件(程序文件或Windows文件夹中)。删除操作失败时,许多这种应用会崩溃。

PCA 检测到这些无法删除受保护文件并崩溃的应用后,将向用户提供建议。PCA 将允许用户使用兼容性设置重新运行应用。和在所有方案中一样,用户可以告诉 PCA 应用正常运行,也可以单击“关闭”按钮取消建议的设置。在这种情况下,PCA将应用VIRTUALIZEDELETE 兼容性模式。提供的对话框示例如下所示:


应用在尝试修改Windows文件或注册表项时失败

一些为Windows XP和更低版本设计的应用会假定它们通常使用完全管理权限运行。作为正常应用行为的一个过程,它们可能会尝试修改、删除或写入Windows保护文件(程序文件或Windows文件夹中)或Windows拥有的注册表项。写入、删除、修改文件或注册表项的任一操作失败时,许多这种应用会崩溃或出现严重故障。

PCA检测到这些无法写入受保护的Windows文件或注册表项的应用后,将在应用退出时向用户提供建议。PCA将允许用户使用兼容性设置重新运行应用。和在所有方案中一样,用户可以告诉 PCA 应用正常运行,也可以单击“关闭”按钮取消建议的设置。在这种情况下,PCA 将应用 WRPMITIGATION 兼容性模式。提供的对话框示例如下所示:



应用因使用8或16位颜色模式失败

作为重构适用于Windows应用商店应用的 Window 8 的一部分,其中一个重要变化是桌面窗口管理器 (DWM)现在在Windows 8中仅支持 32位颜色。现在将模拟位数较低的颜色模式。

许多为Windows XP或早期版本设计的旧应用和游戏使用8位或16位颜色模式。如果没有缓解操作,这些应用将无法在 Windows 8 中执行。但是,当这些应用枚举或尝试使用任何8 位或16 位颜色模式进行显示时,PCA会立即标识出问题,并借助DWM的帮助,确保应用在模拟的颜色模式下正常运行。

请注意,当应用请求低颜色模式时,会立即发生此操作,且此操作对用户是透明的。用户不必重新启动应用以进行此缓解操作,因为始终需要用此修复来确保应用正常运行。


应用因图形和显示问题失败

由于桌面窗口管理器(DWM)在Windows 8中始终处于打开状态,因此,如果应用使用混合模式图形API(像使用GDI和DirectX API时)绘制到屏幕上(主要是旧游戏),并尝试使用全屏模式,有些旧Windows XP时代的应用可能会失败:

·        DWM 将阻止直接绘制到桌面,游戏或应用将失败,或者在桌面上绘制黑屏,使所有图形都不可见

·        在这些情况下,当应用退出时,Windows 会检测到应用或游戏有全屏模式问题,并应用 DXMAXIMIZEDWINDOWEDMODE 兼容性模式,从而允许应用或游戏在最大化窗口模式而不是全屏模式下运行

·        在运行结束时应用设置后,用户将收到 PCA 的如下通知;应用将在下一次运行时进入兼容性模式,并将能够正常运行



应用无法声明DPI感知

当Windows和应用在高DPI模式下运行,但应用不通过其EXE清单声明其对高DPI的感知时,许多旧应用会发生另一个典型的显示问题。由于设置中出现这种不匹配而发生的常见问题有,被剪切的 UI 元素或文本和不正确的字体大小。有关这些问题的详细信息,请参阅此处的链接。

在这些情况下,Windows在检测到该应用是高DPI感知应用后,将在第一次运行结束时向该应用使用HIGHDPIAWARE兼容性模式。PCA随后将向用户通知此消息,如下所示:



应用因缺少Windows功能失败

有些应用依赖从Windows Vista起即被删除的Windows功能。当这些应用尝试加载缺少的DLL或COM组件时,它们将无法运行。

当应用尝试加载缺少的 Windows 功能时,PCA 将检测到这些应用,并提供在应用终止后下载并安装这些组件的建议。用户可以单击“在线获取帮助”查找替代功能或下载并安装此功能。如果需要,用户可以选择不执行任何操作,单击“关闭”即可。


应用因64位Windows 8中的未签名驱动程序失败

从Windows Vista开始,64位Windows需要数字签名的驱动程序(SYS文件)。但是,为Windows Vista之前的版本设计的旧应用附带未数字签名的驱动程序。如果安装这些未签名的驱动程序,Windows将不加载它们。在极少数情况下,如果将这些驱动程序标记为启动时驱动程序,则Windows可能不会启动。

有些旧程序安装未在 64 位 Windows 上签名的驱动程序。任何尝试使用此驱动程序的设备或应用将失败或导致系统崩溃。为防止出现这种情况,PCA会在应用安装未签名程序时检测到它们,并禁用标记为启动时驱动程序的驱动程序。

它还会指示用户获取数字签名的驱动程序,以使应用正常运行。下面是安装驱动程序和应用后显示的消息。如果另一个应用安装相同的驱动程序,此应用也将收到相同的息。


通过兼容性设置跟踪安装的应用

当某个安装程序失败时,PCA会使用各种兼容性模式帮助安装程序,具体取决于失败的类型。使用兼容性设置的安装程序成功后,PCA将跟踪此安装程序添加的快捷方式。这样做是为了跟踪已安装的应用是否也需要应用于其安装程序的兼容性设置。

当用户启动此类应用时,PCA会提示用户,询问应用是否正常运行。如果用户回答“是”,PCA会停止跟踪此应用。如果用户回答“否”,则PCA将应用已对此应用的安装程序使用的同一兼容性模式,并使用所应用的兼容性模式重新运行此应用。


应用无法启动安装程序或更新程序

应用有时会启动需要以管理员身份运行的子程序。当应用尝试启动其更新软件以检查和安装应用的新更新时,通常便是这种情况。当应用直接运行此类子程序时,子程序可能无法启动,因为应用自身不具备管理权限,或因为未使用 UAC 清单将子程序正确标记为进行提升。

PCA会跟踪这些错误,并在主要应用关闭时自动应用有助于子程序正常运行的ELEVATECREATEPROCESS兼容性模式。当应用在后续运行时启动子应用时,用户将看到子程序的UAC对话框。

PCA对话框的示例如下所示:



需要使用管理权限运行的应用安装程序

Windows桌面应用的安装程序需要管理权限,因为它们要向受保护的系统区域写入文件、文件夹和注册表项。Windows (UAC)有标识安装程序何时运行的检测逻辑,并通过UAC对话框立即提示用户提供管理权限。但是,在某些情况下,此逻辑将无法确定某个应用是否确实为安装程序,且可能无法获取管理权限。这些通常是未使用已知安装技术(如Windows Installer或Install Shield)定制的安装程序。

在这些情况下,PCA会检测到安装程序无法写入其文件。最后,如果安装失败,PCA将提供应用兼容性设置的建议。如果用户选择单击“运行程序”,PCA将应RUNASADMIN 兼容性模式,并重新运行安装程序。如果用户选择关闭,则不应用任何设置。PCA对话框的示例如下所示:


需要使用管理权限运行的旧控制面板小程序

控制面板小程序通常更改系统设置,并需要运行 AD 管理员的能力。但是,那些在WindowsVista前编写的小程序没有EXE清单,或没有声明其所需权限等级的TRUSTINFO部分。

运行此类小程序时,PCA会检测到它们,并在第一次运行结束时提供使用管理设置运行的建议。如果用户选择单击“运行程序”,PCA 将应用 RUNASADMIN 兼容性模式,并重新运行安装程序。如果用户选择关闭,则不应用任何设置。PCA 对话框的示例如下所示:



通过用户反馈验证建议的设置

在每个方案结束时(使用建议的兼容性设置运行应用后),PCA 将向用户提一个简单的问题:


用户可以提供反馈,说明应用使用兼容性设置后正常运行还是失败。此数据将匿名发送给Microsoft。这有助于确保通过Windows更新过程将此类修复内置到 Windows 8,以便将来的Windows 8用户不会再遇到同样的应用失败,PCA也将无需跟踪应用是否出现同样的失败。


跟踪无建议的问题

由于兼容性原因,应用可能会有多种不同的失败方式。PCA跟踪的兼容性问题比上述方案中列出的问题更多。在这些情况下,很多时候问题的表现取决于应用。这意味着有些应用会正常地处理此类问题并从中恢复,而有些则不会这样。因此,对于此类问题,虽然PCA仍会跟踪应用,但不会直接提供修复建议。

PCA跟踪但没有建议设置或对话框的问题包括以下应用:

·        运行时非常短—应用运行的时间不超过三秒

·        在没有管理权限的情况下创建全局内存对象

·        启动时出现错误(Win32异常)

·        检查管理权限(但可能不会失败)

·        使用Indeo编解码器(自Windows Vista起已弃用)

·        尝试在受保护的注册表位置(如HKLM)写入或删除注册表项

·        启动时崩溃



通过兼容性选项卡和兼容性疑难解答应用修复

如上所述,应用可能会因多种兼容性原因失败。并非所有失败都有明确的PCA 建议,因为设置与应用相关。但是,用户可以进入“兼容性疑难解答”或“兼容性”选项卡应用某些常见修复,以尝试使失败的应用在 Windows 8 上能够正常运行。在这些情况下,PCA仍将在应用修复前后跟踪应用的兼容性问题。当应用在进行修复后运行时,PCA将询问用户修复是否有效。用户回答问题后,数据将通过遥测匿名发送给 Microsoft。此数据从许多用户处收集而得,进行分析,然后通过 Windows 更新将有用的修复广泛分发给所有 Windows 8用户。


使用兼容性疑难解答

兼容性疑难解答是 Windows 中的一个机制,允许你诊断应用问题并应用建议的修复,以使它们可以正常运行。仅当 PCA 未对应用提供任何建议时,才需要使用疑难解答。

疑难解答会指引用户回答一组问题,并根据用户的回答应用一组修复,并允许用户测试应用和验证修复。验证完成后,修复将永久应用于应用,以使应用在Windows 8上更好地运行。

疑难解答UI如下所示以供参考:


可以使用以下两种方式启动兼容性疑难解答:

·        从“开始”屏幕:

1.      类型:兼容性疑难解答

2.      在“设置”部分下,单击“运行为以前版本的 Windows 编写的程序”磁贴

·        从应用磁贴:

1.       在“开始”屏幕上,右键单击应用磁贴。

2.       单击“打开文件位置”(仅桌面应用适用)

3.       在资源管理器功能区中,单击“应用”选项卡

4.       选择“兼容性疑难解答”

使用“兼容性”选项卡

请注意,仅建议希望尝试不同兼容性设置的专家级用户使用此选项卡。此方法不提供可用于应用的任何类型的修复建议。在这里,用户希望了解应用哪些修复可以使应用正常运行。如果不确定修复是否有效,请使用兼容性疑难解答查找适合应用的修复。

若要访问“兼容性”选项卡:

·        从“开始”屏幕:

1.       右键单击应用磁贴

2.       打开文件位置(仅桌面应用适用)

·        从资源管理器功能区:

1.       单击“属性”

2.       导航至“兼容性”选项卡

3.       选择兼容性修复

4.       重新运行应用     
请注意,你也可以再次回到相同的位置更改或删除修复。你也可以使用选项卡上提供的按钮向计算机上的所有用户应用修复。


具有已知兼容性问题的应用

除了上面列出的运行时问题检测方案,如果应用有已知的兼容性问题,PCA还会在应用启动时通知用户。列表存储在系统应用兼容性数据库中。这些消息有两种类型:

·        硬阻止消息 — 如果已知应用不兼容却允许运行该应用,将导致对系统产生严重影响(例如,Windows 崩溃或在安装后无法启动),并显示如下所示的阻止消息。



·        软阻止消息 — 如果应用具有已知的兼容性问题并且可能无法正常工作,则会显示该消息:


在这两种情况下,“获取联机帮助”选项会发送 Windows 错误报告,以联机获取Microsoft 的响应并将该响应显示给用户。通常,这些响应会将用户指向以下三种资源类型之一:

·        来自应用供应商的更新

·        用于获取更多信息的应用供应商的网站

·        用于获取更多信息的Microsoft 知识库文章

PCA的遥测

PCA解决Windows 8计算机上的任何应用问题并获得所有用户反馈之后,它将收集有关应用、安装程序、检测到的问题以及应用于应用的兼容性设置的匿名数据,然后将该数据发送回Microsoft。该数据是从愿意提供此类匿名数据(通过客户体验改善计划—CEIP)的任何用户收集的。收集该数据之后,分析应用故障和修复,然后通过Windows更新机制将修复分发到整个Windows生态系统,以便将来该应用的任何用户自动从修复中获益。

管理控制和管理PCA设置

IT管理员可以采用两种方法控制PCA 行为:

·        禁用PCA—该设置允许 IT 管理员禁用PCA向用户显示的对话框;PCA将仍然跟踪和检测问题并且发回遥测数据

·        禁用应用遥测—该设置将禁用PCA对遥测数据的任何收集和发送请注意,如果禁用CEIP,则该设置没有任何影响。

设计使用PCA的应用

开发人员需要确保他们的应用在上述的各种兼容性方案之间运行良好。开发人员必须针对上面的每种方案对应用进行测试和验证,并确保没有任何兼容性问题。如果确定了兼容性问题,则开发人员应该对他们的应用进行所需的修复,以确保兼容性问题得到解决。开发人员应该进行的一些常见修复包括:

·        取消安装和运行时的Windows操作系统版本检查

·        取消权限检查(检查管理员访问权限);使用 EXE 清单声明所需权限的正确级别

·        确保应用安装工具中未附带Windows二进制文件

·        取消对受保护区域(注册表、文件夹)的写入或者对受保护文件的写入

·        对所有二进制文件(EXE、DLL、SYS文件)进行数字签名

·        对于安装程序来说,确保添加了正确的“添加/删除程序”条目:该应用元数据条目至少应该包含应用名、发布者、版本字符串以及支持的语言。这将向 PCA 发出指示,说明安装程序已成功完成,并且还将为用户提供一个卸载该应用的简便方法。

确保应用(可执行文件)清单的TRUSTINFO和COMPATIBILITY部分如Windows 8兼容性手册中所列的那样进行更新,这将让 PCA 知道该应用是为 Windows 8设计的,并且还会确保该应用始终本机运行,而无需对其应用任何兼容性模式。

若要确保PCA考虑为Windows 8设计的应用,请执行以下操作:

·        对于Windows 8的TRUSTINFO和COMPATIBILITY部分,必须列出所有EXE(安装程序或运行时)清单

·        安装程序应该添加一个“添加/删除程序”条目

词汇表

下面列出了PCA使用的兼容性模式以及每个模式的功能的简要描述。

模式

描述

Windows7RTM

该模式模拟常用的 Windows 7 行为,包括操作系统版本
号6.1

WindowsVistaSP2

该模式模拟常用的Windows Vista SP2行为,包括操作系统版本号6.0

WindowsXPSp3

该模式模拟常用的Windows XP SP3行为,包括操作系统版本号 5.1。还包括RUNASHIGHEST模式

RUNASHIGHEST

该模式提示用户使用可用的最高权限运行应用。具有管理权限的用户将看到应用的UAC提升权限提示

RUNASADMIN

该模式始终提示用户使用管理权限运行应用;使用该模式的应用将始终获取UAC提升权限提示

ELEVATECREATEPROCESS

该模式使得主应用的子进程使用管理权限运行;子进程将获取一个UAC提升权限对话框

PINDLL

该模式强制 DLL 位于应用的内存中,即使该应用卸载此DLL也是如此

DISABLEUSERCALLBACKEXCEPTION

该模式拦截用户回调异常并且允许应用继续运行,而无需处理该异常

VIRTUALIZEDELETE

该模式拦截受保护文件上的删除操作,防止应用由于未处理删除操作中的异常而失败

WRPMITIGATION

当应用尝试写入、修改或删除Windows受保护文件或注册表项时,该模式返回成功(实际上没有完成该操作)

DXMAXIMIZEDWINDOWEDMODE

该模式标识进入全屏模式的应用并指将这些应用重定向到最大化Window模式

HIGHDPIAWARE

该模式允许其余Windows知道该应用为高DPI感知应用,并帮助正确呈现UI元素、文本、字体等。

原创粉丝点击