| Server IP : 209.209.40.120 / Your IP : 216.73.217.112 Web Server : Microsoft-IIS/10.0 System : Windows NT NEWWWW 10.0 build 17763 (Windows Server 2019) i586 User : NEWWWW$ ( 0) PHP Version : 8.3.30 Disable Function : NONE MySQL : OFF | cURL : ON | WGET : OFF | Perl : OFF | Python : OFF | Sudo : OFF | Pkexec : OFF Directory : C:/Program Files (x86)/Windows Kits/10/App Certification Kit/ |
Upload File : |
<?xml version="1.0" encoding="utf-8" ?>
<!--
Copyright (c) Microsoft Corporation. All rights reserved.
This file defines the validation rules which is used to validate the appx manifest.
Rule - Each has a unique, case-insensitive name. It defines operation which applies
to all the rule details it contains. It may have a message which will be
shown in the report when failure is detected.
Detail - One rule must contain at least one detail block. Each detail block must have
defined expected result. The detail block may have a message which will be
shown in the report when failure is detected.
Constant - Defined in the Constant table, each has a unique, case-insensitive name and
a string value.
Group - Each group contains one or more rules and sub-groups. Each group must specify
the logic value which is either 'AND' or 'OR'. The result of a group test is
the result after applying the logic operation to the results of the contained
rules and sub-groups.
NOTE: - If a package may contain multiple apps, we might need to define rule scope to specify
one rule should be applied to each app in the package.
- There are two context data availabe. They are useful to display extra information in
the message when error occurs.
APP_NAME - The application name.
RULE_DATA - Its usage depends on the operation, e.g., SearchMultiItems sets the search item
to it when search operation fails.
PACKAGE_NAME - The package name.
-->
<RULES xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="ManifestValidationRules.xsd">
<RULE NAME="CheckForResourceIdExistence" OPERATION="CHECK_FOR_EXISTENCE">
<DETAIL EXPECTED_RESULT="NOT_PRESENT">
<XPATH_QUERY PATH="ns:Identity/@ResourceId"/>
<MESSAGE_IF_FAIL ID="AppXManifestValidationWP_ResourceId"/>
</DETAIL>
</RULE>
<RULE NAME="CheckOsVersion" OPERATION="SEARCH">
<DETAIL EXPECTED_RESULT="FOUND">
<SEARCH_ITEM>
<XPATH_QUERY PATH="ns:Prerequisites/ns:OSMinVersion"/>
</SEARCH_ITEM>
<SEARCH_FROM>
<STRING VALUE="6.3.1"/>
</SEARCH_FROM>
<MESSAGE_IF_FAIL ID="AppXManifestValidation_InValidMinOSVersion"/>
</DETAIL>
<DETAIL EXPECTED_RESULT="FOUND">
<SEARCH_ITEM>
<XPATH_QUERY PATH="ns:Prerequisites/ns:OSMaxVersionTested"/>
</SEARCH_ITEM>
<SEARCH_FROM>
<STRING VALUE="6.3.1"/>
</SEARCH_FROM>
<MESSAGE_IF_FAIL ID="AppXManifestValidation_InValidMaxOSVersion"/>
</DETAIL>
</RULE>
<RULE NAME="CheckMinMaxOsVersionEqual" OPERATION="COMPARISON">
<DETAIL EXPECTED_RESULT="EQUAL">
<COMPARE_SOURCE>
<XPATH_QUERY PATH="ns:Prerequisites/ns:OSMinVersion"/>
</COMPARE_SOURCE>
<COMPARE_TARGET>
<XPATH_QUERY PATH="ns:Prerequisites/ns:OSMaxVersionTested"/>
</COMPARE_TARGET>
<COMPARE_TYPE VALUE="STRING"/>
<MESSAGE_IF_FAIL ID="AppXManifestValidation_MinMaxOsVersionEqual"/>
</DETAIL>
</RULE>
<RULE NAME="CheckFileAssociations" OPERATION="SEARCH_MULTIITEMS">
<DETAIL EXPECTED_RESULT="ALL_NOT_FOUND">
<SEARCH_MULTIITEMS>
<XPATH_QUERY PATH="ns:Applications/ns:Application/ns:Extensions/ns:Extension[@Category='windows.fileTypeAssociation']/ns:FileTypeAssociation/ns:SupportedFileTypes/ns:FileType/@ContentType"/>
</SEARCH_MULTIITEMS>
<SEARCH_FROM>
<STRING VALUE="application/octet-stream"/>
<STRING VALUE="application/force-download"/>
<STRING VALUE="application/x-msdownload"/>
<STRING VALUE="application/unknown"/>
</SEARCH_FROM>
<MESSAGE_IF_FAIL ID="AppXManifestValidation_FileAssociations" PARAM="$(CONTEXT.APP_NAME)|$(CONTEXT.RULE_DATA)"/>
</DETAIL>
</RULE>
<RULE NAME="CheckFileExtensionCount" OPERATION="COMPARISON">
<DETAIL EXPECTED_RESULT="SMALLER_OR_EQUAL">
<COMPARE_SOURCE>
<COUNT>
<XPATH_QUERY PATH="ns:Applications/ns:Application/ns:Extensions/ns:Extension[@Category='windows.fileTypeAssociation']/ns:FileTypeAssociation/ns:SupportedFileTypes/ns:FileType"/>
</COUNT>
</COMPARE_SOURCE>
<COMPARE_TARGET>
<STRING VALUE="$(CONSTANT.MAX_FILE_EXTENSION_NUMBER)"/>
</COMPARE_TARGET>
<COMPARE_TYPE VALUE="NUMBER"/>
<MESSAGE_IF_FAIL ID="AppXManifestValidation_FileExtensionCount" PARAM="$(CONSTANT.MAX_FILE_EXTENSION_NUMBER)"/>
</DETAIL>
</RULE>
<RULE NAME="CheckProtocolCount" OPERATION="COMPARISON">
<DETAIL EXPECTED_RESULT="SMALLER_OR_EQUAL">
<COMPARE_SOURCE>
<COUNT>
<XPATH_QUERY PATH="ns:Applications/ns:Application/ns:Extensions/ns:Extension[@Category='windows.protocol']/ns:Protocol"/>
</COUNT>
</COMPARE_SOURCE>
<COMPARE_TARGET>
<STRING VALUE="$(CONSTANT.MAX_PROTOCOL_NUMBER)"/>
</COMPARE_TARGET>
<COMPARE_TYPE VALUE="NUMBER"/>
<MESSAGE_IF_FAIL ID="AppXManifestValidation_ProtocolCount" PARAM="$(CONSTANT.MAX_PROTOCOL_NUMBER)"/>
</DETAIL>
</RULE>
<RULE NAME="CheckArchitecture" OPERATION="SEARCH">
<DETAIL EXPECTED_RESULT="FOUND">
<SEARCH_ITEM>
<XPATH_QUERY PATH="ns:Identity/@ProcessorArchitecture"/>
</SEARCH_ITEM>
<SEARCH_FROM>
<STRING VALUE="arm"/>
<STRING VALUE="neutral"/>
<STRING VALUE="x86"/>
</SEARCH_FROM>
<MESSAGE_IF_FAIL ID="AppXManifestValidationWP_InvalidArchitecture"/>
</DETAIL>
</RULE>
<GROUP NAME="CheckForFramework" LOGIC="OR">
<RULE NAME="CheckForFrameworkExistence" OPERATION="CHECK_FOR_EXISTENCE">
<DETAIL EXPECTED_RESULT="NOT_PRESENT">
<XPATH_QUERY PATH="ns:Properties/ns:Framework"/>
</DETAIL>
</RULE>
<RULE NAME="CheckForFrameworkFalse" OPERATION="COMPARISON">
<DETAIL EXPECTED_RESULT="EQUAL">
<COMPARE_SOURCE>
<XPATH_QUERY PATH="ns:Properties/ns:Framework"/>
</COMPARE_SOURCE>
<COMPARE_TARGET>
<STRING VALUE="false"/>
</COMPARE_TARGET>
<COMPARE_TYPE VALUE="STRING"/>
</DETAIL>
</RULE>
<MESSAGE_IF_FAIL ID="AppXManifestValidation_Framework" PARAM="<Framework>true</Framework>"/>
</GROUP>
<!-- Framework Package Dependency Test - Enforce appx package take right dependencies by referring to the matrix below.
Framework | OS Min Version | Supports Win6.2 App | Supports Win6.3 App
Microsoft.VCLibs.120.00.Phone | 6.3.1 | No | Yes
-->
<GROUP NAME="CheckForFrameworkDependencyVCLibs120Phone" LOGIC="OR">
<RULE NAME="CheckForVCLibs120Existence" OPERATION="SEARCH">
<DETAIL EXPECTED_RESULT="NOT_FOUND">
<SEARCH_ITEM>
<STRING VALUE="Microsoft.VCLibs.120.00.Phone"/>
</SEARCH_ITEM>
<SEARCH_FROM>
<XPATH_QUERY PATH="ns:Dependencies/ns:PackageDependency/@Name"/>
</SEARCH_FROM>
</DETAIL>
</RULE>
<RULE NAME="CheckForVCLibs120PhoneOsVersion" OPERATION="COMPARISON">
<DETAIL EXPECTED_RESULT="EQUAL">
<COMPARE_SOURCE>
<XPATH_QUERY PATH="ns:Prerequisites/ns:OSMinVersion"/>
</COMPARE_SOURCE>
<COMPARE_TARGET>
<STRING VALUE="6.3.1"/>
</COMPARE_TARGET>
<COMPARE_TYPE VALUE="STRING"/>
</DETAIL>
</RULE>
<MESSAGE_IF_FAIL ID="AppXManifestValidation_FrameworkDependency" PARAM="$(CONTEXT.PACKAGE_NAME)|Microsoft.VCLibs.120.00"/>
</GROUP>
<GROUP NAME="CheckWindowsProtocol" LOGIC="OR">
<RULE NAME="CheckWindowsProtocol" OPERATION="SEARCH">
<DETAIL EXPECTED_RESULT="NOT_FOUND">
<SEARCH_ITEM>
<XPATH_QUERY PATH="ns:Applications/ns:Application/ns:Extensions/ns:Extension[@Category='windows.protocol']/ns:Protocol/@Name"/>
</SEARCH_ITEM>
<SEARCH_FROM>
<STRING VALUE="ms-settings"/>
</SEARCH_FROM>
</DETAIL>
</RULE>
<RULE NAME="CheckForOsVersion" OPERATION="SEARCH">
<DETAIL EXPECTED_RESULT="FOUND">
<SEARCH_ITEM>
<XPATH_QUERY PATH="ns:Prerequisites/ns:OSMaxVersionTested"/>
</SEARCH_ITEM>
<SEARCH_FROM>
<STRING VALUE="6.2.1"/>
<STRING VALUE="6.3.0"/>
</SEARCH_FROM>
</DETAIL>
</RULE>
<MESSAGE_IF_FAIL ID="AppXManifestValidation_BadWindowsProtocol"/>
</GROUP>
<CONSTANT_TABLE>
<CONSTANT NAME="MAX_FILE_EXTENSION_NUMBER" VALUE="500"/>
<CONSTANT NAME="MAX_PROTOCOL_NUMBER" VALUE="10"/>
<CONSTANT NAME="MAX_APPX_SIZE_IN_BYTES" VALUE="4294967296"/>
<CONSTANT NAME="MAX_BUNDLE_SIZE_IN_BYTES" VALUE="26843545600"/>
</CONSTANT_TABLE>
</RULES>