小组件提供程序包清单 XML 格式

为了显示在小组件主机中,支持 Windows 小组件的应用必须将其小组件提供程序注册到系统。 对于 Win32 应用,目前仅支持打包的应用,小组件提供程序在应用包清单文件中会指定其注册信息。 本文介绍小组件注册的 XML 格式。 有关 Win32 小组件提供程序示例包清单的代码列表,请参阅 示例 部分。

应用扩展

应用包清单文件支持适用于 Windows 应用的许多不同的扩展和功能。 应用包清单格式由 包清单架构引用 中记录的一组架构定义。 小组件提供程序在 uap3:AppExtension 中声明其注册信息。 扩展的 Name 属性必须设置为“com.microsoft.windows.widgets”。

小组件提供程序应包含 uap3:Properties 作为 uap3:AppExtension 的子级。 包清单架构不强制使用 uap3:Properties 元素的结构,仅需要格式正确的 XML。 本文的其余部分介绍了小组件主机期望的 XML 格式,以便成功注册小组件提供程序。

<uap3:Extension Category="windows.appExtension">
  <uap3:AppExtension Name="com.microsoft.windows.widgets" DisplayName="WidgetTestApp" Id="ContosoWidgetApp" PublicFolder="Public">
    <uap3:Properties>
    <!-- Widget provider registration content goes here -->
    </uap3:Properties>
  </uap3:AppExtension>
</uap3:Extension>

元素层次结构

WidgetProvider

  ProviderIcons

    图标

  激活

    CreateInstance

    ActivateApplication

  定义

    定义

      功能

        功能

          大小

      ThemeResources

        图标

          图标

        屏幕截图

          屏幕快照

        DarkMode

          图标

            图标

          屏幕截图

            屏幕快照

        LightMode

          图标

            图标

          屏幕截图

            屏幕快照

WidgetProvider

小组件提供程序注册信息的根元素。

A screenshot of the Add Widget dialog in the Widgets board. It shows two columns of entries, each with an icon and an app name, with a plus sign indicating that a widget can be added

WidgetProviderIcons

指定表示小组件提供程序应用的图标。

激活

指定小组件提供程序的激活信息。 如果在清单中指定了 CreateInstanceActivateApplication,则 CreateInstance 优先。

CreateInstance

应为实现 IWidgetProvider 接口的基于 Win32 的小组件提供程序指定 createInstance。 系统将通过调用 CoCreateInstance 来激活接口。 ClassId 属性指定用于实现 IWidgetProvider 接口的 CreateInstance 服务器的 CLSID

属性 类型 必需 说明 默认值
ClassId GUID 用于实现小组件提供程序的 CreateInstance 服务器的 CLSID。 不可用

ActivateApplication

指定 ActivateApplication 时,小组件提供程序将通过命令行激活,参数提供为 base64url 编码 JSON 字符串。 建议小组件提供程序使用 CreateInstance 激活类型。 有关 ActivateApplication 命令行格式的信息,请参阅 小组件提供程序 ActivateApplication 协议

定义

一个或多个小组件注册的容器元素。

定义

表示单个小组件的注册。

属性 类型 必需 说明 默认值
Id string 标识小组件的 ID。 此值也会显示在小组件选取器导航栏中。 小组件提供程序实现使用此字符串来确定或指定要为每个操作引用哪些应用的小组件。 对于应用清单文件中定义的所有小组件,此字符串必须是唯一的。 不可用
DisplayName string 小组件主机上显示的小组件的名称。 不可用
描述 字符串 小组件的简短说明。 不可用
AllowMultiple boolean 如果仅支持此小组件的一个实例,则设置为 false。 此属性是可选的,默认值为 true。
IsCustomizable boolean 在 Windows App SDK 1.4 中引入。 如果应用支持小组件自定义,则设置为 true。 这会导致 自定义小组件 按钮显示在小组件的省略号菜单中。 false

功能

可选。 指定单个小组件的功能。 如果未声明任何功能,则默认添加一个指定大小为“大”的功能。

功能

指定小组件的功能。

大小

指定关联的小组件支持的大小。

属性 类型 必需 说明 默认值
Name 字符串 指定小组件支持的大小。 该值必须为下列值之一:“small”、“medium”、“large” 不可用

