Fichier de configuration MakePri.exe
Cette rubrique décrit le schéma du fichier de configuration XML MakePri.exe ; également appelé fichier de configuration PRI. L’outil MakePri.exe a une commande createconfig que vous pouvez utiliser pour créer un fichier de configuration PRI initialisé.
Remarque
MakePri.exe est installé lorsque vous case activée l’option Kit de développement logiciel (SDK) Windows pour les applications gérées UWP lors de l’installation du Kit de développement logiciel Windows. Il est installé sur le chemin d’accès %WindowsSdkDir%bin\<WindowsTargetPlatformVersion>\x64\makepri.exe
(ainsi que dans les dossiers nommés pour les autres architectures). Par exemple : C:\Program Files (x86)\Windows Kits\10\bin\10.0.17713.0\x64\makepri.exe
.
Le fichier de configuration PRI contrôle les ressources indexées et comment. Le code XML de configuration doit être conforme au schéma suivant.
<?xml version="1.0" encoding="utf-8"?>
<xs:schema attributeFormDefault="unqualified" elementFormDefault="qualified" xmlns:xs="http://www.w3.org/2001/XMLSchema">
<xs:element name="resources">
<xs:complexType>
<xs:sequence>
<xs:element name="packaging" maxOccurs="1" minOccurs="0">
<xs:complexType>
<xs:sequence>
<xs:element name="autoResourcePackage" maxOccurs="unbounded" minOccurs="0">
<xs:complexType>
<xs:attribute name="qualifier" type="xs:string" use="required" />
</xs:complexType>
</xs:element>
<xs:element name="resourcePackage" maxOccurs="unbounded" minOccurs="0">
<xs:complexType>
<xs:sequence>
<xs:element name="qualifierSet" maxOccurs="unbounded" minOccurs="0">
<xs:complexType>
<xs:attribute name="definition" type="xs:string" use="required" />
</xs:complexType>
</xs:element>
</xs:sequence>
<xs:attribute name="name" type="xs:string" use="required" />
</xs:complexType>
</xs:element>
</xs:sequence>
</xs:complexType>
</xs:element>
<xs:element maxOccurs="unbounded" name="index">
<xs:complexType>
<xs:sequence>
<xs:element name="qualifiers" minOccurs="0" maxOccurs="unbounded">
<xs:complexType>
<xs:sequence>
<xs:element minOccurs="1" maxOccurs="unbounded" name="qualifier">
<xs:complexType>
<xs:attribute name="name" type="xs:string" use="required" />
<xs:attribute name="value" type="xs:string" use="required" />
</xs:complexType>
</xs:element>
</xs:sequence>
</xs:complexType>
</xs:element>
<xs:element name="default" minOccurs="0" maxOccurs="unbounded">
<xs:complexType>
<xs:sequence>
<xs:element minOccurs="1" maxOccurs="unbounded" name="qualifier">
<xs:complexType>
<xs:attribute name="name" type="xs:string" use="required" />
<xs:attribute name="value" type="xs:string" use="required" />
</xs:complexType>
</xs:element>
</xs:sequence>
</xs:complexType>
</xs:element>
<xs:element name="indexer-config" minOccurs="0" maxOccurs="unbounded">
<xs:complexType>
<xs:sequence>
<xs:any minOccurs="0" maxOccurs="unbounded" processContents="skip"/>
</xs:sequence>
<xs:attribute name="type" type="xs:string" use="required" />
<xs:anyAttribute processContents="skip"/>
</xs:complexType>
</xs:element>
</xs:sequence>
<xs:attribute name="root" type="xs:string" use="required" />
<xs:attribute name="startIndexAt" type="xs:string" use="required" />
</xs:complexType>
</xs:element>
</xs:sequence>
<xs:attribute name="isDeploymentMergeable" type="xs:boolean" use="optional" />
<xs:attribute name="majorVersion" type="xs:positiveInteger" use="optional" />
<xs:attribute name="targetOsVersion" type="xs:string" use="optional" />
</xs:complexType>
</xs:element>
</xs:schema>
- L’élément
default
spécifie le contexte (langage, échelle, contraste, etc.) qui doit être utilisé pour résoudre les ressources lorsque le contexte d’exécution ne correspond à aucun candidat à la ressource. Étant donné que ce contexte est spécifié au moment de la génération et ne change pas, les ressources sont résolues dans ce contexte à mesure que des qualificateurs sont créés. Le score correspondant est stocké au moment de la génération. Chaque qualificateur doit avoir une valeur spécifiée. Pour plus d’informations sur la façon dont les ressources sont choisies, consultez ResourceContext . - L’élément
index
définit des passes d’indexation discrètes effectuées sur les ressources. Chaque passe d’indexation détermine les indexeurs spécifiques au format à utiliser et les ressources à indexer. - L’élément
qualifiers
définit les qualificateurs initiaux pour le premier fichier ou dossier que d’autres ressources héritent. Chaque élément de qualificateur doit avoir un nom et une valeur valides (consultez Personnaliser vos ressources pour la langue, l’échelle, le contraste élevé et d’autres qualificateurs). - L’attribut
root
est la racine du chemin d’accès du fichier physique pour la passe d’index. Il peut être relatif ou absolu. Si elle est relative, elle est ajoutée à la racine du projet que vous fournissez dans la ligne de commande. Si elle est absolue, elle est directement utilisée comme racine de passe d’index. Les barres obliques inverses ou avant sont acceptables. Les barres obliques de fin sont coupées. La racine de la passe d’index détermine le dossier auquel toutes les ressources sont considérées comme relatives. - L’attribut
startIndexAt
est le fichier ou dossier initial d’amorçage utilisé dans l’indexation. Il est relatif à la racine de passe d’index. Une valeur vide suppose que le dossier racine de l’index passe.
Fichier de configuration PRI par défaut
MakePri.exe génère ce nouveau fichier de configuration PRI initialisé lorsque la commande createconfig est émise.
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<resources targetOsVersion="10.0.0" majorVersion="1">
<packaging>
<autoResourcePackage qualifier="Language"/>
<autoResourcePackage qualifier="Scale"/>
<autoResourcePackage qualifier="DXFeatureLevel"/>
</packaging>
<index root="\" startIndexAt="\">
<default>
<qualifier name="Language" value="en-US"/>
<qualifier name="Contrast" value="standard"/>
<qualifier name="Scale" value="100"/>
<qualifier name="HomeRegion" value="001"/>
<qualifier name="TargetSize" value="256"/>
<qualifier name="LayoutDirection" value="LTR"/>
<qualifier name="Theme" value="dark"/>
<qualifier name="AlternateForm" value=""/>
<qualifier name="DXFeatureLevel" value="DX9"/>
<qualifier name="Configuration" value=""/>
<qualifier name="DeviceFamily" value="Universal"/>
<qualifier name="Custom" value=""/>
</default>
<indexer-config type="folder" foldernameAsQualifier="true" filenameAsQualifier="true" qualifierDelimiter="."/>
<indexer-config type="resw" convertDotsToSlashes="true" initialPath=""/>
<indexer-config type="resjson" initialPath=""/>
<indexer-config type="PRI"/>
</index>
<!--<index startIndexAt="Start Index Here" root="Root Here">-->
<!-- <indexer-config type="resfiles" qualifierDelimiter="."/>-->
<!-- <indexer-config type="priinfo" emitStrings="true" emitPaths="true" emitEmbeddedData="true"/>-->
<!--</index>-->
</resources>
Élément d’empaquetage
L’élément packaging
définit les informations de fractionnement PRI. Le schéma de l’élément packaging
est défini pour la prise en charge automatique (prise en charge du autoResourcePackage
long d’une dimension spécifique) et pour la configuration manuelle.
Cet exemple montre comment utiliser autoResourcePackage
le long d’une dimension spécifique.
<packaging>
<autoResourcePackage qualifier="Language"/>
<autoResourcePackage qualifier="Scale"/>
<autoResourcePackage qualifier="DXFeatureLevel"/>
</packaging>
Cet exemple montre comment utiliser manuellement resourcePackage
.
<packaging>
<resourcePackage name="Germany">
<qualifierSet definition="lang-de-de"/>
<qualifierSet definition="lang-es-es"/>
</resourcePackage>
<resourcePackage name="France">
<qualifierSet definition="lang-fr-fr"/>
</resourcePackage>
<resourcePackage name="HighRes1">
<qualifierSet definition="scale-200"/>
</resourcePackage>
<resourcePackage name="HighRes2">
<qualifierSet definition="scale-400"/>
</resourcePackage>
</packaging>
MakePri.exe ne bloque pas explicitement la génération de fichiers PRI de ressources le long d’une dimension spécifique. Les restrictions le long d’un certain ensemble de dimensions sont définies et implémentées en externe par MakeAppx.exe ou d’autres outils dans le pipeline.
MakePri.exe analyse l’élément packaging
après tous les index
nœuds pour remplir tous les qualificateurs par défaut. MakePri.exe collecte des informations analysées dans ces structures de données.
enum ResourcePackageMode
{
None,
AutoPackQualifier,
ManualPack
}
ResourcePackageMode eResourcePackageMode;
list<string> RPQualifierList; // To store AutoResourcePackage Qualifiers
map<string, list<string>> RPNameToQSIMap; // To store ResourcePackage name to QualifierSet list mapping.
attribut resources@isDeploymentMergeable
Cet attribut définit un indicateur dans le fichier PRI qui provoque
- Fusion de déploiement pour identifier que ce fichier PRI peut fusionner.
- GetFullyQualifiedReference pour retourner une erreur si cet indicateur est défini et que le gestionnaire de ressources a été initialisé avec un fichier.
La valeur par défaut de cet attribut est true
. MakePri.exe définit uniquement l’indicateur dans PRI si vous ciblez Windows 10.
Nous vous recommandons d’omettre isDeploymentMergeable
(ou de le définir explicitement true
) pour la création du pack de ressources si vous ciblez Windows 10.
MakePri.exe ajoute la valeur du isDeploymentMergeable
fichier de vidage si makepri dump
elle est exécutée avec l’option /dt detailed
.
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<PriInfo>
<PriHeader>
...
<IsDeploymentMergeable>true</IsDeploymentMergeable>
...
</PriHeader>
...
</PriInfo>
attribut resources@majorVersion
La valeur par défaut de cet attribut est 1. Si vous fournissez une valeur explicite et que vous utilisez également l’option de ligne de commande déconseillée /VersionMajor(vma)
pour l’outil MakePri.exe, la valeur du fichier config est prioritaire.
Voici un exemple.
<resources majorVersion="2">
<packaging ... />
<index root="\" startIndexAt="\">
...
</index>
</resources>
attribut resources@targetOsVersion
Indique la version cible du système d’exploitation. Le tableau ci-dessous présente les valeurs prises en charge ; la valeur par défaut est 6.3.0.
Valeur | Signification |
---|---|
10.0.0 | Windows 10 |
6.3.0 (valeur par défaut) | Windows 8.1 |
6.2.1 | Windows 8 |
Voici un exemple.
<resources targetOsVersion="10.0.0">
<packaging ... />
<index root="\" startIndexAt="\">
...
</index>
</resources>
Notez que Windows est rétrocompatible par rapport aux fichiers PRI ; mais pas toujours compatible avec les versions antérieures.
MakePri.exe ajoute la valeur du targetOsVersion
fichier de vidage si makepri dump
elle est exécutée avec l’option /dt detailed
.
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<PriInfo>
<PriHeader>
...
<TargetOS version="10.0.0"/>
...
</PriHeader>
...
</PriInfo>
Messages d’erreur de validation
Voici quelques exemples de conditions d’erreur et le message d’erreur correspondant.
Condition | Niveau de gravité | Message |
---|---|---|
Une version targetOsVersion autre que l’une des valeurs prises en charge est spécifiée. | Error | Configuration non valide : TargetOsVersion non valide spécifié. |
Une targetOsVersion de « 6.2.1 » est spécifiée et un packaging élément est présent. |
Error | Configuration non valide : le nœud « Empaquetage » n’est pas pris en charge avec cette targetOsVersion. |
Plusieurs modes trouvés dans la configuration. Par exemple, Manual and AutoResourcePackage spécifié. | Error | Configuration non valide : le nœud « empaquetage » ne peut pas avoir plusieurs modes d’opération. |
Un qualificateur par défaut est répertorié sous le package de ressources. | Error | Configuration non valide : <Qualifiername>=<QualifierValue> est un qualificateur par défaut et ses candidats ne peuvent pas être ajoutés à un package de ressources. |
Le qualificateur AutoResourcePackage contient plusieurs qualificateurs. Par exemple, language_scale. | Error | Configuration non valide : AutoResourcePackage avec plusieurs qualificateurs n’est pas pris en charge. |
ResourcePackage QualifierSet contient plusieurs qualificateurs. Par exemple, language-en-us_scale-100 | Error | Configuration non valide : QualifierSet avec plusieurs qualificateurs n’est pas pris en charge. |
Nom resourcepack dupliqué trouvé. | Error | Configuration non valide : nom rpname> du nom <du pack de ressources en double. |
Même jeu de qualificateurs défini dans deux packages de ressources. | Error | Configuration non valide : plusieurs instances de QualifierSet «< balises de qualificateur » trouvées>. |
Aucun candidat n’est trouvé pour le QualificateurSet répertorié pour le nœud « ResourcePackage ». | Avertissement | Configuration non valide : Aucun candidat trouvé pour <le nom> du package de ressources. |
Aucun candidat trouvé pour le qualificateur répertorié sous le nœud « AutoResourcePackage ». | Avertissement | Configuration non valide : aucun candidat trouvé pour le nom> du qualificateur de qualificateur<. Package de ressources non généré. |
Aucun des modes n’est trouvé. Autrement dit, nœud « packaging » vide trouvé. | Avertissement | Configuration non valide : aucun mode d’empaquetage spécifié. |