提交批量元数据包

提交批量元数据包:

  1. 使用 SignTool 工具对批量元数据包进行签名。

  2. 使用 Microsoft 帐户从硬件开发人员中心或 Windows 开发人员中心登录到仪表板

  3. 在“设备元数据”下,单击“创建批量提交”。

  4. 浏览并选择新的批量元数据包,然后单击“提交”

创建批量提交程序包

批量元数据提交包是可将多个设备元数据包提交到仪表板的包格式。

应使用批量提交功能将批量元数据提交包上传到仪表板。 此功能删除了用于创建体验的用户界面,以便同时轻松上传多个元数据包。 用于创建体验和修改包属性的信息包含在 BulkMetadataSubmission XML 文档中。

批量包中最多可以包含 50 个 devicemetadata-ms 或 devicemanifest-ms 文件。

有关使用设备元数据提交向导创建批量元数据包的信息,请参阅 在 Visual Studio 中创建设备元数据提交包

批量元数据提交程序包内容

每个批量元数据提交包由以下组件组成:

  • 设备元数据包

    设备元数据包包含用于显示设备图标、设置操作和使用设备体验功能的信息和图形。

  • 设备清单包

    设备清单包包含用于验证设备元数据包的信息。

  • BulkMetadataSubmission XML 文档

    本文档包含用于在没有用户界面的情况下正确提交包的数据。 仪表板使用本文档中的信息创建具有友好名称的体验、将包组织为体验、更新体验以及将单个包标记为预览。

注意

XML 文档必须使用 UTF-8 编码保存。

必须在批量元数据提交包中包含至少一个设备元数据或设备清单包。

批量元数据提交程序包的结构

批量元数据提交包的组件存储在压缩的机柜文件中。 文件名必须具有“.bulkmetadata-ms”的后缀。

每个批量元数据提交包必须具有以下结构:

DDMMYYYY.bulkmetadata-ms
\Filename1.devicemetadata-ms
\Filename2.devicemetadata-ms
\...
\Filename3.devicemanifest-ms
\Filename4.devicemanifest-ms
\...
\BulkMetadataSubmission.xml

Filename1、Filename2、Filename3、Filename4 等必须是 GUID。

若要创建 BulkMetadataSubmission.xml,请参阅下面的创建 BulkMetadataSubmission.xml

若要开发设备元数据包 *.devicemetadata-ms,请参阅 Windows 8 的设备元数据包架构参考

若要开发设备清单包 *.devicemanifest-ms,请参阅提交电脑设备清单包

可以使用 Cabarc 工具创建这些 CAB 包。 若要了解有关此工具的详细信息,请参阅 Cabarc 概述

使用 Cabarc 工具创建 *.bulkmetadata-ms 文件时,必须创建一个本地目录,其中设备元数据包 (*.devicemetadata-ms)、设备清单包 (*.devicemanifest-ms) 和 BulkMetadataSubmission XML 文档都位于该目录的根目录中。

注解

  • .devicemetadata-ms 和 .devicemanifest-ms 文件名必须指定不带花括号 ({}) 分隔符的 GUID。

  • 每个设备元数据包和设备清单包的 GUID 必须唯一。 创建新的或修订后的包时,必须创建新的 GUID。

  • 有关如何创建机柜文件的更多详细信息,请参阅 Microsoft Cabinet SDK

示例

以下示例说明如何使用 Cabarc 工具创建 .bulkmetadata-ms 文件。 在此示例中,批量元数据文件的组件位于名为 BulkPackages 的本地目录中:

.\BulkPackages\
.\BulkPackages\BulkMetadataSubmission.xml
.\BulkPackages\GUID1.devicemetadata-ms
.\BulkPackages\GUID2.devicemetadata-ms
.\BulkPackages\GUID3.devicemanifest-ms
.\BulkPackages\GUID4.devicemanifest-ms

GUID.pcmetadata-ms 文件是在名为 PCFiles 的本地目录中创建的:

