Important
Device metadata is deprecated and will be removed in a future release of Windows. For information about the replacement for this functionality, see Driver Package Container Metadata.
This topic contains the definition of the SoftwareInfo XML schema.
The namespace of the SoftwareInfo XML schema is:
https://schemas.microsoft.com/windows/DeviceMetadata/PackageInfo/2007/11/
https://schemas.microsoft.com/windows/2010/08/DeviceMetadata/SoftwareInfo
The following is a complete definition of the PackageInfo XML Schema.
<?xml version="1.0" encoding ="UTF-8" ?>
<xs:schema targetNamespace="https://schemas.microsoft.com/windows/2010/08/DeviceMetadata/SoftwareInfo" xmlns:tns="https://schemas.microsoft.com/windows/2010/08/DeviceMetadata/SoftwareInfo" xmlns:xs="https://www.w3.org/2001/XMLSchema" elementFormDefault="qualified" blockDefault="#all">
<xs:element name="SoftwareInfo" type="tns:SoftwareInfoType" />
<!-- Software Information Type Definition -->
<xs:complexType name="SoftwareInfoType">
<xs:choice>
<xs:sequence>
<xs:element name="DeviceCompanionApplications" type="tns:DeviceCompanionApplicationsType" />
<xs:element name="PrivilegedApplications" type="tns:PrivilegedApplicationsType" minOccurs="0" />
<xs:any namespace="##other" processContents="lax" minOccurs="0" maxOccurs="unbounded" />
</xs:sequence>
<xs:element name="PrivilegedApplications" type="tns:PrivilegedApplicationsType" />
</xs:choice>
</xs:complexType>
<!-- Device Companion Applications Definition -->
<xs:complexType name="DeviceCompanionApplicationsType">
<xs:sequence>
<xs:element name="Package" type="tns:PackageType" maxOccurs="unbounded" />
<xs:any namespace="##other" processContents="lax" minOccurs="0" maxOccurs="unbounded" />
</xs:sequence>
</xs:complexType>
<!-- PrivilegedApplications Definition -->
<xs:complexType name="PrivilegedApplicationsType">
<xs:choice>
<xs:element name="AnyApplication" type="tns:AnyApplicationType" />
<xs:element name="Package" type="tns:PackageForPrivilegedApplications" maxOccurs="unbounded" />
<xs:any namespace="##other" processContents="lax" minOccurs="0" maxOccurs="unbounded" />
</xs:choice>
</xs:complexType>
<!-- Package Type Definition -->
<xs:complexType name="PackageType">
<xs:sequence>
<xs:element name="Identity" type="tns:IdentityType" />
<xs:element name="Applications" type="tns:ApplicationsType" />
<xs:any namespace="##other" processContents="lax" minOccurs="0" maxOccurs="unbounded" />
</xs:sequence>
</xs:complexType>
<!-- Package Identity Type Definition -->
<xs:complexType name="IdentityType">
<xs:attribute name="Name" type="tns:PackageNameType" use="required"/>
<xs:attribute name="Publisher" type="tns:PublisherType" use="required"/>
</xs:complexType>
<xs:simpleType name="PackageNameType">
<xs:restriction base="tns:AsciiIdentifierType">
<xs:minLength value="3"/>
<xs:maxLength value="50"/>
</xs:restriction>
</xs:simpleType>
<xs:simpleType name="PublisherType">
<xs:restriction base="tns:DistinguishedNameType">
<xs:maxLength value="8192"/>
</xs:restriction>
</xs:simpleType>
<xs:simpleType name="DistinguishedNameType">
<xs:restriction base="tns:NonEmptyStringType">
<xs:pattern value="(CN|L|O|OU|E|C|S|STREET|T|G|I|SN|DC|SERIALNUMBER|(OID\.(0|[1-9][0-9]*)(\.(0|[1-9][0-9]*))+))=(([^,+="\<>#;])+|".*")(, ((CN|L|O|OU|E|C|S|STREET|T|G|I|SN|DC|SERIALNUMBER|(OID\.(0|[1-9][0-9]*)(\.(0|[1-9][0-9]*))+))=(([^,+="\<>#;])+|".*")))*"/>
</xs:restriction>
</xs:simpleType>
<!-- Applications Type Definition -->
<xs:complexType name="ApplicationsType">
<xs:sequence>
<xs:element name="Application" type="tns:ApplicationType" />
<xs:any namespace="##other" processContents="lax" minOccurs="0" maxOccurs="unbounded" />
</xs:sequence>
</xs:complexType>
<xs:complexType name="ApplicationType">
<xs:sequence>
<xs:element name="DeviceNotificationHandlers" type="tns:DeviceNotificationHandlersType" minOccurs="0" />
<xs:any namespace="##other" processContents="lax" minOccurs="0" maxOccurs="unbounded" />
</xs:sequence>
<xs:attribute name="Id" type="tns:ApplicationIdType" use="required"/>
</xs:complexType>
<xs:simpleType name="ApplicationIdType">
<xs:restriction base="tns:AsciiWindowsIdType">
<xs:maxLength value="64"/>
</xs:restriction>
</xs:simpleType>
<!-- Device Notification Handlers Type Definition -->
<xs:complexType name="DeviceNotificationHandlersType">
<xs:sequence>
<xs:element name="DeviceNotificationHandler" type="tns:DeviceNotificationHandlerType" maxOccurs="unbounded" />
<xs:any namespace="##other" processContents="lax" minOccurs="0" maxOccurs="unbounded" />
</xs:sequence>
</xs:complexType>
<!-- Device Notification Handler Type Definition -->
<xs:complexType name="DeviceNotificationHandlerType">
<xs:attribute name="EventID" type="xs:string" use="required"/>
<xs:attribute name="EventAsset" type="xs:string" use="required"/>
</xs:complexType>
<!-- Privileged Applications Definition -->
<xs:complexType name ="AnyApplicationType">
</xs:complexType>
<xs:complexType name="PackageForPrivilegedApplications">
<xs:sequence>
<xs:element name="Identity" type="tns:IdentityForPrivilegedApplicationsType" />
<xs:any namespace="##other" processContents="lax" minOccurs="0" maxOccurs="unbounded" />
</xs:sequence>
</xs:complexType>
<xs:complexType name="IdentityForPrivilegedApplicationsType">
<xs:attribute name="Name" type="tns:PackageNameType" use="required"/>
<xs:attribute name="Publisher" type="tns:PublisherType" use="required"/>
<xs:attribute name="AccessCustomDriver" type="xs:boolean" />
</xs:complexType>
<xs:simpleType name="AsciiIdentifierType">
<xs:restriction base="tns:AllowedAsciiCharSetType">
<xs:pattern value="[^_ ]+"/>
</xs:restriction>
</xs:simpleType>
<!-- String Restriction Types definition -->
<xs:simpleType name="AllowedAsciiCharSetType">
<xs:restriction base="tns:NonEmptyStringType">
<xs:pattern value="[-_. A-Za-z0-9]+"/>
</xs:restriction>
</xs:simpleType>
<xs:simpleType name="NonEmptyStringType">
<xs:restriction base="xs:string">
<xs:minLength value="1"/>
<xs:maxLength value="32767"/>
<xs:pattern value="[^\s]|([^\s].*[^\s])"/>
</xs:restriction>
</xs:simpleType>
<xs:simpleType name="AsciiWindowsIdType">
<xs:restriction base="tns:NonEmptyStringType">
<xs:pattern value="([A-Za-z][A-Za-z0-9]*)(\.[A-Za-z][A-Za-z0-9]*)*"/>
<xs:maxLength value="255"/>
</xs:restriction>
</xs:simpleType>
<xs:simpleType name="UnicodeIdentifierType">
<xs:restriction base="tns:UnicodeIdentifierCharSetType" />
</xs:simpleType>
<xs:simpleType name="UnicodeIdentifierCharSetType">
<xs:restriction base="tns:AllowedUnicodeCharSetType">
<xs:pattern value="[^!#$%'\(\)\*\+,/:;=\?@\[\\\]^_`\|]+" />
</xs:restriction>
</xs:simpleType>
<xs:simpleType name="AllowedUnicodeCharSetType">
<xs:restriction base="tns:UnicodeNoPrivateUseOrNonCharacterCodePointsType">
<xs:pattern value="[^"&\<>\u0000-\u0020\u007F\u0080-\u009F\u00A0\u00AD\u0340-\u0341\u034F\u06DD\u070F\u1680\u1806\u180B-\u180E\u2000-\u200F\u2028-\u202F\u205F\u2060-\u2063\u206A-\u206F\u2FF0-\u2FFB\u3000\uD800-\uDFFF\uFEFF\p{IsVariationSelectors}]+"/>
</xs:restriction>
</xs:simpleType>
<xs:simpleType name="UnicodeNoPrivateUseOrNonCharacterCodePointsType">
<xs:restriction base="tns:NonEmptyStringType">
<xs:pattern value="[^\uE000-\uF8FF\uFDD0-\uFDEF\uFFF9-\uFFFF\p{IsPrivateUse}]+"/>
</xs:restriction>
</xs:simpleType>
</xs:schema>