5.2 Application Manifest XML Schema
File: asm.xsd
-
<?xml version="1.0" encoding="UTF-8"?> <xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:vsta.v3="urn:schemas-microsoft-com:vsta.v3" xmlns="urn:schemas-microsoft-com:asm.v1" xmlns:asm.v3="urn:schemas-microsoft-com:asm.v3" xmlns:asm.v2="urn:schemas-microsoft-com:asm.v2" xmlns:asm.v1="urn:schemas-microsoft-com:asm.v1" xmlns:xrml="http://www.xrml.org/schema/2001/11/xrml2core" xmlns:r="urn:mpeg:mpeg21:2003:01-REL-R-NS" xmlns:ds="http://www.w3.org/2000/09/xmldsig#" xmlns:enc="http://www.w3.org/2001/04/xmlenc#" targetNamespace="urn:schemas-microsoft-com:asm.v1" elementFormDefault="qualified" attributeFormDefault="unqualified" > <xs:import namespace="http://www.w3.org/2000/09/xmldsig#" schemaLocation="external/xmldsig-core-schema.0.0.0.2.xsd" /> <xs:include schemaLocation="asm.v1.types.xsd" /> <xs:import namespace="urn:schemas-microsoft-com:asm.v2" schemaLocation="asm.v2.types.xsd" /> <xs:import namespace="urn:schemas-microsoft-com:vsta.v3" schemaLocation="vsta.v3.xsd" /> <xs:element name="assembly" type="assemblyType" > </xs:element> <xs:complexType name="assemblyType" > <xs:sequence> <xs:element name="assemblyIdentity" type="asm.v1:assemblyIdentityType" /> <xs:element ref="asm.v2:application" /> <xs:element ref="asm.v2:entryPoint" /> <xs:element ref="asm.v2:trustInfo" /> <xs:element ref="asm.v2:dependency" minOccurs="0" maxOccurs="24575" /> <xs:element ref="asm.v2:file" minOccurs="0" maxOccurs="24575" /> <xs:element ref="vsta.v3:addIn" /> <xs:element ref="asm.v2:publisherIdentity" /> <xs:element ref="ds:Signature" /> </xs:sequence> <xs:attribute name="manifestVersion" type="asm.v1:twoPartVersionType" use="required" fixed="1.0" /> </xs:complexType> </xs:schema>
File: asm.v1.types.xsd
-
<?xml version="1.0" encoding="utf-8"?> <xs:schema xmlns:asm.v1="urn:schemas-microsoft-com:asm.v1" xmlns:asm.v2="urn:schemas-microsoft-com:asm.v2" targetNamespace="urn:schemas-microsoft-com:asm.v1" attributeFormDefault="unqualified" elementFormDefault="qualified" xmlns:xs="http://www.w3.org/2001/XMLSchema" > <xs:import namespace="urn:schemas-microsoft-com:asm.v2" schemaLocation="asm.v2.types.xsd" /> <xs:simpleType name="twoPartVersionType" > <xs:restriction base="xs:string"> <xs:pattern value="(0*[0-9]{1,4}|0*[1-5][0-9]{4}|0*6[0-4][0-9]{3}|0*65[0-4][0-9]{2}|0*655[0-2][0-9]|0*6553[0-5])\.(0*[0-9]{1,4}|0*[1-5][0-9]{4}|0*6[0-4][0-9]{3}|0*65[0-4][0-9]{2}|0*655[0-2][0-9]|0*6553[0-5])" /> </xs:restriction> </xs:simpleType> <xs:simpleType name="publicKeyTokenType" > <xs:restriction base="xs:string"> <xs:pattern value="([0-9]|[a-f]|[A-F]){16}" /> </xs:restriction> </xs:simpleType> <xs:simpleType name="fourPartVersionType" > <xs:restriction base="xs:string"> <xs:pattern value="(0*[0-9]{1,4}|0*[1-5][0-9]{4}|0*6[0-4][0-9]{3}|0*65[0-4][0-9]{2}|0*655[0-2][0-9]|0*6553[0-5])\.(0*[0-9]{1,4}|0*[1-5][0-9]{4}|0*6[0-4][0-9]{3}|0*65[0-4][0-9]{2}|0*655[0-2][0-9]|0*6553[0-5])\.(0*[0-9]{1,4}|0*[1-5][0-9]{4}|0*6[0-4][0-9]{3}|0*65[0-4][0-9]{2}|0*655[0-2][0-9]|0*6553[0-5])\.(0*[0-9]{1,4}|0*[1-5][0-9]{4}|0*6[0-4][0-9]{3}|0*65[0-4][0-9]{2}|0*655[0-2][0-9]|0*6553[0-5])" /> </xs:restriction> </xs:simpleType> <xs:simpleType name="fileNameStringType" > <xs:restriction base="xs:string"> <xs:pattern value="([\u0020]|[\u0021]|[\u0024]|[\u0025]|[\u0027-\u0029]|[\u002B-\u002E]|[\u0030-\u0039]|[\u003B]|[\u003D]|[\u0040-\u005B]|[\u005D-\u007B]|[\u007D-\uFFFD]|[\u10000-\u10FFFF])*" /> </xs:restriction> </xs:simpleType> <xs:complexType name="assemblyIdentityType" > <xs:attribute name="name" type="asm.v1:fileNameStringType" use="required" /> <xs:attribute name="version" type="asm.v1:fourPartVersionType" use="required" /> <xs:attribute name="type" type="xs:string" use="optional" fixed="win32" /> <xs:attribute name="processorArchitecture" type="xs:string" use="required" fixed="msil" /> <xs:attribute name="publicKeyToken" type="asm.v1:publicKeyTokenType" use="required" /> <xs:attribute name="language" type="xs:string" use="required" fixed="neutral" /> </xs:complexType> </xs:schema>
File: asm.v2.types.xsd
-
<?xml version="1.0" encoding="utf-8"?> <xs:schema targetNamespace="urn:schemas-microsoft-com:asm.v2" attributeFormDefault="unqualified" elementFormDefault="qualified" xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:ds="http://www.w3.org/2000/09/xmldsig#" xmlns:asm.v2="urn:schemas-microsoft-com:asm.v2" xmlns:asm.v3="urn:schemas-microsoft-com:asm.v3" xmlns:co.v1="urn:schemas-microsoft-com:clickonce.v1" > <xs:import namespace="http://www.w3.org/2000/09/xmldsig#" schemaLocation="external/xmldsig-core-schema.0.0.0.2.xsd" /> <xs:import namespace="urn:schemas-microsoft-com:clickonce.v1" schemaLocation="co.v1.xsd" /> <xs:import namespace="urn:schemas-microsoft-com:asm.v3" schemaLocation="asm.v3.types.xsd" /> <xs:element name="application" type="asm.v2:applicationType" /> <xs:element name="entryPoint" type="asm.v2:entryPointType" /> <xs:element name="trustInfo" type="asm.v2:trustInfoType" /> <xs:element name="dependency" type="asm.v2:dependencyType" /> <xs:element name="file" type="asm.v2:fileType" /> <xs:element name="assemblyIdentity" type="asm.v2:assemblyIdentityType" /> <xs:element name="publisherIdentity" type="asm.v2:publisherIdentityType" /> <xs:complexType name="applicationType" /> <xs:complexType name="dependencyType" > <xs:sequence> <xs:choice> <xs:element name="dependentAssembly" type="asm.v2:dependentAssemblyType" /> <xs:element name="dependentOS" type="asm.v2:dependentOSType" /> </xs:choice> </xs:sequence> </xs:complexType> <xs:complexType name="dependentAssemblyType" > <xs:sequence> <xs:element name="assemblyIdentity" type="asm.v2:assemblyIdentityType" /> <xs:element name="hash" type="asm.v2:hashType" minOccurs="0" maxOccurs="unbounded" /> </xs:sequence> <xs:attribute name="dependencyType" type="asm.v2:dependencyTypeType" use="optional" default="preRequisite" /> <xs:attribute name="codebase" type="xs:anyURI" /> <xs:attribute name="size" type="xs:integer" use="optional" /> <xs:attribute name="allowDelayedBinding" type="xs:boolean" use="required" fixed="true" /> </xs:complexType> <xs:complexType name="hashType" > <xs:complexContent> <xs:extension base="ds:ReferenceType"> <xs:sequence> <xs:any namespace="##other" processContents="lax" minOccurs="0" maxOccurs="unbounded" /> </xs:sequence> </xs:extension> </xs:complexContent> </xs:complexType> <xs:complexType name="dependentOSType" > <xs:sequence> <xs:element name="osVersionInfo" type="asm.v2:osVersionInfoType" /> </xs:sequence> </xs:complexType> <xs:complexType name="osVersionInfoType" > <xs:sequence> <xs:element name="os" type="asm.v2:osType" /> </xs:sequence> </xs:complexType> <xs:complexType name="osType" > <xs:attribute name="majorVersion" type="asm.v2:TwoByteVersion" use="required" fixed="4" /> <xs:attribute name="minorVersion" type="asm.v2:TwoByteVersion" use="required" fixed="10" /> <xs:attribute name="buildNumber" type="asm.v2:TwoByteVersion" use="required" fixed="0" /> <xs:attribute name="servicePackMajor" type="asm.v2:OneByteVersion" use="required" fixed="0" /> </xs:complexType> <xs:simpleType name="TwoByteVersion" > <xs:restriction base="xs:integer"> <xs:minInclusive value="0" /> <xs:maxInclusive value="65535" /> </xs:restriction> </xs:simpleType> <xs:simpleType name="OneByteVersion" > <xs:restriction base="xs:integer"> <xs:minInclusive value="0" /> <xs:maxInclusive value="255" /> </xs:restriction> </xs:simpleType> <xs:simpleType name="dependencyTypeType" > <xs:restriction base="xs:string"> <xs:enumeration value="preRequisite" /> <xs:enumeration value="install"/> </xs:restriction> </xs:simpleType> <xs:simpleType name="fileNameStringType" > <xs:restriction base="xs:string"> <xs:pattern value="([\u0020]|[\u0021]|[\u0024]|[\u0025]|[\u0027-\u0029]|[\u002B-\u002E]|[\u0030-\u0039]|[\u003B]|[\u003D]|[\u0040-\u005B]|[\u005D-\u007B]|[\u007D-\uFFFD]|[\u10000-\u10FFFF])*" /> </xs:restriction> </xs:simpleType> <xs:complexType name="assemblyIdentityType" > <xs:attribute name="name" type="asm.v2:fileNameStringType" use="required" /> <xs:attribute name="version" type="asm.v2:fourPartVersionType" use="required" /> <xs:attribute name="type" type="xs:string" use="optional" fixed="win32" /> <xs:attribute name="processorArchitecture" type="xs:string" use="optional" fixed="msil" /> <xs:attribute name="publicKeyToken" type="asm.v2:publicKeyTokenType" use="optional" /> <xs:attribute name="language" type="xs:string" use="optional" fixed="neutral" /> </xs:complexType> <xs:simpleType name="fourPartVersionType" > <xs:restriction base="xs:string"> <xs:pattern value="(0*[0-9]{1,4}|0*[1-5][0-9]{4}|0*6[0-4][0-9]{3}|0*65[0-4][0-9]{2}|0*655[0-2][0-9]|0*6553[0-5])\.(0*[0-9]{1,4}|0*[1-5][0-9]{4}|0*6[0-4][0-9]{3}|0*65[0-4][0-9]{2}|0*655[0-2][0-9]|0*6553[0-5])\.(0*[0-9]{1,4}|0*[1-5][0-9]{4}|0*6[0-4][0-9]{3}|0*65[0-4][0-9]{2}|0*655[0-2][0-9]|0*6553[0-5])\.(0*[0-9]{1,4}|0*[1-5][0-9]{4}|0*6[0-4][0-9]{3}|0*65[0-4][0-9]{2}|0*655[0-2][0-9]|0*6553[0-5])" /> </xs:restriction> </xs:simpleType> <xs:simpleType name="publicKeyTokenType" > <xs:restriction base="xs:string"> <xs:pattern value="([0-9]|[a-f]|[A-F]){16}" /> </xs:restriction> </xs:simpleType> <xs:complexType name="publisherIdentityType" > <xs:attribute name="name" type="xs:string" /> <xs:attribute name="issuerKeyHash" type="xs:string" /> </xs:complexType> <xs:complexType name="entryPointType" > <xs:sequence> <xs:element ref="co.v1:customHostSpecified" /> </xs:sequence> </xs:complexType> <xs:complexType name="trustInfoType" > <xs:sequence> <xs:element name="security" type="asm.v2:securityType" /> <xs:element ref="asm.v3:asmv3" minOccurs="0" /> </xs:sequence> </xs:complexType> <xs:complexType name="securityType" > <xs:sequence> <xs:element name="applicationRequestMinimum" type="asm.v2:applicationRequestMinimumType" /> <xs:element name="requestedPrivileges" type="asm.v3:requestedPrivilegesType" /> <xs:element ref="asm.v3:asmv3" minOccurs="0" /> </xs:sequence> </xs:complexType> <xs:complexType name="applicationRequestMinimumType" > <xs:sequence> <xs:element name="PermissionSet" type="asm.v2:PermissionSetType" /> <xs:element name="defaultAssemblyRequest" type="asm.v2:defaultAssemblyRequestType" /> </xs:sequence> </xs:complexType> <xs:complexType name="PermissionSetType" > <xs:attribute name="ID" type="xs:ID" use="required" /> <xs:attribute name="Unrestricted" type="xs:boolean" use="required" fixed="true" /> <xs:attribute name="SameSite" type="xs:string" use="required" fixed="site" /> </xs:complexType> <xs:complexType name="defaultAssemblyRequestType" > <xs:attribute name="permissionSetReference" type="xs:IDREF" /> </xs:complexType> <xs:complexType name="fileType" > <xs:choice minOccurs="0" maxOccurs="unbounded"> <xs:element name="hash" type="asm.v2:hashType" /> </xs:choice> <xs:attribute name="name" type="xs:string" use="required" /> <xs:attribute name="size" type="xs:unsignedLong" use="required" /> </xs:complexType> </xs:schema>
File:asm.v3.types.xsd
-
<?xml version="1.0" encoding="utf-8"?> <xs:schema xmlns:asm.v3="urn:schemas-microsoft-com:asm.v3" targetNamespace="urn:schemas-microsoft-com:asm.v3" attributeFormDefault="unqualified" elementFormDefault="qualified" xmlns:xs="http://www.w3.org/2001/XMLSchema" > <xs:element name="asmv3" type="asm.v3:asmv3Type" /> <xs:complexType name="requestedPrivilegesType" > <xs:sequence> <xs:element name="requestedExecutionLevel" type="asm.v3:requestedExecutionLevelType" /> </xs:sequence> </xs:complexType> <xs:complexType name="requestedExecutionLevelType" > <xs:attribute name="level" type="xs:string" use="required" fixed="asInvoker" /> </xs:complexType> <xs:complexType name="asmv3Type" > <xs:sequence> <xs:any minOccurs="0" maxOccurs="unbounded" namespace="##any" processContents="skip" /> </xs:sequence> </xs:complexType> </xs:schema>
File: co.v1.xsd
-
<?xml version="1.0" encoding="utf-8"?> <xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:co.v1="urn:schemas-microsoft-com:clickonce.v1" targetNamespace="urn:schemas-microsoft-com:clickonce.v1" > <xs:element name="customHostSpecified" type="co.v1:customHostSpecifiedType" /> <xs:complexType name="customHostSpecifiedType" /> </xs:schema>
File: vsta.v3.xsd
-
<?xml version="1.0" encoding="utf-8"?> <xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:asm.v2="urn:schemas-microsoft-com:asm.v2" xmlns:vsto.v4="urn:schemas-microsoft-com:vsto.v4" xmlns:vsta.v3="urn:schemas-microsoft-com:vsta.v3" targetNamespace="urn:schemas-microsoft-com:vsta.v3" attributeFormDefault="unqualified" elementFormDefault="qualified" > <xs:import namespace="urn:schemas-microsoft-com:asm.v2" schemaLocation="asm.v2.types.xsd" /> <xs:import namespace="urn:schemas-microsoft-com:vsto.v4" schemaLocation="vsto.v4.xsd" /> <xs:element name="addIn" type="vsta.v3:addInType" /> <xs:complexType name="addInType" > <xs:sequence> <xs:element name="entryPointsCollection" type="vsta.v3:entryPointsCollectionType" minOccurs="1" maxOccurs="1" /> <xs:element name="update" type="vsta.v3:updateType" maxOccurs="1" minOccurs="1" /> <xs:element name="postActions" type="vsta.v3:postActionsType" maxOccurs="1" minOccurs="0" /> <xs:element name="application" type="vsta.v3:applicationType" maxOccurs="1" minOccurs="0" /> <xs:any minOccurs="0" maxOccurs="unbounded" namespace="##other" processContents="skip" /> </xs:sequence> <xs:anyAttribute namespace="##other" processContents="skip" /> </xs:complexType> <xs:complexType name="entryPointsCollectionType" > <xs:sequence> <xs:element name="entryPoints" type="vsta.v3:entryPointsType" minOccurs="1" maxOccurs="unbounded" /> <xs:any minOccurs="0" maxOccurs="unbounded" namespace="##other" processContents="skip" /> </xs:sequence> <xs:anyAttribute namespace="##other" processContents="skip" /> </xs:complexType> <xs:complexType name="entryPointsType" > <xs:sequence> <xs:element name="entryPoint" type="vsta.v3:entryPointType" maxOccurs="unbounded" /> <xs:any minOccurs="0" maxOccurs="unbounded" namespace="##other" processContents="skip" /> </xs:sequence> <xs:attribute name="id" type="xs:string" use="optional" /> <xs:anyAttribute namespace="##other" processContents="skip" /> </xs:complexType> <xs:complexType name="entryPointType" mixed="true" > <xs:sequence minOccurs="1" maxOccurs="1"> <xs:element ref="asm.v2:assemblyIdentity" /> <xs:any minOccurs="0" maxOccurs="unbounded" namespace="##other" processContents="skip" /> </xs:sequence> <xs:attribute name="class" type="xs:string" use="required" /> <xs:anyAttribute namespace="##other" processContents="skip" /> </xs:complexType> <xs:complexType name="postActionEntryPointType" mixed="true" > <xs:sequence minOccurs="1" maxOccurs="1"> <xs:element ref="asm.v2:assemblyIdentity" /> <xs:any minOccurs="0" maxOccurs="unbounded" namespace="##other" processContents="skip" /> </xs:sequence> <xs:attribute name="class" type="xs:string" use="required" /> <xs:anyAttribute namespace="##other" processContents="skip" /> </xs:complexType> <xs:complexType name="updateType" > <xs:sequence> <xs:any minOccurs="0" maxOccurs="unbounded" namespace="##other" processContents="skip" /> </xs:sequence> <xs:attribute name="enabled" type="xs:boolean" use="required" fixed="false" /> <xs:anyAttribute namespace="##other" processContents="skip" /> </xs:complexType> <xs:complexType name="postActionsType" > <xs:sequence> <xs:element name="postAction" type="vsta.v3:postActionType" maxOccurs="unbounded" minOccurs="0" /> <xs:any minOccurs="0" maxOccurs="unbounded" namespace="##other" processContents="skip" /> </xs:sequence> <xs:anyAttribute namespace="##other" processContents="skip" /> </xs:complexType> <xs:complexType name="postActionType" > <xs:sequence> <xs:element name="entryPoint" type="vsta.v3:postActionEntryPointType" maxOccurs="1" minOccurs="1" /> <xs:element name="postActionData" type="vsta.v3:postActionDataType" maxOccurs="1" minOccurs="0" /> <xs:any minOccurs="0" maxOccurs="unbounded" namespace="##other" processContents="skip" /> </xs:sequence> <xs:anyAttribute namespace="##other" processContents="skip" /> </xs:complexType> <xs:complexType name="postActionDataType" > <xs:sequence> <xs:any minOccurs="0" maxOccurs="unbounded" namespace="##other" processContents="skip" /> </xs:sequence> <xs:anyAttribute namespace="##other" processContents="skip" /> </xs:complexType> <xs:complexType name="applicationType" > <xs:sequence> <xs:element ref="vsto.v4:customizations" /> </xs:sequence> </xs:complexType> </xs:schema>
File: vsto.v4.xsd
-
<?xml version="1.0" encoding="utf-8"?> <xs:schema xmlns:vsto.v4="urn:schemas-microsoft-com:vsto.v4" attributeFormDefault="unqualified" elementFormDefault="qualified" targetNamespace="urn:schemas-microsoft-com:vsto.v4" xmlns:xs="http://www.w3.org/2001/XMLSchema" > <xs:element name="customizations" type="vsto.v4:customizationsType" /> <xs:complexType name="customizationsType" > <xs:sequence> <xs:element name="customization" type="vsto.v4:customizationType" minOccurs="1" maxOccurs="unbounded" /> <xs:any minOccurs="0" maxOccurs="unbounded" namespace="##other" processContents="skip" /> </xs:sequence> <xs:anyAttribute namespace="##other" processContents="skip" /> </xs:complexType> <xs:complexType name="customizationType" > <xs:sequence> <xs:choice minOccurs="1" maxOccurs="1"> <xs:element name="appAddIn" type="vsto.v4:appAddInType" /> </xs:choice> <xs:any minOccurs="0" maxOccurs="unbounded" namespace="##other" processContents="skip" /> </xs:sequence> <xs:attribute name="id" type="xs:string" use="optional" /> <xs:anyAttribute namespace="##other" processContents="skip" /> </xs:complexType> <xs:complexType name="appAddInType" > <xs:sequence> <xs:element name="friendlyName" type="xs:string" maxOccurs="1" minOccurs="1" /> <xs:element name="description" type="xs:string" maxOccurs="1" minOccurs="0" /> <xs:any minOccurs="0" maxOccurs="unbounded" namespace="##other" processContents="skip" /> </xs:sequence> <xs:attribute name="application" type="xs:string" use="required" fixed="Outlook" /> <xs:attribute name="loadBehavior" type="vsto.v4:loadBehaviorType" use="optional" /> <xs:attribute name="keyName" type="vsto.v4:keyStringType" use="required" /> <xs:anyAttribute namespace="##other" processContents="skip" /> </xs:complexType> <xs:simpleType name="loadBehaviorType" > <xs:restriction base="xs:int"> <xs:enumeration value="2" /> <xs:enumeration value="3" /> </xs:restriction> </xs:simpleType> <xs:simpleType name="keyStringType" > <xs:restriction base="xs:string"> <xs:pattern value="(\u0020|\u0021|[\u0023-\u0029]|[\u002B-\u0039]|\u003B|\u003D|[\u0040-\u005B]|[\u005D-\u007B]|[\u007D-\uD7FF]|[\uE000-\uFFFD]|[\u10000-\u10FFFF])*" /> </xs:restriction> </xs:simpleType> </xs:schema>