Cabarc.exe -r -p -P  .\BulkPackages\
N .\BulkFiles\ DDMMYYYY.bulkmetadata-ms
.\BulkPackages\BulkMetadataSubmission.xml
.\BulkPackages\GUID1.devicemetadata-ms
.\BulkPackages\GUID2.devicemetadata-ms
.\BulkPackages\GUID3.devicemanifest-ms
.\BulkPackages\GUID4.devicemanifest-ms

注意

有关此工具的详细信息,请参阅 Cabarc 概述

创建 BulkMetadataSubmission.xml

BulkMetadataSubmission XML 架构

批量元数据提交包包含一个 BulkMetadataSubmission.xml 文档,其中包含仪表板用来创建具有友好名称的体验、将包组织为体验、更新体验以及将单个包标记为预览的信息。

BulkMetadataSubmission.xml 文档中的数据基于 BulkMetadataSubmission XML 架构进行格式化,如下所述。

注意

XML 文档必须使用 UTF-8 编码保存。

BulkMetadataSubmission XML 架构命名空间

以下是 PcMetadataSubmission XML 架构的命名空间:http://schemas.microsoft.com/Windows/2010/08/MetadataSubmission/BulkMetadataSubmission

BulkMetadataSubmission XML 元素/属性概述

下表描述了 BulkMetadataSubmission XML 架构的元数据元素和属性。

元素/属性 元素/属性类型 必需/可选
体验 ExperienceType 必须
ExperienceName xs:string 必须
ExperienceId tns:GUIDType 可选
PackageList tns:PackageListType 必须
PackageFileName PackageFileNameType 必须
预览 xs:Boolean 必须
区域设置 xs:string 必须
资格授予 tns:QualificationType 必须
LogoSubmissionIDList tns:LogoSubmissionIDListType 可选
LogoSubmissionID xs:integer 必须
update xs:Boolean 必须

BulkMetadataSubmission XML 架构元数据

以下是 BulkMetadataSubmission XML 架构元数据:

<?xml version="1.0" encoding="UTF-8"?>
<xs:schema targetNamespace="http://schemas.microsoft.com/Windows/2010/08/MetadataSubmission/BulkMetadataSubmission" xmlns:tns="http://schemas.microsoft.com/Windows/2010/08/MetadataSubmission/BulkMetadataSubmission" xmlns:xs="http://www.w3.org/2001/XMLSchema" elementFormDefault="qualified" blockDefault="#all">

 <xs:element name="BulkMetadataSubmission" type="tns:BulkMetadataSubmissionType" />

 <xs:complexType name="BulkMetadataSubmissionType">
  <xs:sequence>
   <xs:element name="Experience" type="tns:ExperienceType"  maxOccurs="unbounded" />
   <xs:any namespace="##other" processContents="lax" minOccurs="0" maxOccurs="unbounded" />
  </xs:sequence>
 </xs:complexType>

  <xs:complexType name="ExperienceType">
    <xs:complexContent>
      <xs:extension base ="tns:BaseExperienceType">
        <xs:attribute name="update" type="xs:boolean" use="required"/>
      </xs:extension>
    </xs:complexContent>
  </xs:complexType>

  <xs:complexType name="BaseExperienceType">  
    <xs:sequence>
      <xs:element name="ExperienceName" type="xs:string" />
      <xs:element name="ExperienceId" type="tns:GUIDType" minOccurs="0" />
      <xs:element name="PackageList" type="tns:PackageListType" />
      <xs:element name="Qualification" type="tns:QualificationType" />
      <xs:element name="LogoSubmissionIDList" type="tns:LogoSubmissionIDListType" minOccurs="0" maxOccurs="unbounded" />
      <xs:any namespace="##other" processContents="lax" minOccurs="0" maxOccurs="unbounded" />
    </xs:sequence>
  </xs:complexType>

  <xs:simpleType name="GUIDType">
    <xs:restriction base="xs:string">
      <xs:pattern value="[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}" />
    </xs:restriction>
  </xs:simpleType>

 <xs:complexType name="PackageListType">
  <xs:sequence>
   <xs:element name="PackageFileName" type="tns:PackageFileNameType"  maxOccurs="unbounded" />
   <xs:any namespace="##other" processContents="lax" minOccurs="0" maxOccurs="unbounded" />
  </xs:sequence>
 </xs:complexType>

  <xs:complexType name="PackageFileNameType">
    <xs:simpleContent>
      <xs:extension base="xs:string">
        <xs:attribute name="preview" type="xs:boolean" use="required" />
        <xs:attribute name="locale" type="xs:string" use="required" />
      </xs:extension>
    </xs:simpleContent>
  </xs:complexType>

 <xs:simpleType name="QualificationType">