ThemeResources

指定小组件的主题资源。

图标

一个或多个 Icon 元素的容器元素。

图标

必需。 指定在小组件的属性区域中显示的图标。

属性 类型 必需 说明 默认值
Path string 图标图像文件的包相对路径。 不可用

屏幕截图

必需。 指定小组件的一个或多个屏幕截图。

屏幕快照

必需。 指定小组件的屏幕截图。 当用户选择要添加到小组件主机的小组件时,“添加小组件”对话框会显示此屏幕截图。 如果为下面列出的可选 DarkModeLightMode 元素提供屏幕截图,则小组件主机将使用与当前设备主题匹配的屏幕截图。 如果未提供当前设备主题的屏幕截图,将使用此“屏幕截图”元素中提供的图像。 有关屏幕截图图像的设计要求和本地化屏幕截图的命名约定的信息,请参阅与小组件选取器集成

注意

小组件屏幕截图不会显示在小组件板的“添加小组件”对话框的当前预览版本中。

属性 类型 必需 说明 默认值
Path string 屏幕截图图像文件的包相对路径。 不可用
DisplayAltText string 图像的替换文字,用于辅助功能。 不可用

DarkMode

可选。 指定在设备上激活深色模式时的主题资源。 如果在可选 DarkMode 元素中指定一个或多个屏幕截图图像,则当设备处于深色模式时,小组件主机将选择这些屏幕截图。 如果未提供深色模式图像,小组件主机将使用上述所需顶级 屏幕截图 元素。 有关屏幕截图图像的设计要求和本地化屏幕截图的命名约定的信息,请参阅与小组件选取器集成

LightMode

可选。 指定在设备上激活浅色模式时的主题资源。 如果在可选 LightMode 元素中提供一个或多个屏幕截图图像,则当设备处于浅色模式时,小组件主机将选择这些屏幕截图。 如果未提供浅色模式图像,小组件主机将使用上述所需顶级 屏幕截图 元素。 有关屏幕截图图像的设计要求和本地化屏幕截图的命名约定的信息,请参阅与小组件选取器集成

示例

以下代码示例演示了小组件包清单 XML 格式的用法。

<uap3:Extension Category="windows.appExtension">
  <uap3:AppExtension Name="com.microsoft.windows.widgets" DisplayName="Widget Test App" Id="ContosoWidgetApp" PublicFolder="Public">
    <uap3:Properties>
      <WidgetProvider>
        <ProviderIcons>
            <Icon Path="Images\StoreIcon.png" />
        </ProviderIcons>
        <Activation>
          <!-- App exports COM interface which implements IWidgetProvider -->
          <CreateInstance ClassId="XXXXXXXX-XXXX-XXXX-XXXX-D3397A3FF15C" />
        </Activation>
        <Definitions>
          <Definition
            Id="Weather_Widget"
            DisplayName="Microsoft Weather Widget"
            Description="Weather Widget Description"
            AllowMultiple="true">
            <Capabilities>
              <Capability>
                 <Size Name="small" />
              </Capability>
              <Capability>
                 <Size Name="medium" />
              </Capability>
              <Capability>
                 <Size Name="large" />
              </Capability>
            </Capabilities>

            <ThemeResources>
              <Icons>
                <Icon Path="Assets\icon.png" />
                <Icon Path="Assets\icon.gif" />
              </Icons>
              <Screenshots>
                <Screenshot Path="Assets\background.png" DisplayAltText ="For accessibility"/>
              </Screenshots>

              <!-- DarkMode and LightMode are optional -->
              <DarkMode>
                <Icons>
                  <Icon Path="Assets\dark.png" />
                </Icons>
                <Screenshots>
                  <Screenshot Path="Assets\darkBackground.png" DisplayAltText ="For accessibility"/>
                </Screenshots>
              </DarkMode>

              <LightMode>
                <Icons>
                  <Icon Path="Assets\light.png" />
                </Icons>
                <Screenshots>
                  <Screenshot Path="Assets\lightBackground.png"/>
                </Screenshots>
              </LightMode>
            </ThemeResources>
          </Definition>
        </Definitions>
      </WidgetProvider>
    </uap3:Properties>
  </uap3:AppExtension>
</uap3:Extension>