Arquivo de configuração MakePri.exe
Este tópico descreve o esquema do arquivo de configuração XML MakePri.exe ; também conhecido como arquivo de configuração PRI. A ferramenta MakePri.exe tem um comando createconfig que você pode usar para criar um novo arquivo de configuração PRI inicializado.
Observação
O MakePri.exe é instalado quando você verifica a opção SDK do Windows para Aplicativos Gerenciados UWP durante a instalação do Kit de Desenvolvimento de Software do Windows. Ele é instalado no demarcador %WindowsSdkDir%bin\<WindowsTargetPlatformVersion>\x64\makepri.exe
(bem como em pastas nomeadas para as outras arquiteturas). Por exemplo, C:\Program Files (x86)\Windows Kits\10\bin\10.0.17713.0\x64\makepri.exe
.
O arquivo de configuração PRI controla quais recursos são indexados e como. O XML de configuração deve estar em conformidade com o esquema a seguir.
<?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>
- O
default
elemento especifica o contexto (linguagem, escala, contraste etc.) que deve ser usado para resolver recursos quando o contexto de runtime não corresponde a nenhum candidato a recurso. Como esse contexto é especificado no momento da compilação e não é alterado, os recursos são resolvidos para esse contexto à medida que os qualificadores são criados. A pontuação correspondente é armazenada no momento da compilação. Cada qualificador deve ter algum valor especificado. Consulte ResourceContext para obter detalhes sobre como os recursos são escolhidos. - O
index
elemento define passagens de indexação discretas que são feitas sobre os ativos. Cada passagem de indexação determina os indexadores específicos do formato a serem usados e quais recursos indexar. - O
qualifiers
elemento define os qualificadores iniciais para o primeiro arquivo ou pasta que outros recursos herdam. Cada elemento qualificador deve ter um nome e um valor válidos (consulte Personalizar seus recursos para idioma, escala, alto contraste e outros qualificadores). - O
root
atributo é a raiz do caminho do arquivo físico para a passagem de índice. Pode ser relativo ou absoluto. Se relativo, ele será acrescentado à raiz do projeto que você fornece na linha de comando. Se absoluto, ele é usado diretamente como a raiz de passagem de índice. Barras para trás ou para frente são aceitáveis. As barras à direita são cortadas. A raiz da passagem de índice determina a pasta à qual todos os recursos são considerados relativos. - O
startIndexAt
atributo é o arquivo ou pasta inicial usado na indexação. É relativo à raiz de passagem de índice. Um valor vazio pressupõe a pasta raiz de passagem de índice.
Arquivo de configuração PRI padrão
MakePri.exe gera esse novo arquivo de configuração PRI inicializado quando o comando createconfig é emitido.
<?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>
Elemento de embalagem
O packaging
elemento define as informações de divisão de PRI. O esquema do packaging
elemento é definido para configuração automática (suporte para autoResourcePackage
ao longo de uma dimensão específica) e manual.
Este exemplo mostra como usar autoResourcePackage
ao longo de uma dimensão específica.
<packaging>
<autoResourcePackage qualifier="Language"/>
<autoResourcePackage qualifier="Scale"/>
<autoResourcePackage qualifier="DXFeatureLevel"/>
</packaging>
Este exemplo mostra como usar o .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 não bloqueia explicitamente a geração de arquivos PRI de recurso em nenhuma dimensão específica. As restrições ao longo de um determinado conjunto de dimensões são definidas e implementadas externamente por MakeAppx.exe ou outras ferramentas no pipeline.
MakePri.exe analisa o packaging
elemento após todos os index
nós para preencher todos os qualificadores padrão. MakePri.exe coleta informações analisadas nessas estruturas de dados.
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.
resources@isDeploymentMergeable atributo
Esse atributo define um sinalizador no arquivo PRI que faz com que
- Mesclagem de implantação para identificar que esse arquivo PRI pode ser mesclado.
- GetFullyQualifiedReference para retornar um erro caso esse sinalizador esteja definido e o gerenciador de recursos tenha sido inicializado com um arquivo.
O valor padrão desse atributo é true
. MakePri.exe só define o sinalizador na PRI se você tiver como destino o Windows 10.
Recomendamos que você omita isDeploymentMergeable
(ou defina explicitamente como true
) para a criação do pacote de recursos se você for direcionado Windows 10.
MakePri.exe adiciona o valor de ao arquivo de isDeploymentMergeable
despejo se makepri dump
for executado com a /dt detailed
opção.
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<PriInfo>
<PriHeader>
...
<IsDeploymentMergeable>true</IsDeploymentMergeable>
...
</PriHeader>
...
</PriInfo>
resources@majorVersion atributo
O valor padrão para esse atributo é 1. Se você fornecer um valor explícito e também usar a opção de linha de comando obsoleta /VersionMajor(vma)
para a ferramenta MakePri.exe, o valor no arquivo de configuração terá precedência.
Veja um exemplo.
<resources majorVersion="2">
<packaging ... />
<index root="\" startIndexAt="\">
...
</index>
</resources>
resources@targetOsVersion atributo
Indica a versão do sistema operacional de destino. A tabela abaixo mostra os valores com suporte; O valor padrão é 6.3.0.
Valor | Significado |
---|---|
10.0.0 | Windows 10 |
6.3.0 (padrão) | Windows 8.1 |
6.2.1 | Windows 8 |
Veja um exemplo.
<resources targetOsVersion="10.0.0">
<packaging ... />
<index root="\" startIndexAt="\">
...
</index>
</resources>
Observação O Windows é compatível com versões anteriores em relação aos arquivos PRI; mas nem sempre é compatível com versões posteriores.
MakePri.exe adiciona o valor de ao arquivo de targetOsVersion
despejo se makepri dump
for executado com a /dt detailed
opção.
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<PriInfo>
<PriHeader>
...
<TargetOS version="10.0.0"/>
...
</PriHeader>
...
</PriInfo>
Mensagens de erro de validação
Aqui estão alguns exemplos de condições de erro e a mensagem de erro correspondente.
Condição | Severidade | Mensagem |
---|---|---|
Um targetOsVersion diferente de um dos valores com suporte é especificado. | Erro | Configuração inválida: targetOsVersion inválido especificado. |
Um targetOsVersion de "6.2.1" é especificado e um packaging elemento está presente. |
Erro | Configuração inválida: não há suporte para o nó 'Packaging' com este targetOsVersion. |
Mais de um modo encontrado na configuração. Por exemplo, Manual e AutoResourcePackage especificados. | Erro | Configuração inválida: o nó 'empacotamento' não pode ter mais de um modo de operação. |
Um qualificador padrão é listado em pacote de recursos. | Erro | Configuração inválida: <Qualifiername>=<QualifierValue> é um qualificador padrão e seus candidatos não podem ser adicionados a um pacote de recursos. |
O qualificador AutoResourcePackage contém vários qualificadores. Por exemplo, language_scale. | Erro | Configuração inválida: não há suporte para AutoResourcePackage com vários qualificadores. |
ResourcePackage QualifierSet contém vários qualificadores. Por exemplo, language-en-us_scale-100 | Erro | Configuração inválida: não há suporte para QualifierSet com vários qualificadores. |
Nome do pacote de recursos duplicado encontrado. | Erro | Configuração inválida: nome do pacote <de recursos duplicado rpname>. |
Mesmo conjunto de qualificadores definido em dois pacotes de recursos. | Erro | Configuração inválida: várias instâncias de "<tags de qualificador>" do QualifierSet encontradas. |
Nenhum candidato é encontrado para o QualifierSet listado para o nó 'ResourcePackage'. | Aviso | Configuração inválida: nenhum candidato encontrado para <o nome> do pacote de recursos. |
Nenhum candidato encontrado para o qualificador listado no nó 'AutoResourcePackage'. | Aviso | Configuração inválida: Nenhum candidato encontrado para o nome> do qualificador do qualificador<. Pacote de recursos não gerado. |
Nenhum dos modos é encontrado. Ou seja, nó de 'empacotamento' vazio encontrado. | Aviso | Configuração inválida: nenhum modo de empacotamento especificado. |