<xs:union memberTypes="tns:QualificationTypeEnumeration xs:string" />
 </xs:simpleType>

 <xs:simpleType name="QualificationTypeEnumeration">
   <xs:restriction base="xs:string">
     <xs:enumeration value="Logo/IDDA" />
     <xs:enumeration value="MicrosoftInboxDriver" />
   </xs:restriction>
 </xs:simpleType>

 <xs:complexType name="LogoSubmissionIDListType">
  <xs:sequence>
   <xs:element name="LogoSubmissionID" type="xs:integer"  maxOccurs="unbounded" />
   <xs:any namespace="##other" processContents="lax" minOccurs="0" maxOccurs="unbounded" />
  </xs:sequence>
 </xs:complexType>

</xs:schema>

BulkMetadataSubmission XML 架构参考

BulkMetadataSubmission XML 架构定义以下元素和属性:

  • BulkMetadataSubmission

    • 体验

      • ExperienceName

      • ExperienceID

      • PackageList

        • PackageFileName

          • 预览

          • 区域设置

      • 资格授予

      • LogoSubmissionIDList

        • LogoSubmissionID
      • update

Experience 元素

Experience 元素指定单个体验的信息。 有关体验的详细信息,请参阅 Windows 8 的设备元数据包架构参考

根据此信息,仪表板会创建具有正确信息的体验,并将包提交到此体验,或者使用新包更新现有体验。

<xs:element name="Experience" type="tns:ExperienceType"  maxOccurs="unbounded" />

<xs:complexType name="ExperienceType">
  <xs:complexContent>
    <xs:extension base ="tns:BaseExperienceType">
      <xs:attribute name="update" type="xs:boolean" use="required"/>
    </xs:extension>
  </xs:complexContent>
</xs:complexType>

<xs:complexType name="BaseExperienceType">  
  <xs:sequence>
    <xs:element name="ExperienceName" type="xs:string" />
    <xs:element name="ExperienceId" type="tns:GUIDType" minOccurs="0" />
    <xs:element name="PackageList" type="tns:PackageListType" />
    <xs:element name="Qualification" type="tns:QualificationType" />
    <xs:element name="LogoSubmissionIDList" type="tns:LogoSubmissionIDListType" minOccurs="0" maxOccurs="unbounded" />
    <xs:any namespace="##other" processContents="lax" minOccurs="0" maxOccurs="unbounded" />
  </xs:sequence>
</xs:complexType>

多个 Experience 元素可用于指定多个体验。 这允许为不同设备提交多个包。

例如,请参阅下列内容。

<Experience update="false">
  <ExperienceName>Test1</ExperienceName>
  <PackageList>
    <PackageFileName locale="en-us" preview ="false">
      XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX.devicemanifest-ms
    </PackageFileName>
  </PackageList>
  <Qualification>Logo/IDDA</Qualification>
  <LogoSubmissionIDList>
    <LogoSubmissionID>XXXXXXX</LogoSubmissionID>
  </LogoSubmissionIDList>
</Experience>

<Experience update="false">
  <ExperienceName>Test2</ExperienceName>
  <PackageList>
    <PackageFileName locale="en-us" preview ="false">
      XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX.devicemetadata-ms
    </PackageFileName>
  </PackageList>
  <Qualification>Logo/IDDA</Qualification>
  <LogoSubmissionIDList>
    <LogoSubmissionID>XXXXXXX</LogoSubmissionID>
  </LogoSubmissionIDList>
</Experience>

ExperienceName 元素

ExperienceName 元素指定体验的名称。 如果这是新体验,仪表板将创建具有此名称的体验。 或者,当此值是对现有体验的更新时,它会忽略此值。

<xs:element name="ExperienceName" type="xs:string" />

ExperienceId 元素

