Konfigurationsdatei für „MakePri.exe“
In diesem Thema wird das Schema der MakePri.exe XML-Konfigurationsdatei beschrieben; auch als PRI-Konfigurationsdatei bezeichnet. Das tool MakePri.exe verfügt über einen Createconfig-Befehl , mit dem Sie eine neue, initialisierte PRI-Konfigurationsdatei erstellen können.
Hinweis
MakePri.exe ist installiert, wenn Sie die Option Windows SDK für verwaltete UWP-Apps beim Installieren des Windows Software Development Kit markieren. Sie wird auf dem Pfad %WindowsSdkDir%bin\<WindowsTargetPlatformVersion>\x64\makepri.exe
installiert (sowie in Ordnern, die für die anderen Architekturen benannt sind). Beispiel: C:\Program Files (x86)\Windows Kits\10\bin\10.0.17713.0\x64\makepri.exe
.
Die PRI-Konfigurationsdatei steuert, welche Ressourcen indiziert sind und wie. Der Konfigurations-XML-Code muss dem folgenden Schema entsprechen.
<?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>
- Das
default
Element gibt den Kontext (Sprache, Skalierung, Kontrast usw.) an, der zum Auflösen von Ressourcen verwendet werden soll, wenn der Laufzeitkontext keinem Ressourcenkandidaten entspricht. Da dieser Kontext zur Erstellungszeit angegeben und nicht geändert wird, werden Ressourcen in diesem Kontext aufgelöst, da Qualifizierer erstellt werden. Die übereinstimmend bewertete Bewertung wird zur Erstellungszeit gespeichert. Jeder Qualifizierer muss einen Wert angeben. Details zur Auswahl von Ressourcen finden Sie unter ResourceContext . - Das
index
Element definiert diskrete Indizierungsdurchläufe, die über die Ressourcen erfolgen. Jeder Indizierungsdurchlauf bestimmt die zu verwendenden formatspezifischen Indexer und welche Ressourcen indiziert werden sollen. - Das
qualifiers
Element legt die anfänglichen Qualifizierer für die erste Datei oder den ersten Ordner fest, die andere Ressourcen erben. Jedes Qualifiziererelement muss über einen gültigen Namen und Einen gültigen Wert verfügen (siehe Anpassen der Ressourcen für Sprache, Skalierung, hohen Kontrast und andere Qualifizierer). - Das
root
Attribut ist der Pfadstamm der physischen Datei für den Indexdurchlauf. Es kann relativ oder absolut sein. Wenn sie relativ ist, wird sie an den Projektstamm angefügt, den Sie in der Befehlszeile angeben. Wenn absolut, wird sie direkt als Indexdurchlaufstamm verwendet. Schrägstriche sind zulässig. Nachfolgende Schrägstriche werden gekürzt. Der Stamm des Indexdurchlaufs bestimmt den Ordner, zu dem alle Ressourcen als relativ betrachtet werden. - Das
startIndexAt
Attribut ist die anfängliche Seeddatei oder der anfängliche Ordner, die bei der Indizierung verwendet werden. Sie ist relativ zum Stamm des Indexdurchlaufs. Ein leerer Wert geht davon aus, dass der Stammordner für den Indexdurchlauf übergeben wird.
Standard-PRI-Konfigurationsdatei
MakePri.exe generiert diese neue, initialisierte PRI-Konfigurationsdatei, wenn der Befehl createconfig ausgegeben wird.
<?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>
Packaging-Element
Das packaging
Element definiert pri split information. Das Schema für das packaging
Element wird sowohl für die automatische (Unterstützung für eine bestimmte Dimension) als auch für autoResourcePackage
die manuelle Konfiguration definiert.
In diesem Beispiel wird gezeigt, wie Sie eine bestimmte Dimension verwenden autoResourcePackage
.
<packaging>
<autoResourcePackage qualifier="Language"/>
<autoResourcePackage qualifier="Scale"/>
<autoResourcePackage qualifier="DXFeatureLevel"/>
</packaging>
In diesem Beispiel wird gezeigt, wie Sie manuell resourcePackage
verwenden.
<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 blockiert nicht explizit die Generierung von PRI-Ressourcendateien entlang einer bestimmten Dimension. Einschränkungen entlang einer bestimmten Gruppe von Dimensionen werden extern durch MakeAppx.exe oder andere Tools in der Pipeline definiert und implementiert.
MakePri.exe analysiert das packaging
Element nach allen index
Knoten, um alle Standardqualifizierer aufzufüllen. MakePri.exe sammelt analysierte Informationen in diesen Datenstrukturen.
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"
Dieses Attribut legt ein Flag in der PRI-Datei fest, die bewirkt
- Bereitstellungszusammenführung, um zu ermitteln, dass diese PRI-Datei zusammengeführt werden kann.
- GetFullyQualifiedReference, um einen Fehler zurückzugeben, falls dieses Flag festgelegt ist und der Ressourcen-Manager mit einer Datei initialisiert wurde.
Der Standardwert dieses Attributs ist true
. MakePri.exe legt das Flag nur in PRI fest, wenn Sie Windows 10 als Ziel festlegen.
Es wird empfohlen, die Erstellung von Ressourcenpaketen für Windows 10 auszulassen isDeploymentMergeable
(oder explizit auf ) festzulegen true
.
MakePri.exe fügt den Wert der isDeploymentMergeable
Speicherabbilddatei hinzu, wenn makepri dump
sie mit der /dt detailed
Option ausgeführt wird.
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<PriInfo>
<PriHeader>
...
<IsDeploymentMergeable>true</IsDeploymentMergeable>
...
</PriHeader>
...
</PriInfo>
attribut "resources@majorVersion"
Der Standardwert für dieses Attribut ist 1. Wenn Sie einen expliziten Wert angeben und auch die veraltete /VersionMajor(vma)
Befehlszeilenoption für das MakePri.exe Tool verwenden, hat der Wert in der Konfigurationsdatei Vorrang.
Im Folgenden sehen Sie ein Beispiel.
<resources majorVersion="2">
<packaging ... />
<index root="\" startIndexAt="\">
...
</index>
</resources>
attribut "resources@targetOsVersion"
Gibt die Zielbetriebssystemversion an. In der folgenden Tabelle sind die werte aufgeführt, die unterstützt werden; Der Standardwert ist 6.3.0.
Wert | Bedeutung |
---|---|
10.0.0 | Windows 10 |
6.3.0 (Standard) | Windows 8,1 |
6.2.1 | Windows 8 |
Im Folgenden sehen Sie ein Beispiel.
<resources targetOsVersion="10.0.0">
<packaging ... />
<index root="\" startIndexAt="\">
...
</index>
</resources>
Beachten Sie, dass Windows in Bezug auf PRI-Dateien abwärtskompatibel ist, aber nicht immer kompatibel ist.
MakePri.exe fügt den Wert der targetOsVersion
Speicherabbilddatei hinzu, wenn makepri dump
sie mit der /dt detailed
Option ausgeführt wird.
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<PriInfo>
<PriHeader>
...
<TargetOS version="10.0.0"/>
...
</PriHeader>
...
</PriInfo>
Überprüfungsfehlermeldungen
Hier sind einige Beispielfehlerbedingungen und die entsprechende Fehlermeldung.
Bedingung | Severity | `Message` |
---|---|---|
Es wird ein anderer targetOsVersion-Wert als einer der unterstützten Werte angegeben. | Fehler | Ungültige Konfiguration: Ungültige targetOsVersion angegeben. |
Eine targetOsVersion von "6.2.1" wird angegeben und ein packaging Element ist vorhanden. |
Fehler | Ungültige Konfiguration: Der Knoten "Packaging" wird mit diesem targetOsVersion-Element nicht unterstützt. |
In der Konfiguration wurden mehrere Modus gefunden. Beispiel: "Manual" und "AutoResourcePackage". | Fehler | Ungültige Konfiguration: Der Knoten "Packaging" darf nicht mehr als einen Vorgangsmodus aufweisen. |
Ein Standardqualifizierer wird unter Ressourcenpaket aufgeführt. | Fehler | Ungültige Konfiguration: <Qualifiername>=<QualifierValue> ist ein Standardqualifizierer, und die Kandidaten können keinem Ressourcenpaket hinzugefügt werden. |
Der AutoResourcePackage-Qualifizierer enthält mehrere Qualifizierer. Beispiel: language_scale. | Fehler | Ungültige Konfiguration: AutoResourcePackage mit mehreren Qualifizierern wird nicht unterstützt. |
ResourcePackage QualifierSet enthält mehrere Qualifizierer. Beispiel: language-en-us_scale-100 | Fehler | Ungültige Konfiguration: QualifierSet mit mehreren Qualifizierern wird nicht unterstützt. |
Doppelter Ressourcenpaketname gefunden. | Fehler | Ungültige Konfiguration: Doppelter Ressourcenpaketname <rpname>. |
Derselbe Qualifizierersatz, der in zwei Ressourcenpaketen definiert ist. | Fehler | Ungültige Konfiguration: Mehrere Instanzen von QualifierSet "<Qualifizierertags>" gefunden. |
Es wurden keine Kandidaten für den QualifierSet gefunden, der für den Knoten "ResourcePackage" aufgeführt ist. | Warnung | Ungültige Konfiguration: Für den <Ressourcenpaketnamen> wurden keine Kandidaten gefunden. |
Es wurden keine Kandidaten für qualifizierer gefunden, die unter dem Knoten "AutoResourcePackage" aufgeführt sind. | Warnung | Ungültige Konfiguration: Für qualifizierernamen <>wurden keine Kandidaten gefunden. Ressourcenpaket nicht generiert. |
Es wurden keine Modi gefunden. Das heißt, der leere Knoten "Packaging" wurde gefunden. | Warnung | Ungültige Konfiguration: Es wurde kein Verpackungsmodus angegeben. |