ExperienceId 元素指定体验 ID 的 GUID。 更新现有体验时,此值是必需的。 仪表板使用此值标识要更新的体验。

<xs:element name="ExperienceId" type="tns:GUIDType" minOccurs="0" />

<xs:simpleType name="GUIDType">
  <xs:restriction base="xs:string">
    <xs:pattern value="[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}" />
  </xs:restriction>
</xs:simpleType>

PackageList 元素

PackageList 元素指定要包含在体验中的设备元数据或设备清单包的列表。 仪表板使用此信息将包添加到新的或现有的体验。

<xs:element name="PackageList" type="tns:PackageListType" />

<xs:complexType name="PackageListType">
  <xs:sequence>
    <xs:element name="PackageFileName" type="tns:PackageFileNameType"  maxOccurs="unbounded" />
    <xs:any namespace="##other" processContents="lax" minOccurs="0" maxOccurs="unbounded" />
  </xs:sequence>
</xs:complexType>

PackageFileName 元素

PackageFileName 元素指定单个设备元数据或设备清单包的文件名和信息。 仪表板使用此信息将包添加到新的或现有的体验中,并正确将包标记为预览(如果已指示)。 根据预览和区域设置值,仪表板还会根据需要删除现有包

<xs:element name="PackageFileName" type="tns:PackageFileNameType"  maxOccurs="unbounded" />

<xs:complexType name="PackageFileNameType">
  <xs:simpleContent>
    <xs:extension base="xs:string">
      <xs:attribute name="preview" type="xs:boolean" use="required" />
      <xs:attribute name="locale" type="xs:string" use="required" />
    </xs:extension>
  </xs:simpleContent>
</xs:complexType>

PackageFileName 元素的预览和区域设置属性允许仪表板使用新提交的包更新现有实时包。

例如,如果体验中已存在 en-US 预览包,并且已在批量元数据提交包中提交同一体验的 en-US 预览包,则将自动删除现有包,并提交新包。

因此,更新包以避免意外删除时,请务必小心。

preview 属性

预览属性指定设备元数据或设备清单包是否应标记为预览。 有关仪表板如何使用此值的详细信息,请参阅 PackageFileName 元素。

<xs:attribute name="preview" type="xs:boolean" use="required" />

locale 属性

区域设置属性指定应标记为预览的设备元数据或设备清单包的已声明区域设置(从 PackageInfo.xml)。 有关仪表板如何使用此值的详细信息,请参阅 PackageFileName 元素。

<xs:attribute name="locale" type="xs:string" use="required" />

Qualification 元素

Qualification 元素指定设备是否具有徽标认证、包含在收件箱驱动程序分发协议 (IDDA) 列表中,还是使用 Microsoft 收件箱驱动程序。 仪表板使用此信息来确保对要提交的设备元数据类型进行正确的设备认证。

<xs:element name="Qualification" type="tns:QualificationType" />

<xs:simpleType name="QualificationType">
<xs:union memberTypes="tns:QualificationTypeEnumeration xs:string" />
 </xs:simpleType>

 <xs:simpleType name="QualificationTypeEnumeration">
   <xs:restriction base="xs:string">
     <xs:enumeration value="Logo/IDDA" />
     <xs:enumeration value="MicrosoftInboxDriver" />
   </xs:restriction>
 </xs:simpleType>

设备阶段等功能不适用于未通过徽标认证且不在 IDDA 列表中的设备。

可以为每个体验选择两个选项之一。 下表显示了这些选项及其定义:

枚举值 说明
徽标/IDDA 您的设备具有徽标认证或位于 IDDA 列表中。 如果有徽标认证,则需要在 LogoSubmissionIDList 元素中指定特定的徽标提交 ID。
MicrosoftInboxDrive 设备使用 Microsoft 收件箱驱动程序。 使用此限定级别(如设备阶段)时,设备元数据的某些功能可能不可用

LogoSubmissionIDList 元素

LogoSubmissionIDList 元素指定设备的徽标认证列表。 有关仪表板如何使用此值的详细信息,请参阅 Qualification 元素。

<xs:element name="LogoSubmissionIDList" type="tns:LogoSubmissionIDListType" minOccurs="0" maxOccurs="unbounded" />

<xs:complexType name="LogoSubmissionIDListType">
  <xs:sequence>
    <xs:element name="LogoSubmissionID" type="xs:integer"  maxOccurs="unbounded" />
    <xs:any namespace="##other" processContents="lax" minOccurs="0" maxOccurs="unbounded" />
  </xs:sequence>
</xs:complexType>

LogoSubmissionID 元素

LogoSubmissionID 元素指定设备的单个徽标认证。 有关仪表板如何使用此值的详细信息,请参阅 Qualification 元素。

<xs:element name="LogoSubmissionID" type="xs:integer"  maxOccurs="unbounded" />

多个 LogoSubmissionID 元素可用于指示单个设备的多个徽标认证。 用户应在列表中列出其设备的所有徽标认证。 下面是列出了多个徽标认证的示例:

<LogoSubmissionIDList>
  <LogoSubmissionID>0000001</LogoSubmissionID>
  <LogoSubmissionID>0000002</LogoSubmissionID>
  <LogoSubmissionID>0000003</LogoSubmissionID>
</LogoSubmissionIDList>

update 属性

更新属性指定是否正在更新体验。 仪表板使用此值在更新属性设置为 true 时删除冲突的包并上传新包来更新体验。 当更新属性设置为 false 时,仪表板将创建新的体验,并将新包上传到该体验。

<xs:attribute name="update" type="xs:boolean" use="required"/>

BulkMetadataSubmission XML 示例

以下 XML 文档使用 BulkMetadataSubmission XML 架构来指定 BulkMetadataSubmission XML 文档的组件。

<BulkMetadataSubmission xmlns="http://schemas.microsoft.com/Windows/2010/08/MetadataSubmission/BulkMetadataSubmission">

  <Experience update="false">
    <ExperienceName>Test1</ExperienceName>
    <PackageList>
      <PackageFileName locale="en-us" preview ="false">
        XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX.devicemanifest-ms
      </PackageFileName>
    </PackageList>
    <Qualification>Logo/IDDA</Qualification>
    <LogoSubmissionIDList>
      <LogoSubmissionID>XXXXXXX</LogoSubmissionID>
    </LogoSubmissionIDList>
  </Experience>

  <Experience update="false">
    <ExperienceName>Test2</ExperienceName>
    <PackageList>
      <PackageFileName locale="en-us" preview ="false">
        XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX.devicemetadata-ms
      </PackageFileName>
    </PackageList>
    <Qualification>Logo/IDDA</Qualification>
    <LogoSubmissionIDList>
      <LogoSubmissionID>XXXXXXX</LogoSubmissionID>
    </LogoSubmissionIDList>
  </Experience>

  <Experience update="false">
    <ExperienceName>Test3</ExperienceName>
    <PackageList>
      <PackageFileName locale="en-us" preview="false">
        XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX.devicemanifest-ms
      </PackageFileName>
    </PackageList>
    <Qualification>Logo/IDDA</Qualification>
    <LogoSubmissionIDList>
      <LogoSubmissionID>XXXXXXX</LogoSubmissionID>
    </LogoSubmissionIDList>
  </Experience>

  <Experience update="false">
    <ExperienceName>Test4</ExperienceName>
    <PackageList>
      <PackageFileName locale="en-us" preview="false">
        XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX.devicemetadata-ms
      </PackageFileName>
    </PackageList>
    <Qualification>Logo/IDDA</Qualification>
    <LogoSubmissionIDList>
      <LogoSubmissionID>XXXXXXX</LogoSubmissionID>
    </LogoSubmissionIDList>
  </Experience>

  <Experience update="false">
    <ExperienceName>Test5</ExperienceName>
    <PackageList>
      <PackageFileName locale="en-us" preview="false">
        XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX.devicemetadata-ms
      </PackageFileName>
    </PackageList>
    <Qualification>Logo/IDDA</Qualification>
    <LogoSubmissionIDList>
      <LogoSubmissionID>XXXXXXX</LogoSubmissionID>
    </LogoSubmissionIDList>
  </Experience>

</BulkMetadataSubmission>