Compartilhar via


Referência de esquema de modelo de aplicativo para UE-V 2.x

Microsoft User Experience Virtualization (UE-V) 2.0, 2.1 e 2.1 SP1 usam modelos de local de configurações XML para definir as configurações do aplicativo desktop e as configurações do Windows capturadas e aplicadas pela UE-V. UE-V inclui um conjunto de modelos de local de configurações padrão. Você também pode criar modelos de local de configurações personalizadas com o Gerador UE-V.

Um usuário avançado pode personalizar o arquivo XML para um modelo de local de configurações. Este tópico detalha a estrutura XML das configurações UE-V 2.1 (SP1) e 2.0 e fornece diretrizes para editar esses arquivos.

Referência de esquema de modelo de aplicativo UE-V 2.1 e 2.1 SP1

Esta seção detalha a estrutura XML do modelo de local de configurações do UE-V 2.1 e 2.1 SP1 e fornece diretrizes para edição deste arquivo.

Nesta seção

Atributo XML Declaration and Encoding

Obrigatório: True

Tipo: Cadeia de caracteres

A declaração XML deve especificar o atributo XML versão 1.0 (<?xml version="1.0">). Os modelos de localização de configurações criados pelo Gerador UE-V são salvos na codificação UTF-8, embora a codificação não seja explicitamente especificada. Recomendamos que você inclua o atributo encoding="UTF-8" nesse elemento como uma prática recomendada. Todos os modelos incluídos com o produto especificam essa marca também (consulte os documentos em %ProgramFiles%\Microsoft User Experience Virtualization\Templates para referência). Por exemplo:

<?xml version="1.0" encoding="UTF-8"?>

Namespace e Elemento Raiz

Obrigatório: True

Tipo: Cadeia de caracteres

O UE-V usa o https://schemas.microsoft.com/UserExperienceVirtualization/2012/SettingsLocationTemplate namespace para todos os aplicativos. SettingsLocationTemplate é o elemento raiz e contém todos os outros elementos. Referência SettingsLocationTemplate em todos os modelos usando esta marca:

<SettingsLocationTemplate xmlns='https://schemas.microsoft.com/UserExperienceVirtualization/2012/SettingsLocationTemplate'>

Tipos de dados

Estes são os tipos de dados para o esquema de modelo de aplicativo UE-V.

GUID GUID descreve uma expressão regular de identificador globalmente exclusiva padrão no formulário "\{[a-fA-F0-9]{8}-[a-fA-F0-9]{4}-[a-fA-F0-9]{4}-[a-fA-F0-9]{4}-[a-fA-F0-9]{12}\}". Isso é usado no elemento Filesetting\Root\KnownFolder para verificar a formatação de pastas conhecidas.

FilenameString FilenameString refere-se ao nome do arquivo de um processo a ser monitorado. Seus valores são restritos pelo regex [^\\\?\*\|<>/:]+, (ou seja, eles podem não conter caracteres backslash, asterisco ou caracteres wild-cartão, o caractere pipe, maior ou menor que o sinal, barra para a frente ou caracteres de cólon).

IDString IDString refere-se ao valor de ID de elementos de aplicativo, configuraçõesLocationTemplate e elementos comuns (usados para descrever pacotes de aplicativos que compartilham configurações comuns). Ele é restrito pelo mesmo regex que FilenameString ([^\\\?\*\|<>/:]+).

TemplateVersion TemplateVersion é um valor inteiro usado para descrever a revisão do modelo de local de configurações. Seu valor pode variar de 0 a 2147483647.

Vazio Vazio refere-se a um valor nulo. Isso é usado em Process\ShellProcess para indicar que não há nenhum processo a ser monitorado. Esse valor não deve ser usado em nenhum modelo de aplicativo.

Autor O tipo de dados Author é um tipo complexo que identifica o autor de um modelo. Ele contém dois elementos filho: Nome e Email. No tipo de dados Author, o elemento Name é obrigatório enquanto o elemento Email é opcional. Esse tipo é descrito com mais detalhes no elemento SettingsLocationTemplate.

Gama O intervalo define uma classe inteiro que consiste em dois elementos filho: Mínimo e Máximo. Esse tipo de dados é implementado no tipo de dados ProcessVersion. Se especificado, os valores Mínimo e Máximo devem ser incluídos.

ProcessVersion ProcessVersion define um tipo com quatro elementos filho: Major, Minor, Build e Patch. Esse tipo de dados é usado pelo elemento Process para preencher seus valores ProductVersion e FileVersion. Os dados desse tipo são um valor Range. O elemento filho principal é obrigatório e os outros são opcionais.

Arquitetura A arquitetura enumera dois valores possíveis: Win32 e Win64. Esses valores são usados para especificar a arquitetura do processo.

Processo O tipo de dados Process é um contêiner usado para descrever processos a serem monitorados pela UE-V. Ele contém seis elementos filho: Nome de arquivo, Arquitetura, ProductName, FileDescription, ProductVersion e FileVersion. Esta tabela detalha o respectivo tipo de dados de cada elemento:

Elemento

Tipo de dados

Obrigatório

Filename

FilenameString

True

Arquitetura

Arquitetura

False

ProductName

String

False

Filedescription

String

False

ProductVersion

ProcessVersion

False

Fileversion

ProcessVersion

False

Processos O tipo de dados Process representa um contêiner para uma coleção de um ou mais elementos process. Há suporte para dois elementos filho no tipo de sequência Processos: Process e ShellProcess. Process é um elemento do tipo Process e ShellProcess é do tipo de dados Empty. Pelo menos um item deve ser identificado na sequência.

Caminho O caminho é consumido por RegistrySetting e FileSetting para se referir a caminhos de registro e arquivo. Esse elemento dá suporte a dois atributos opcionais: Recursivo e DeleteIfNotFound. Ambos os valores são definidos como default="False".

O recursivo indica que o caminho e todas as subpastas estão incluídas para configurações de arquivo ou que todas as chaves do registro filho estão incluídas nas configurações do registro. Em ambos os casos, todos os itens no nível atual são incluídos nos dados capturados. Para um objeto FileSettings, todos os arquivos dentro da pasta especificada são incluídos nos dados capturados pela UE-V, mas as pastas não estão incluídas. Para caminhos de registro, todos os valores no caminho atual são capturados, mas as chaves do registro filho não são capturadas. Em ambos os casos, deve-se tomar cuidado para evitar a captura de grandes conjuntos de dados ou um grande número de itens.

O atributo DeleteIfNotFound remove a configuração dos dados do caminho de armazenamento de configurações do usuário. Isso pode ser desejável nos casos em que a remoção dessas configurações do pacote salvará uma grande quantidade de espaço em disco no servidor de arquivos de caminho de armazenamento de configurações.

FileMask FileMask especifica apenas determinados tipos de arquivo para a pasta definida por Path. Por exemplo, Path pode ser C:\users\username\files e FileMask pode ser *.txt para incluir apenas arquivos de texto.

RegistrySetting RegistrySetting representa um contêiner para chaves e valores de registro e o comportamento desejado associado por parte do agente UE-V. Quatro elementos filho são definidos nesse tipo: Caminho, Nome, Exclusão e uma sequência dos valores Caminho e Nome.

FileSetting FileSetting contém parâmetros associados a caminhos de arquivos e arquivos. Quatro elementos filho são definidos: Raiz, Caminho, FileMask e Excluir. Raiz é obrigatória e as outras são opcionais.

Configurações As configurações são um contêiner para todas as configurações que se aplicam a um modelo específico. Ele contém instâncias das configurações Registry, File, SystemParameter e CustomAction descritas anteriormente. Além disso, ele também pode conter os seguintes elementos filho com comportamentos descritos:

Elemento

Descrição

Assíncrono

Pacotes de configurações assíncronas são aplicados sem bloquear a inicialização do aplicativo para que o início do aplicativo prossiga enquanto as configurações ainda estão sendo aplicadas. Isso é útil para configurações que podem ser aplicadas de forma assíncrona, como aquelas por meio de get/set uma API, como SystemParameterSetting.

PreventOverlappingSynchronization

Por padrão, o UE-V só salva as configurações de um aplicativo quando a última instância de um aplicativo que usa o modelo é fechada. Quando esse elemento é definido como 'false', o UE-V exporta as configurações mesmo que outras instâncias de um aplicativo estejam em execução. Modelos adequados – aqueles que incluem uma seção elemento Common – que são enviados com UE-V usam esse sinalizador para permitir que as configurações compartilhadas sempre exportem no fechamento do aplicativo, impedindo que as configurações específicas do aplicativo sejam exportadas até que a última instância seja fechada.

AlwaysApplySettings

(introduzido em 2.1)

Esse parâmetro força um pacote de configurações importado a ser aplicado mesmo que não haja diferenças entre o pacote e o estado atual do aplicativo. Esse parâmetro deve ser usado apenas em casos especiais, pois pode reduzir a importação de configurações.

Elemento Name

Obrigatório: True

Tipo: Cadeia de caracteres

O nome especifica um nome exclusivo para o modelo de local de configurações. Isso é usado para fins de exibição ao fazer referência ao modelo em logs WMI, PowerShell, Visualizador de Eventos e depuração. Em geral, evite referenciar informações de versão, pois isso pode ser objeto do elemento ProductVersion. Por exemplo, especifique <Name>My Application</Name> em vez de <Name>My Application 1.1</Name>.

Nota O UE-V não faz referência a DTDs externos, portanto, não é possível usar entidades nomeadas em um modelo de local de configurações. Por exemplo, não use ® para se referir ao sinal ® de marca registrada . Em vez disso, use referências numéricas canônicas para incluir esses tipos de caracteres especiais, por exemplo, ® para o ® caractere. Essa regra se aplica a todos os valores de cadeia de caracteres neste documento.

Confira http://www.w3.org/TR/xhtml1/dtds.html uma lista completa de entidades de caracteres. Documentos codificados por UTF-8 podem incluir os caracteres Unicode diretamente. Salvar modelos por meio do Gerador UE-V converte entidades de caracteres em suas representações Unicode automaticamente.

Elemento ID

Obrigatório: True

Tipo: Cadeia de caracteres

A ID preenche um identificador exclusivo para um modelo específico. Essa marca se torna o identificador primário que o Agente UE-V usa para fazer referência ao modelo no runtime (por exemplo, consulte a saída dos cmdlets Get-UevTemplate e Get-UevTemplateProgram PowerShell). Por convenção, essa marca não deve conter espaços, o que simplifica o script. Os números de versão dos aplicativos devem ser especificados neste elemento para permitir a fácil identificação do modelo, como <ID>MicrosoftCalculator6</ID> ou <ID>MicrosoftOffice2010Win64</ID>.

Elemento Version

Obrigatório: True

Tipo: Inteiro

Valor mínimo: 0

Valor máximo: 2147483647

A versão identifica a versão do modelo de local de configurações para o acompanhamento administrativo de alterações. O Gerador UE-V incrementa automaticamente esse número por um cada vez que o modelo é salvo. Observe que esse campo deve ser um inteiro; valores fracionários, como <Version>2.5</Version> não são permitidos.

Dica: Você pode salvar anotações sobre alterações de versão usando marcas <!-- -->de comentário XML , por exemplo:

  <!--
     Version History

     Version 1 Jul 05, 2012 Initial template created by Generator - Denise@Contoso.com
     Version 2 Jul 31, 2012 Added support for app.exe v2.1.3 - Mark@Contoso.com
     Version 3 Jan 01, 2013 Added font settings support - Mark@Contoso.com
     Version 4 Jan 31, 2013 Added support for plugin settings - Tony@Contoso.com
   -->
  <Version>4</Version>

Importante Esse valor é consultado para determinar se uma nova versão de um modelo deve ser aplicada a um modelo existente nessas instâncias:

  • Quando a tarefa de Atualização Automática de Modelo agendada for executada

  • Quando o cmdlet Update-UevTemplate PowerShell for executado

  • Quando o método microsoft\uev:SettingsLocationTemplate Update é chamado por meio do WMI

Elemento Author

Obrigatório: False

Tipo: Cadeia de caracteres

O autor identifica o criador do modelo de localização de configurações. Há suporte para dois elementos filho opcionais: Nome e Email. Ambos os atributos são opcionais, mas, se o elemento filho Email for especificado, ele deverá ser acompanhado pelo elemento Name. O autor refere-se ao nome completo do contato para o modelo de local de configurações e o email deve se referir a um endereço de email para o autor. É recomendável incluir essas informações em modelos publicados publicamente, por exemplo, na Galeria de Modelos UE-V.

Processos e Elemento de Processo

Obrigatório: True

Tipo: Elemento

Os processos contêm pelo menos um <Process> elemento, que por sua vez contém os seguintes elementos filho: Filename, Architecture, ProductName, FileDescription, ProductVersion e FileVersion. O elemento filho Filename é obrigatório e os outros são opcionais. Um elemento totalmente preenchido contém marcas semelhantes a este exemplo:

<Process>
  <Filename>MyApplication.exe</Filename>
  <Architecture>Win64</Architecture>
  <ProductName> MyApplication </ProductName>
  <FileDescription>MyApplication.exe</FileDescription>
  <ProductVersion>
    <Major Minimum="2" Maximum="2" />
    <Minor Minimum="0" Maximum="0" />
    <Build Minimum="0" Maximum="0" />
    <Patch Minimum="5" Maximum="5" />
  </ProductVersion>
  <FileVersion>
    <Major Minimum="2" Maximum="2" />
    <Minor Minimum="0" Maximum="0" />
    <Build Minimum="0" Maximum="0" />
    <Patch Minimum="5" Maximum="5" />
  </FileVersion>
</Process>

Filename

Obrigatório: True

Tipo: Cadeia de caracteres

Nome do arquivo refere-se ao nome do arquivo real do executável como ele aparece no sistema de arquivos. Esse elemento especifica o critério primário que a UE-V usa para avaliar se um modelo se aplica a um processo ou não. Esse elemento deve ser especificado no XML do modelo de localização de configurações.

Os nomes de arquivo válidos não devem corresponder à expressão regular [^\\\?\*\|<>/:]+, ou seja, eles podem não conter caracteres backslash, asterisco ou ponto de interrogação caracteres wild-cartão, o caractere pipe, maior ou menor que sinal, barra para a frente ou cólon (o \ ? * | <> / ou : caracteres.).

Dica: Para testar uma cadeia de caracteres nesse regex, use uma janela de comando do PowerShell e substitua o nome do executável por YourFileName:

"YourFileName.exe" -match "[\\\?\*\|<>/:]+"

Um valor de True indica que a cadeia de caracteres contém caracteres ilegais. Aqui estão alguns exemplos de valores ilegais:

  • \\server\share\program.exe

  • Program*.exe

  • Pro?ram.exe

  • Programa<1>.exe

Nota O Gerador UE-V codifica o maior e menor que os caracteres como > e < , respectivamente.

Em circunstâncias raras, o valor FileName não incluirá necessariamente a extensão .exe, mas deve ser especificada como parte do valor. Por exemplo, <Filename>MyApplictication.exe</Filename> deve ser especificado em vez de <Filename>MyApplictication</Filename>. O segundo exemplo não aplicará o modelo ao processo se o nome real do arquivo executável for "MyApplication.exe".

Arquitetura

Obrigatório: False

Tipo: Arquitetura (Cadeia de Caracteres)

Arquitetura refere-se à arquitetura do processador para a qual o executável de destino foi compilado. Os valores válidos são Win32 para aplicativos de 32 bits ou Win64 para aplicativos de 64 bits. Se estiver presente, essa marca limitará a aplicabilidade do modelo de localização de configurações a uma arquitetura de aplicativo específica. Para obter um exemplo disso, compare os arquivos %ProgramFiles%\Microsoft User Experience Virtualization\templates\ MicrosoftOffice2010Win32.xml e MicrosoftOffice2010Win64.xml incluídos com UE-V. Isso é útil quando os caminhos relativos mudam entre versões diferentes de um executável ou se as configurações foram adicionadas ou removidas ao migrar de uma arquitetura de processador para outra.

Se esse elemento estiver ausente, o modelo de local de configurações ignorará a arquitetura do processo e se aplicará a processos de 32 e 64 bits se o nome do arquivo e outros atributos se aplicarem.

Nota O UE-V não dá suporte a processadores ARM nesta versão.

ProductName

Obrigatório: False

Tipo: Cadeia de caracteres

ProductName é um elemento opcional usado para identificar um produto para fins administrativos ou relatórios. ProductName é diferente de Filename, na qual não há restrições de expressão regulares em seu valor. Isso permite descrições mais facilmente compreendidas de um processo em que o nome executável pode não ser óbvio. Por exemplo:

<Process>
  <Filename>MyApplication.exe</Filename>
  <ProductName>My Application 6.x by Contoso.com</ProductName>
  <ProductVersion>
    <Major Minimum="6" Maximum="6" />
  </ProductVersion>
</Process>

Filedescription

Obrigatório: False

Tipo: Cadeia de caracteres

FileDescription é uma marca opcional que permite uma descrição administrativa do arquivo executável. Este é um campo de texto gratuito e pode ser útil para distinguir vários executáveis dentro de um pacote de software em que há a necessidade de identificar a função do executável.

Por exemplo, em um aplicativo adequado, pode ser útil fornecer lembretes sobre a função de dois executáveis (MyApplication.exe e MyApplicationHelper.exe), conforme mostrado aqui:

<Processes>
  <Process>
    <Filename>MyApplication.exe</Filename>
    <FileDescription>My Application Main Engine</ FileDescription>
    <ProductVersion>
      <Major Minimum="6" Maximum="6" />
    </ProductVersion>
  </Process>
  <Process>
    <Filename>MyApplicationHelper.exe</Filename>
    <FileDescription>My Application Background Process Executable</FileDescription>
    <ProductVersion>
      <Major Minimum="6" Maximum="6" />
    </ProductVersion>
  </Process>
</Processes>

ProductVersion

Obrigatório: False

Tipo: Cadeia de caracteres

ProductVersion refere-se às versões principais e menores do produto de um arquivo, bem como a um nível de build e patch. ProductVersion é um elemento opcional, mas, se especificado, ele deve conter pelo menos o elemento filho principal. O valor deve expressar um intervalo no formulário Minimum="X" Maximum="Y" em que X e Y são inteiros. Os valores Mínimo e Máximo podem ser idênticos.

Os elementos de versão do produto e do arquivo podem ser deixados não especificados. Isso torna o modelo "versão agnóstica", o que significa que o modelo se aplicará a todas as versões do executável especificado.

Exemplo 1:

Versão do produto: 1.0 especificado no Gerador UE-V produz o seguinte XML:

<ProductVersion>
  <Major Minimum="1" Maximum="1" />
  <Minor Minimum="0" Maximum="0" />
</ProductVersion>

Exemplo 2:

Versão do arquivo: 5.0.2.1000 especificada no Gerador UE-V produz o seguinte XML:

<FileVersion>
  <Major Minimum="5" Maximum="5" />
  <Minor Minimum="0" Maximum="0" />
  <Build Minimum="2" Maximum="2" />
  <Patch Minimum="1000" Maximum="1000" />
</FileVersion>

Exemplo incorreto 1 – intervalo incompleto:

Somente o atributo Mínimo está presente. O máximo também deve ser incluído em um intervalo.

<ProductVersion>
  <Major Minimum="2" />
</ProductVersion>

Exemplo incorreto 2 – Menor especificado sem elemento Principal:

Somente o elemento Minor está presente. O major também deve ser incluído.

<ProductVersion>
  <Minor Minimum="0" Maximum="0" />
</ProductVersion>

Fileversion

Obrigatório: False

Tipo: Cadeia de caracteres

FileVersion diferencia entre a versão de versão de um aplicativo publicado e os detalhes internos de build de um componente executável. Para a maioria dos aplicativos comerciais, esses números são idênticos. Quando eles variam, a versão do produto de um arquivo indica uma identificação de versão genérica de um arquivo, enquanto a versão do arquivo indica um build específico de um arquivo (como no caso de um hotfix ou atualização). Isso identifica exclusivamente arquivos sem quebrar a lógica de detecção.

Para determinar a versão do produto e a versão do arquivo de um executável específico, clique com o botão direito do mouse no arquivo no Windows Explorer, selecione Propriedades e clique na guia Detalhes.

Incluir um elemento FileVersion para um aplicativo permite uma lógica de detecção de ajuste fino mais granular, mas não é necessário para a maioria dos aplicativos. As configurações do elemento ProductVersion são marcadas primeiro e, em seguida, FileVersion é verificada. A configuração mais restritiva será aplicada.

Os elementos filho e as regras de sintaxe para FileVersion são idênticos aos de ProductVersion.

<Process>
  <Filename>MSACCESS.EXE</Filename>
  <Architecture>Win32</Architecture>
  <ProductVersion>
    <Major Minimum="14" Maximum="14" />
    <Minor Minimum="0" Maximum="0" />
  </ProductVersion>
  <FileVersion>
    <Major Minimum="14" Maximum="14" />
    <Minor Minimum="0" Maximum="0" />
  </FileVersion>
</Process>

Elemento Application

O aplicativo é um contêiner para configurações que se aplicam a um aplicativo específico. É uma coleção dos seguintes campos/tipos.

Campo/Tipo

Descrição

Nome

Especifica um nome exclusivo para o modelo de local de configurações. Isso é usado para fins de exibição ao fazer referência ao modelo em logs WMI, PowerShell, Visualizador de Eventos e depuração. Para obter mais informações, consulte Nome.

ID

Preenche um identificador exclusivo para um modelo específico. Essa marca se torna o identificador primário que o Agente UE-V usa para fazer referência ao modelo no runtime. Para obter mais informações, consulte ID.

Descrição

Uma descrição opcional do modelo.

Nomes localizados

Um nome opcional exibido na interface do usuário, localizado por uma localidade de idioma.

LocalizedDescriptions

Uma descrição de modelo opcional localizada por uma localidade de idioma.

Versão

Identifica a versão do modelo de local de configurações para o acompanhamento administrativo de alterações. Para obter mais informações, consulte Versão.

DeferToMSAccount

Controla se esse modelo está habilitado em conjunto com uma conta Microsoft ou não. Se a sincronização MSA estiver habilitada para um usuário em um computador, esse modelo será desabilitado automaticamente.

DeferToOffice365

Semelhante ao MSA, isso controla se esse modelo está habilitado em conjunto com o Office365. Se Office 365 estiver sendo usado para sincronizar configurações, esse modelo será desabilitado automaticamente.

FixedProfile (introduzido em 2.1)

Especifica que esse modelo só pode ser associado ao perfil especificado dentro desse elemento e não pode ser alterado via WMI ou PowerShell.

Processos

Um contêiner para uma coleção de um ou mais elementos process. Para obter mais informações, consulte Processos.

Configurações

Um contêiner para todas as configurações que se aplicam a um modelo específico. Ele contém instâncias das configurações Registry, File, SystemParameter e CustomAction. Para obter mais informações, consulte Configurações em Tipos de dados.

Elemento Common

Comum é semelhante a um elemento Application, mas sempre está associado a dois ou mais elementos de aplicativo. A seção Common representa o conjunto de configurações compartilhadas entre essas instâncias de aplicativo. É uma coleção dos seguintes campos/tipos.

Campo/Tipo

Descrição

Nome

Especifica um nome exclusivo para o modelo de local de configurações. Isso é usado para fins de exibição ao fazer referência ao modelo em logs WMI, PowerShell, Visualizador de Eventos e depuração. Para obter mais informações, consulte Nome.

ID

Preenche um identificador exclusivo para um modelo específico. Essa marca se torna o identificador primário que o Agente UE-V usa para fazer referência ao modelo no runtime. Para obter mais informações, consulte ID.

Descrição

Uma descrição opcional do modelo.

Nomes localizados

Um nome opcional exibido na interface do usuário, localizado por uma localidade de idioma.

LocalizedDescriptions

Uma descrição de modelo opcional localizada por uma localidade de idioma.

Versão

Identifica a versão do modelo de local de configurações para o acompanhamento administrativo de alterações. Para obter mais informações, consulte Versão.

DeferToMSAccount

Controla se esse modelo está habilitado em conjunto com uma conta Microsoft ou não. Se a sincronização MSA estiver habilitada para um usuário em um computador, esse modelo será desabilitado automaticamente.

DeferToOffice365

Semelhante ao MSA, isso controla se esse modelo está habilitado em conjunto com o Office365. Se Office 365 estiver sendo usado para sincronizar configurações, esse modelo será desabilitado automaticamente.

FixedProfile (introduzido em 2.1)

Especifica que esse modelo só pode ser associado ao perfil especificado dentro desse elemento e não pode ser alterado via WMI ou PowerShell.

Configurações

Um contêiner para todas as configurações que se aplicam a um modelo específico. Ele contém instâncias das configurações Registry, File, SystemParameter e CustomAction. Para obter mais informações, consulte Configurações em Tipos de dados.

Elemento SettingsLocationTemplate

Esse elemento define as configurações de um único aplicativo ou um conjunto de aplicativos.

Campo/Tipo

Descrição

Nome

Especifica um nome exclusivo para o modelo de local de configurações. Isso é usado para fins de exibição ao fazer referência ao modelo em logs WMI, PowerShell, Visualizador de Eventos e depuração. Para obter mais informações, consulte Nome.

ID

Preenche um identificador exclusivo para um modelo específico. Essa marca se torna o identificador primário que o Agente UE-V usa para fazer referência ao modelo no runtime. Para obter mais informações, consulte ID.

Descrição

Uma descrição opcional do modelo.

Nomes localizados

Um nome opcional exibido na interface do usuário, localizado por uma localidade de idioma.

LocalizedDescriptions

Uma descrição de modelo opcional localizada por uma localidade de idioma.

Apêndice: ConfiguraçõesLocationTemplate.xsd

Aqui está o arquivo SettingsLocationTemplate.xsd mostrando seus elementos, elementos filho, atributos e parâmetros:

<?xml version="1.0" encoding="utf-8"?>
<xs:schema id="UevSettingsLocationTemplate"
  targetNamespace="https://schemas.microsoft.com/UserExperienceVirtualization/2013A/SettingsLocationTemplate"
  elementFormDefault="qualified"
  xmlns="https://schemas.microsoft.com/UserExperienceVirtualization/2013A/SettingsLocationTemplate"
  xmlns:mstns="https://schemas.microsoft.com/UserExperienceVirtualization/2013A/SettingsLocationTemplate"
  xmlns:xs="http://www.w3.org/2001/XMLSchema">

    <xs:simpleType name="Guid">
        <xs:restriction base="xs:string">
            <xs:pattern value="\{[a-fA-F0-9]{8}-[a-fA-F0-9]{4}-[a-fA-F0-9]{4}-[a-fA-F0-9]{4}-[a-fA-F0-9]{12}\}" />
        </xs:restriction>
    </xs:simpleType>

    <xs:simpleType name="FilenameString">
        <xs:restriction base="xs:string">
            <xs:pattern value="[^\\\?\*\|&lt;&gt;/:]+" />
        </xs:restriction>
    </xs:simpleType>

    <xs:simpleType name="IDString">
        <xs:restriction base="xs:string">
            <xs:pattern value="[^\\\?\*\|&lt;&gt;/:.]+" />
        </xs:restriction>
    </xs:simpleType>

    <xs:simpleType name="CompositeIDString">
        <xs:restriction base="xs:string">
            <xs:pattern value="[^\\\?\*\|&lt;&gt;/:.]+([.][^\\\?\*\|&lt;&gt;/:.]+)?" />
        </xs:restriction>
    </xs:simpleType>

    <xs:simpleType name="TemplateVersion">
        <xs:restriction base="xs:integer">
            <xs:minInclusive value="0" />
            <xs:maxInclusive value="2147483647" />
        </xs:restriction>
    </xs:simpleType>

    <xs:complexType name="Empty">
        <xs:sequence/>
    </xs:complexType>

    <xs:complexType name="LocalizedString">
        <xs:simpleContent>
            <xs:extension base="xs:string">
                <xs:attribute name="Locale" type="xs:string" use="required"/>
            </xs:extension>
        </xs:simpleContent>
    </xs:complexType>

    <xs:complexType name="LocalizedName">
        <xs:sequence>
            <xs:element name="Name" type="LocalizedString" minOccurs="1" maxOccurs="unbounded" />
        </xs:sequence>
    </xs:complexType>

    <xs:complexType name="LocalizedDescription">
        <xs:sequence>
            <xs:element name="Description" type="LocalizedString" minOccurs="1" maxOccurs="unbounded" />
        </xs:sequence>
    </xs:complexType>

    <xs:complexType name="ReplacedTemplates">
      <xs:sequence>
        <xs:element name="ID" type="CompositeIDString" minOccurs="1" maxOccurs="unbounded" />
    </xs:sequence>
    </xs:complexType>

    <xs:complexType name="Author">
        <xs:all>
            <xs:element name="Name" type="xs:string" minOccurs="1" />
            <xs:element name="Email" type="xs:string" minOccurs="0" />
        </xs:all>
    </xs:complexType>

    <xs:complexType name="Range">
        <xs:attribute name="Minimum" type="xs:integer" use="required"/>
        <xs:attribute name="Maximum" type="xs:integer" use="required"/>
    </xs:complexType>

    <xs:complexType name="ProcessVersion">
        <xs:sequence>
            <xs:element name="Major" type="Range" minOccurs="1" />
            <xs:element name="Minor" type="Range" minOccurs="0" />
            <xs:element name="Build" type="Range" minOccurs="0" />
            <xs:element name="Patch" type="Range" minOccurs="0" />
        </xs:sequence>
    </xs:complexType>

    <xs:simpleType name="Architecture">
        <xs:restriction base="xs:string">
            <xs:enumeration value="Win32"/>
            <xs:enumeration value="Win64"/>
        </xs:restriction>
    </xs:simpleType>

    <xs:complexType name="Process">
        <xs:sequence>
            <xs:element name="Filename" type="FilenameString" minOccurs="1" />
            <xs:element name="Architecture" type="Architecture" minOccurs="0" />
            <xs:element name="ProductName" type="xs:string" minOccurs="0" />
            <xs:element name="FileDescription" type="xs:string" minOccurs="0" />
            <xs:element name="ProductVersion" type="ProcessVersion" minOccurs="0" maxOccurs="unbounded"/>
            <xs:element name="FileVersion" type="ProcessVersion" minOccurs="0" maxOccurs="unbounded"/>
        </xs:sequence>
    </xs:complexType>

    <xs:complexType name="Processes">
        <xs:sequence>
            <xs:choice minOccurs="1">
                <xs:element name="Process" type="Process" />
                <xs:element name="ShellProcess" type="Empty" />
            </xs:choice>
            <xs:element name="Process" type="Process" minOccurs="0" maxOccurs="unbounded" />
        </xs:sequence>
    </xs:complexType>

    <xs:complexType name="Path">
        <xs:simpleContent>
            <xs:extension base="xs:string">
                <xs:attribute name="Recursive" type="xs:boolean" default="false"/>
                <xs:attribute name="DeleteIfNotFound" type="xs:boolean" default="false"/>
            </xs:extension>
        </xs:simpleContent>
    </xs:complexType>

    <xs:complexType name="RegistrySetting">
        <xs:sequence>
            <xs:element name="Path" type="Path" />
            <xs:element name="Name" type="xs:string" minOccurs="0" maxOccurs="unbounded" />
            <xs:element name="Exclude" minOccurs="0" maxOccurs="unbounded">
                <xs:complexType>
                    <xs:sequence>
                        <xs:element name="Path" type="Path" minOccurs="0" />
                        <xs:element name="Name" type="xs:string" minOccurs="0" maxOccurs="unbounded" />
                    </xs:sequence>
                </xs:complexType>
            </xs:element>
        </xs:sequence>
    </xs:complexType>

    <xs:complexType name="FileSetting">
        <xs:sequence>

            <xs:element name="Root">
                <xs:complexType>
                    <xs:choice>
                        <xs:element name="KnownFolder" type="Guid" />
                        <xs:element name="RegistryEntry" type="xs:string" />
                        <xs:element name="EnvironmentVariable" type="xs:string" />
                    </xs:choice>
                </xs:complexType>
            </xs:element>

            <xs:element name="Path" minOccurs="0" type="Path" />
            <xs:element name="FileMask" type="xs:string" minOccurs="0" maxOccurs="unbounded"/>

            <xs:element name="Exclude" minOccurs="0" maxOccurs="unbounded">
                <xs:complexType>
                    <xs:sequence>
                        <xs:element name="Path" type="Path" minOccurs="0" />
                        <xs:element name="FileMask" type="xs:string" minOccurs="0" maxOccurs="unbounded" />
                    </xs:sequence>
                </xs:complexType>
            </xs:element>

        </xs:sequence>
    </xs:complexType>

    <xs:simpleType name="CustomActionSetting">
        <xs:restriction base="xs:anyURI"/>
    </xs:simpleType>

    <xs:simpleType name="SystemParameterSetting">
        <xs:restriction base="xs:string">

            <!-- Accessibility parameters -->
            <xs:enumeration value="AccessTimeout"/>
            <xs:enumeration value="AudioDescription"/>
            <xs:enumeration value="ClientAreaAnimation"/>
            <xs:enumeration value="DisableOverlappedContent"/>
            <xs:enumeration value="FilterKeys"/>
            <xs:enumeration value="FocusBorderHeight"/>
            <xs:enumeration value="FocusBorderWidth"/>
            <xs:enumeration value="HighContrast"/>
            <xs:enumeration value="MessageDuration"/>
            <xs:enumeration value="MouseClickLock"/>
            <xs:enumeration value="MouseClickLockTime"/>
            <xs:enumeration value="MouseKeys"/>
            <xs:enumeration value="MouseSonar"/>
            <xs:enumeration value="MouseVanish"/>
            <xs:enumeration value="ScreenReader"/>
            <xs:enumeration value="ShowSounds"/>
            <xs:enumeration value="SoundSentry"/>
            <xs:enumeration value="StickyKeys"/>
            <xs:enumeration value="ToggleKeys"/>

            <!-- Input parameters -->
            <xs:enumeration value="Beep"/>
            <xs:enumeration value="BlockSendInputResets"/>
            <xs:enumeration value="DefaultInputLang"/>
            <xs:enumeration value="DoubleClickTime"/>
            <xs:enumeration value="DoubleClkHeight"/>
            <xs:enumeration value="DoubleClkWidth"/>
            <xs:enumeration value="KeyboardCues"/>
            <xs:enumeration value="KeyboardDelay"/>
            <xs:enumeration value="KeyboardPref"/>
            <xs:enumeration value="KeyboardSpeed"/>
            <xs:enumeration value="Mouse"/>
            <xs:enumeration value="MouseButtonSwap"/>
            <xs:enumeration value="MouseHoverHeight"/>
            <xs:enumeration value="MouseHoverTime"/>
            <xs:enumeration value="MouseHoverWidth"/>
            <xs:enumeration value="MouseSpeed"/>
            <xs:enumeration value="MouseTrails"/>
            <xs:enumeration value="SnapToDefButton"/>
            <xs:enumeration value="WheelScrollChars"/>
            <xs:enumeration value="WheelScrollLines"/>

            <!-- Desktop parameters (limited subset) -->
            <xs:enumeration value="DeskWallpaper"/>
            <xs:enumeration value="DesktopColor"/>

        </xs:restriction>
    </xs:simpleType>

    <xs:complexType name="Settings">
        <xs:sequence>
            <xs:element name="Asynchronous" type="xs:boolean" minOccurs="0" />
            <xs:element name="PreventOverlappingSynchronization" type="xs:boolean" minOccurs="0" />
            <xs:element name="AlwaysApplySettings" type="xs:boolean" minOccurs="0" />
            <xs:choice minOccurs="0" maxOccurs="unbounded">
                <xs:element name="Registry" type="RegistrySetting" />
                <xs:element name="File" type="FileSetting" />
                <xs:element name="SystemParameter" type="SystemParameterSetting" />
                <xs:element name="CustomAction" type="CustomActionSetting" />
            </xs:choice>
        </xs:sequence>
    </xs:complexType>

    <xs:complexType name="Common">
        <xs:sequence>
            <xs:element name="Name" type="xs:string" />
            <xs:element name="ID" type="IDString" />
            <xs:element name="ReplacedTemplates" type="ReplacedTemplates" minOccurs="0" />
            <xs:element name="Description" type="xs:string" minOccurs="0" />
            <xs:element name="LocalizedNames" type="LocalizedName" minOccurs="0" />
            <xs:element name="LocalizedDescriptions" type="LocalizedDescription" minOccurs="0" />
            <xs:element name="Version" type="xs:integer" />
            <xs:element name="DeferToMSAccount" type="Empty"  minOccurs="0" />
            <xs:element name="DeferToOffice365" type="Empty" minOccurs="0" />
            <xs:element name="Settings" type="Settings" />
        </xs:sequence>
    </xs:complexType>

    <xs:complexType name="Application">
        <xs:sequence>
            <xs:element name="Name" type="xs:string" />
            <xs:element name="ID" type="IDString" />
            <xs:element name="ReplacedTemplates" type="ReplacedTemplates" minOccurs="0" />
            <xs:element name="Description" type="xs:string" minOccurs="0" />
            <xs:element name="LocalizedNames" type="LocalizedName" minOccurs="0" />
            <xs:element name="LocalizedDescriptions" type="LocalizedDescription" minOccurs="0" />
            <xs:element name="Version" type="xs:integer" />
            <xs:element name="DeferToMSAccount" type="Empty"  minOccurs="0" />
            <xs:element name="DeferToOffice365" type="Empty" minOccurs="0" />
            <xs:element name="Processes" type="Processes" />
            <xs:element name="Settings" type="Settings" />
        </xs:sequence>
    </xs:complexType>


    <xs:element name="SettingsLocationTemplate">
        <xs:complexType>
            <xs:sequence>

                <xs:element name="Name" type="xs:string" />
                <xs:element name="ID" type="IDString" />
                <xs:element name="Description" type="xs:string" minOccurs="0" />
                <xs:element name="LocalizedNames" type="LocalizedName" minOccurs="0" />
                <xs:element name="LocalizedDescriptions" type="LocalizedDescription" minOccurs="0" />

                <xs:choice>

                    <!-- Single application -->
                    <xs:sequence>
                        <xs:element name="ReplacedTemplates" type="ReplacedTemplates" minOccurs="0" />
                        <xs:element name="Version" type="TemplateVersion" />
                        <xs:element name="Author" type="Author" minOccurs="0" />
                        <xs:element name="FixedProfile" type="xs:string"  minOccurs="0" />
                        <xs:element name="DeferToMSAccount" type="Empty"  minOccurs="0" />
                        <xs:element name="DeferToOffice365" type="Empty" minOccurs="0" />
                        <xs:element name="Processes" type="Processes" />
                        <xs:element name="Settings" type="Settings" />
                    </xs:sequence>

                    <!-- Suite of applications -->
                    <xs:sequence>
                        <xs:element name="ManageSuiteOnly" type="xs:boolean" minOccurs="0" />
                        <xs:element name="Author" type="Author" minOccurs="0" />
                        <xs:element name="FixedProfile" type="xs:string"  minOccurs="0" />
                        <xs:element name="Common" type="Common" />
                        <xs:element name="Application" type="Application" minOccurs="2" maxOccurs="unbounded" />
                    </xs:sequence>

                </xs:choice>

            </xs:sequence>
        </xs:complexType>
    </xs:element>
    <!-- SettingsLocationTemplate -->

</xs:schema>

Referência de esquema de modelo de aplicativo UE-V 2.0

Esta seção detalha a estrutura XML do modelo de local de configurações UE-V 2.0 e fornece diretrizes para editar esse arquivo.

Nesta seção

Atributo XML Declaration and Encoding

Obrigatório: True

Tipo: Cadeia de caracteres

A declaração XML deve especificar o atributo XML versão 1.0 (<?xml version="1.0">). Os modelos de localização de configurações criados pelo Gerador UE-V são salvos na codificação UTF-8, embora a codificação não seja explicitamente especificada. Recomendamos que você inclua o atributo encoding="UTF-8" nesse elemento como uma prática recomendada. Todos os modelos incluídos com o produto especificam essa marca também (consulte os documentos em %ProgramFiles%\Microsoft User Experience Virtualization\Templates para referência). Por exemplo:

<?xml version="1.0" encoding="UTF-8"?>

Namespace e Elemento Raiz

Obrigatório: True

Tipo: Cadeia de caracteres

O UE-V usa o https://schemas.microsoft.com/UserExperienceVirtualization/2012/SettingsLocationTemplate namespace para todos os aplicativos. SettingsLocationTemplate é o elemento raiz e contém todos os outros elementos. Referência SettingsLocationTemplate em todos os modelos usando esta marca:

<SettingsLocationTemplate xmlns='https://schemas.microsoft.com/UserExperienceVirtualization/2012/SettingsLocationTemplate'>

Tipos de dados

Estes são os tipos de dados para o esquema de modelo de aplicativo UE-V.

GUID GUID descreve uma expressão regular de identificador globalmente exclusiva padrão no formulário "\{[a-fA-F0-9]{8}-[a-fA-F0-9]{4}-[a-fA-F0-9]{4}-[a-fA-F0-9]{4}-[a-fA-F0-9]{12}\}". Isso é usado no elemento Filesetting\Root\KnownFolder para verificar a formatação de pastas conhecidas.

FilenameString FilenameString refere-se ao nome do arquivo de um processo a ser monitorado. Seus valores são restritos pelo regex [^\\\?\*\|<>/:]+, (ou seja, eles podem não conter caracteres backslash, asterisco ou caracteres wild-cartão, o caractere pipe, maior ou menor que o sinal, barra para a frente ou caracteres de cólon).

IDString IDString refere-se ao valor de ID de elementos de aplicativo, configuraçõesLocationTemplate e elementos comuns (usados para descrever pacotes de aplicativos que compartilham configurações comuns). Ele é restrito pelo mesmo regex que FilenameString ([^\\\?\*\|<>/:]+).

TemplateVersion TemplateVersion é um valor inteiro usado para descrever a revisão do modelo de local de configurações. Seu valor pode variar de 0 a 2147483647.

Vazio Vazio refere-se a um valor nulo. Isso é usado em Process\ShellProcess para indicar que não há nenhum processo a ser monitorado. Esse valor não deve ser usado em nenhum modelo de aplicativo.

Autor O tipo de dados Author é um tipo complexo que identifica o autor de um modelo. Ele contém dois elementos filho: Nome e Email. No tipo de dados Author, o elemento Name é obrigatório enquanto o elemento Email é opcional. Esse tipo é descrito com mais detalhes no elemento SettingsLocationTemplate.

Gama O intervalo define uma classe inteiro que consiste em dois elementos filho: Mínimo e Máximo. Esse tipo de dados é implementado no tipo de dados ProcessVersion. Se especificado, os valores Mínimo e Máximo devem ser incluídos.

ProcessVersion ProcessVersion define um tipo com quatro elementos filho: Major, Minor, Build e Patch. Esse tipo de dados é usado pelo elemento Process para preencher seus valores ProductVersion e FileVersion. Os dados desse tipo são um valor Range. O elemento filho principal é obrigatório e os outros são opcionais.

Arquitetura A arquitetura enumera dois valores possíveis: Win32 e Win64. Esses valores são usados para especificar a arquitetura do processo.

Processo O tipo de dados Process é um contêiner usado para descrever processos a serem monitorados pela UE-V. Ele contém seis elementos filho: Nome de arquivo, Arquitetura, ProductName, FileDescription, ProductVersion e FileVersion. Esta tabela detalha o respectivo tipo de dados de cada elemento:

Elemento Tipo de Dados Obrigatório

Filename

FilenameString

True

Arquitetura

Arquitetura

False

ProductName

String

False

Filedescription

String

False

ProductVersion

ProcessVersion

False

Fileversion

ProcessVersion

False

Processos O tipo de dados Process representa um contêiner para uma coleção de um ou mais elementos process. Há suporte para dois elementos filho no tipo de sequência Processos: Process e ShellProcess. Process é um elemento do tipo Process e ShellProcess é do tipo de dados Empty. Pelo menos um item deve ser identificado na sequência.

Caminho O caminho é consumido por RegistrySetting e FileSetting para se referir a caminhos de registro e arquivo. Esse elemento dá suporte a dois atributos opcionais: Recursivo e DeleteIfNotFound. Ambos os valores são definidos como default="False".

O recursivo indica que o caminho e todas as subpastas estão incluídas para configurações de arquivo ou que todas as chaves do registro filho estão incluídas nas configurações do registro. Em ambos os casos, todos os itens no nível atual são incluídos nos dados capturados. Para um objeto FileSettings, todos os arquivos dentro da pasta especificada são incluídos nos dados capturados pela UE-V, mas as pastas não estão incluídas. Para caminhos de registro, todos os valores no caminho atual são capturados, mas as chaves do registro filho não são capturadas. Em ambos os casos, deve-se tomar cuidado para evitar a captura de grandes conjuntos de dados ou um grande número de itens.

O atributo DeleteIfNotFound remove a configuração dos dados do caminho de armazenamento de configurações do usuário. Isso pode ser desejável nos casos em que a remoção dessas configurações do pacote salvará uma grande quantidade de espaço em disco no servidor de arquivos de caminho de armazenamento de configurações.

FileMask FileMask especifica apenas determinados tipos de arquivo para a pasta definida por Path. Por exemplo, Path pode ser C:\users\username\files e FileMask pode ser *.txt para incluir apenas arquivos de texto.

RegistrySetting RegistrySetting representa um contêiner para chaves e valores de registro e o comportamento desejado associado por parte do agente UE-V. Quatro elementos filho são definidos nesse tipo: Caminho, Nome, Exclusão e uma sequência dos valores Caminho e Nome.

FileSetting FileSetting contém parâmetros associados a caminhos de arquivos e arquivos. Quatro elementos filho são definidos: Raiz, Caminho, FileMask e Excluir. Raiz é obrigatória e as outras são opcionais.

Configurações As configurações são um contêiner para todas as configurações que se aplicam a um modelo específico. Ele contém instâncias das configurações Registry, File, SystemParameter e CustomAction descritas anteriormente. Além disso, ele também pode conter os seguintes elementos filho com comportamentos descritos:

Elemento Descrição

Assíncrono

Pacotes de configurações assíncronas são aplicados sem bloquear a inicialização do aplicativo para que o início do aplicativo prossiga enquanto as configurações ainda estão sendo aplicadas. Isso é útil para configurações que podem ser aplicadas de forma assíncrona, como aquelas por meio de get/set uma API, como SystemParameterSetting.

PreventOverlappingSynchronization

Por padrão, o UE-V só salva as configurações de um aplicativo quando a última instância de um aplicativo que usa o modelo é fechada. Quando esse elemento é definido como 'false', o UE-V exporta as configurações mesmo que outras instâncias de um aplicativo estejam em execução. Modelos adequados – aqueles que incluem uma seção elemento Common – que são enviados com UE-V usam esse sinalizador para permitir que as configurações compartilhadas sempre exportem no fechamento do aplicativo, impedindo que as configurações específicas do aplicativo sejam exportadas até que a última instância seja fechada.

Elemento Name

Obrigatório: True

Tipo: Cadeia de caracteres

O nome especifica um nome exclusivo para o modelo de local de configurações. Isso é usado para fins de exibição ao fazer referência ao modelo em logs WMI, PowerShell, Visualizador de Eventos e depuração. Em geral, evite referenciar informações de versão, pois isso pode ser objeto do elemento ProductVersion. Por exemplo, especifique <Name>My Application</Name> em vez de <Name>My Application 1.1</Name>.

Nota O UE-V não faz referência a DTDs externos, portanto, não é possível usar entidades nomeadas em um modelo de local de configurações. Por exemplo, não use ® para se referir ao sinal ® de marca registrada . Em vez disso, use referências numéricas canônicas para incluir esses tipos de caracteres especiais, por exemplo, ® para o ® caractere. Essa regra se aplica a todos os valores de cadeia de caracteres neste documento.

Confira http://www.w3.org/TR/xhtml1/dtds.html uma lista completa de entidades de caracteres. Documentos codificados por UTF-8 podem incluir os caracteres Unicode diretamente. Salvar modelos por meio do Gerador UE-V converte entidades de caracteres em suas representações Unicode automaticamente.

Elemento ID

Obrigatório: True

Tipo: Cadeia de caracteres

A ID preenche um identificador exclusivo para um modelo específico. Essa marca se torna o identificador primário que o Agente UE-V usa para fazer referência ao modelo no runtime (por exemplo, consulte a saída dos cmdlets Get-UevTemplate e Get-UevTemplateProgram PowerShell). Por convenção, essa marca não deve conter espaços, o que simplifica o script. Os números de versão dos aplicativos devem ser especificados neste elemento para permitir a fácil identificação do modelo, como <ID>MicrosoftCalculator6</ID> ou <ID>MicrosoftOffice2010Win64</ID>.

Elemento Version

Obrigatório: True

Tipo: Inteiro

Valor mínimo: 0

Valor máximo: 2147483647

A versão identifica a versão do modelo de local de configurações para o acompanhamento administrativo de alterações. O Gerador UE-V incrementa automaticamente esse número por um cada vez que o modelo é salvo. Observe que esse campo deve ser um inteiro; valores fracionários, como <Version>2.5</Version> não são permitidos.

Dica: Você pode salvar anotações sobre alterações de versão usando marcas <!-- -->de comentário XML , por exemplo:

<!--
    Version History

    Version 1 Jul 05, 2012 Initial template created by Generator - Denise@Contoso.com
    Version 2 Jul 31, 2012 Added support for app.exe v2.1.3 - Mark@Contoso.com
    Version 3 Jan 01, 2013 Added font settings support - Mark@Contoso.com
    Version 4 Jan 31, 2013 Added support for plugin settings - Tony@Contoso.com
  -->
<Version>4</Version>

Importante Esse valor é consultado para determinar se uma nova versão de um modelo deve ser aplicada a um modelo existente nessas instâncias:

  • Quando a tarefa de Atualização Automática de Modelo agendada for executada

  • Quando o cmdlet Update-UevTemplate PowerShell for executado

  • Quando o método microsoft\uev:SettingsLocationTemplate Update é chamado por meio do WMI

Elemento Author

Obrigatório: False

Tipo: Cadeia de caracteres

O autor identifica o criador do modelo de localização de configurações. Há suporte para dois elementos filho opcionais: Nome e Email. Ambos os atributos são opcionais, mas, se o elemento filho Email for especificado, ele deverá ser acompanhado pelo elemento Name. O autor refere-se ao nome completo do contato para o modelo de local de configurações e o email deve se referir a um endereço de email para o autor. É recomendável incluir essas informações em modelos publicados publicamente, por exemplo, na Galeria de Modelos UE-V.

Processos e Elemento de Processo

Obrigatório: True

Tipo: Elemento

Os processos contêm pelo menos um <Process> elemento, que por sua vez contém os seguintes elementos filho: Filename, Architecture, ProductName, FileDescription, ProductVersion e FileVersion. O elemento filho Filename é obrigatório e os outros são opcionais. Um elemento totalmente preenchido contém marcas semelhantes a este exemplo:

<Process>
  <Filename>MyApplication.exe</Filename>
  <Architecture>Win64</Architecture>
  <ProductName> MyApplication </ProductName>
  <FileDescription>MyApplication.exe</FileDescription>
  <ProductVersion>
    <Major Minimum="2" Maximum="2" />
    <Minor Minimum="0" Maximum="0" />
    <Build Minimum="0" Maximum="0" />
    <Patch Minimum="5" Maximum="5" />
  </ProductVersion>
  <FileVersion>
    <Major Minimum="2" Maximum="2" />
    <Minor Minimum="0" Maximum="0" />
    <Build Minimum="0" Maximum="0" />
    <Patch Minimum="5" Maximum="5" />
  </FileVersion>
</Process>

Filename

Obrigatório: True

Tipo: Cadeia de caracteres

Nome do arquivo refere-se ao nome do arquivo real do executável como ele aparece no sistema de arquivos. Esse elemento especifica o critério primário que a UE-V usa para avaliar se um modelo se aplica a um processo ou não. Esse elemento deve ser especificado no XML do modelo de localização de configurações.

Os nomes de arquivo válidos não devem corresponder à expressão regular [^\\\?\*\|<>/:]+, ou seja, eles podem não conter caracteres backslash, asterisco ou ponto de interrogação caracteres wild-cartão, o caractere pipe, maior ou menor que sinal, barra para a frente ou cólon (o \ ? * | <> / ou : caracteres.).

Dica: Para testar uma cadeia de caracteres nesse regex, use uma janela de comando do PowerShell e substitua o nome do executável por YourFileName:

"YourFileName.exe" -match "[\\\?\*\|<>/:]+"

Um valor de True indica que a cadeia de caracteres contém caracteres ilegais. Aqui estão alguns exemplos de valores ilegais:

  • \\server\share\program.exe

  • Program*.exe

  • Pro?ram.exe

  • Programa<1>.exe

Nota O Gerador UE-V codifica o maior e menor que os caracteres como > e < , respectivamente.

Em circunstâncias raras, o valor FileName não incluirá necessariamente a extensão .exe, mas deve ser especificada como parte do valor. Por exemplo, <Filename>MyApplictication.exe</Filename> deve ser especificado em vez de <Filename>MyApplictication</Filename>. O segundo exemplo não aplicará o modelo ao processo se o nome real do arquivo executável for "MyApplication.exe".

Arquitetura

Obrigatório: False

Tipo: Arquitetura (Cadeia de Caracteres)

Arquitetura refere-se à arquitetura do processador para a qual o executável de destino foi compilado. Os valores válidos são Win32 para aplicativos de 32 bits ou Win64 para aplicativos de 64 bits. Se estiver presente, essa marca limitará a aplicabilidade do modelo de localização de configurações a uma arquitetura de aplicativo específica. Para obter um exemplo disso, compare os arquivos %ProgramFiles%\Microsoft User Experience Virtualization\templates\ MicrosoftOffice2010Win32.xml e MicrosoftOffice2010Win64.xml incluídos com UE-V. Isso é útil quando os caminhos relativos mudam entre versões diferentes de um executável ou se as configurações foram adicionadas ou removidas ao migrar de uma arquitetura de processador para outra.

Se esse elemento estiver ausente, o modelo de local de configurações ignorará a arquitetura do processo e se aplicará a processos de 32 e 64 bits se o nome do arquivo e outros atributos se aplicarem.

Nota O UE-V não dá suporte a processadores ARM nesta versão.

ProductName

Obrigatório: False

Tipo: Cadeia de caracteres

ProductName é um elemento opcional usado para identificar um produto para fins administrativos ou relatórios. ProductName é diferente de Filename, na qual não há restrições de expressão regulares em seu valor. Isso permite descrições mais facilmente compreendidas de um processo em que o nome executável pode não ser óbvio. Por exemplo:

<Process>
  <Filename>MyApplication.exe</Filename>
  <ProductName>My Application 6.x by Contoso.com</ProductName>
  <ProductVersion>
    <Major Minimum="6" Maximum="6" />
  </ProductVersion>
</Process>

Filedescription

Obrigatório: False

Tipo: Cadeia de caracteres

FileDescription é uma marca opcional que permite uma descrição administrativa do arquivo executável. Este é um campo de texto gratuito e pode ser útil para distinguir vários executáveis dentro de um pacote de software em que há a necessidade de identificar a função do executável.

Por exemplo, em um aplicativo adequado, pode ser útil fornecer lembretes sobre a função de dois executáveis (MyApplication.exe e MyApplicationHelper.exe), conforme mostrado aqui:

<Processes>
  <Process>
    <Filename>MyApplication.exe</Filename>
    <FileDescription>My Application Main Engine</ FileDescription>
    <ProductVersion>
      <Major Minimum="6" Maximum="6" />
    </ProductVersion>
  </Process>
  <Process>
    <Filename>MyApplicationHelper.exe</Filename>
    <FileDescription>My Application Background Process Executable</FileDescription>
    <ProductVersion>
      <Major Minimum="6" Maximum="6" />
    </ProductVersion>
  </Process>
</Processes>

ProductVersion

Obrigatório: False

Tipo: Cadeia de caracteres

ProductVersion refere-se às versões principais e menores do produto de um arquivo, bem como a um nível de build e patch. ProductVersion é um elemento opcional, mas, se especificado, ele deve conter pelo menos o elemento filho principal. O valor deve expressar um intervalo no formulário Minimum="X" Maximum="Y" em que X e Y são inteiros. Os valores Mínimo e Máximo podem ser idênticos.

Os elementos de versão do produto e do arquivo podem ser deixados não especificados. Isso torna o modelo "versão agnóstica", o que significa que o modelo se aplicará a todas as versões do executável especificado.

Exemplo 1:

Versão do produto: 1.0 especificado no Gerador UE-V produz o seguinte XML:

<ProductVersion>
  <Major Minimum="1" Maximum="1" />
  <Minor Minimum="0" Maximum="0" />
</ProductVersion>

Exemplo 2:

Versão do arquivo: 5.0.2.1000 especificada no Gerador UE-V produz o seguinte XML:

<FileVersion>
  <Major Minimum="5" Maximum="5" />
  <Minor Minimum="0" Maximum="0" />
  <Build Minimum="2" Maximum="2" />
  <Patch Minimum="1000" Maximum="1000" />
</FileVersion>

Exemplo incorreto 1 – intervalo incompleto:

Somente o atributo Mínimo está presente. O máximo também deve ser incluído em um intervalo.

<ProductVersion>
  <Major Minimum="2" />
</ProductVersion>

Exemplo incorreto 2 – Menor especificado sem elemento Principal:

Somente o elemento Minor está presente. O major também deve ser incluído.

<ProductVersion>
  <Minor Minimum="0" Maximum="0" />
</ProductVersion>

Fileversion

Obrigatório: False

Tipo: Cadeia de caracteres

FileVersion diferencia entre a versão de versão de um aplicativo publicado e os detalhes internos de build de um componente executável. Para a maioria dos aplicativos comerciais, esses números são idênticos. Quando eles variam, a versão do produto de um arquivo indica uma identificação de versão genérica de um arquivo, enquanto a versão do arquivo indica um build específico de um arquivo (como no caso de um hotfix ou atualização). Isso identifica exclusivamente arquivos sem quebrar a lógica de detecção.

Para determinar a versão do produto e a versão do arquivo de um executável específico, clique com o botão direito do mouse no arquivo no Windows Explorer, selecione Propriedades e clique na guia Detalhes.

Incluir um elemento FileVersion para um aplicativo permite uma lógica de detecção de ajuste fino mais granular, mas não é necessário para a maioria dos aplicativos. As configurações do elemento ProductVersion são marcadas primeiro e, em seguida, FileVersion é verificada. A configuração mais restritiva será aplicada.

Os elementos filho e as regras de sintaxe para FileVersion são idênticos aos de ProductVersion.

<Process>
  <Filename>MSACCESS.EXE</Filename>
  <Architecture>Win32</Architecture>
  <ProductVersion>
    <Major Minimum="14" Maximum="14" />
    <Minor Minimum="0" Maximum="0" />
  </ProductVersion>
  <FileVersion>
    <Major Minimum="14" Maximum="14" />
    <Minor Minimum="0" Maximum="0" />
  </FileVersion>
</Process>

Elemento Application

O aplicativo é um contêiner para configurações que se aplicam a um aplicativo específico. É uma coleção dos seguintes campos/tipos.

Campo/Tipo Descrição

Name

Especifica um nome exclusivo para o modelo de local de configurações. Isso é usado para fins de exibição ao fazer referência ao modelo em logs WMI, PowerShell, Visualizador de Eventos e depuração. Para obter mais informações, consulte Nome.

ID

Preenche um identificador exclusivo para um modelo específico. Essa marca se torna o identificador primário que o Agente UE-V usa para fazer referência ao modelo no runtime. Para obter mais informações, consulte ID.

Descrição

Uma descrição opcional do modelo.

Nomes localizados

Um nome opcional exibido na interface do usuário, localizado por uma localidade de idioma.

LocalizedDescriptions

Uma descrição de modelo opcional localizada por uma localidade de idioma.

Versão

Identifica a versão do modelo de local de configurações para o acompanhamento administrativo de alterações. Para obter mais informações, consulte Versão.

DeferToMSAccount

Controla se esse modelo está habilitado em conjunto com uma conta Microsoft ou não. Se a sincronização MSA estiver habilitada para um usuário em um computador, esse modelo será desabilitado automaticamente.

DeferToOffice365

Semelhante ao MSA, isso controla se esse modelo está habilitado em conjunto com o Office365. Se Office 365 estiver sendo usado para sincronizar configurações, esse modelo será desabilitado automaticamente.

Processos

Um contêiner para uma coleção de um ou mais elementos process. Para obter mais informações, consulte Processos.

Configurações

Um contêiner para todas as configurações que se aplicam a um modelo específico. Ele contém instâncias das configurações Registry, File, SystemParameter e CustomAction. Para obter mais informações, consulte Configurações em Tipos de dados.

Elemento Common

Comum é semelhante a um elemento Application, mas sempre está associado a dois ou mais elementos de aplicativo. A seção Common representa o conjunto de configurações compartilhadas entre essas instâncias de aplicativo. É uma coleção dos seguintes campos/tipos.

Campo/Tipo Descrição

Name

Especifica um nome exclusivo para o modelo de local de configurações. Isso é usado para fins de exibição ao fazer referência ao modelo em logs WMI, PowerShell, Visualizador de Eventos e depuração. Para obter mais informações, consulte Nome.

ID

Preenche um identificador exclusivo para um modelo específico. Essa marca se torna o identificador primário que o Agente UE-V usa para fazer referência ao modelo no runtime. Para obter mais informações, consulte ID.

Descrição

Uma descrição opcional do modelo.

Nomes localizados

Um nome opcional exibido na interface do usuário, localizado por uma localidade de idioma.

LocalizedDescriptions

Uma descrição de modelo opcional localizada por uma localidade de idioma.

Versão

Identifica a versão do modelo de local de configurações para o acompanhamento administrativo de alterações. Para obter mais informações, consulte Versão.

DeferToMSAccount

Controla se esse modelo está habilitado em conjunto com uma conta Microsoft ou não. Se a sincronização MSA estiver habilitada para um usuário em um computador, esse modelo será desabilitado automaticamente.

DeferToOffice365

Semelhante ao MSA, isso controla se esse modelo está habilitado em conjunto com o Office365. Se Office 365 estiver sendo usado para sincronizar configurações, esse modelo será desabilitado automaticamente.

Configurações

Um contêiner para todas as configurações que se aplicam a um modelo específico. Ele contém instâncias das configurações Registry, File, SystemParameter e CustomAction. Para obter mais informações, consulte Configurações em Tipos de dados.

Elemento SettingsLocationTemplate

Esse elemento define as configurações de um único aplicativo ou um conjunto de aplicativos.

Campo/Tipo Descrição

Name

Especifica um nome exclusivo para o modelo de local de configurações. Isso é usado para fins de exibição ao fazer referência ao modelo em logs WMI, PowerShell, Visualizador de Eventos e depuração. Para obter mais informações, consulte Nome.

ID

Preenche um identificador exclusivo para um modelo específico. Essa marca se torna o identificador primário que o Agente UE-V usa para fazer referência ao modelo no runtime. Para obter mais informações, consulte ID.

Descrição

Uma descrição opcional do modelo.

Nomes localizados

Um nome opcional exibido na interface do usuário, localizado por uma localidade de idioma.

LocalizedDescriptions

Uma descrição de modelo opcional localizada por uma localidade de idioma.

Apêndice: ConfiguraçõesLocationTemplate.xsd

Aqui está o arquivo SettingsLocationTemplate.xsd mostrando seus elementos, elementos filho, atributos e parâmetros:

<?xml version="1.0" encoding="utf-8"?>
<xs:schema id="UevSettingsLocationTemplate"
  targetNamespace="https://schemas.microsoft.com/UserExperienceVirtualization/2013/SettingsLocationTemplate"
  elementFormDefault="qualified"
  xmlns="https://schemas.microsoft.com/UserExperienceVirtualization/2013/SettingsLocationTemplate"
  xmlns:mstns="https://schemas.microsoft.com/UserExperienceVirtualization/2013/SettingsLocationTemplate"
  xmlns:xs="http://www.w3.org/2001/XMLSchema">

  <xs:simpleType name="Guid">
    <xs:restriction base="xs:string">
      <xs:pattern value="\{[a-fA-F0-9]{8}-[a-fA-F0-9]{4}-[a-fA-F0-9]{4}-[a-fA-F0-9]{4}-[a-fA-F0-9]{12}\}" />
    </xs:restriction>
  </xs:simpleType>

  <xs:simpleType name="FilenameString">
    <xs:restriction base="xs:string">
      <xs:pattern value="[^\\\?\*\|&lt;&gt;/:]+" />
    </xs:restriction>
  </xs:simpleType>

  <xs:simpleType name="IDString">
    <xs:restriction base="xs:string">
      <xs:pattern value="[^\\\?\*\|&lt;&gt;/:.]+" />
    </xs:restriction>
  </xs:simpleType>

  <xs:simpleType name="TemplateVersion">
    <xs:restriction base="xs:integer">
      <xs:minInclusive value="0" />
      <xs:maxInclusive value="2147483647" />
    </xs:restriction>
  </xs:simpleType>

  <xs:complexType name="Empty">
    <xs:sequence/>
  </xs:complexType>

  <xs:complexType name="LocalizedString">
    <xs:simpleContent>
      <xs:extension base="xs:string">
        <xs:attribute name="Locale" type="xs:string" use="required"/>
      </xs:extension>
    </xs:simpleContent>
  </xs:complexType>

  <xs:complexType name="LocalizedName">
    <xs:sequence>
      <xs:element name="Name" type="LocalizedString" minOccurs="1" maxOccurs="unbounded" />
    </xs:sequence>
  </xs:complexType>

  <xs:complexType name="LocalizedDescription">
    <xs:sequence>
      <xs:element name="Description" type="LocalizedString" minOccurs="1" maxOccurs="unbounded" />
    </xs:sequence>
  </xs:complexType>

  <xs:complexType name="Author">
    <xs:all>
      <xs:element name="Name" type="xs:string" minOccurs="1" />
      <xs:element name="Email" type="xs:string" minOccurs="0" />
    </xs:all>
  </xs:complexType>

  <xs:complexType name="Range">
    <xs:attribute name="Minimum" type="xs:integer" use="required"/>
    <xs:attribute name="Maximum" type="xs:integer" use="required"/>
  </xs:complexType>

  <xs:complexType name="ProcessVersion">
    <xs:sequence>
      <xs:element name="Major" type="Range" minOccurs="1" />
      <xs:element name="Minor" type="Range" minOccurs="0" />
      <xs:element name="Build" type="Range" minOccurs="0" />
      <xs:element name="Patch" type="Range" minOccurs="0" />
    </xs:sequence>
  </xs:complexType>

  <xs:simpleType name="Architecture">
    <xs:restriction base="xs:string">
      <xs:enumeration value="Win32"/>
      <xs:enumeration value="Win64"/>
    </xs:restriction>
  </xs:simpleType>

  <xs:complexType name="Process">
    <xs:sequence>
      <xs:element name="Filename" type="FilenameString" minOccurs="1" />
      <xs:element name="Architecture" type="Architecture" minOccurs="0" />
      <xs:element name="ProductName" type="xs:string" minOccurs="0" />
      <xs:element name="FileDescription" type="xs:string" minOccurs="0" />
      <xs:element name="ProductVersion" type="ProcessVersion" minOccurs="0" maxOccurs="unbounded"/>
      <xs:element name="FileVersion" type="ProcessVersion" minOccurs="0" maxOccurs="unbounded"/>
    </xs:sequence>
  </xs:complexType>

  <xs:complexType name="Processes">
    <xs:sequence>
      <xs:choice minOccurs="1">
        <xs:element name="Process" type="Process" />
        <xs:element name="ShellProcess" type="Empty" />
      </xs:choice>
      <xs:element name="Process" type="Process" minOccurs="0" maxOccurs="unbounded" />
    </xs:sequence>
  </xs:complexType>

  <xs:complexType name="Path">
    <xs:simpleContent>
      <xs:extension base="xs:string">
        <xs:attribute name="Recursive" type="xs:boolean" default="false"/>
        <xs:attribute name="DeleteIfNotFound" type="xs:boolean" default="false"/>
      </xs:extension>
    </xs:simpleContent>
  </xs:complexType>

  <xs:complexType name="RegistrySetting">
    <xs:sequence>
      <xs:element name="Path" type="Path" />
      <xs:element name="Name" type="xs:string" minOccurs="0" maxOccurs="unbounded" />
      <xs:element name="Exclude" minOccurs="0" maxOccurs="unbounded">
        <xs:complexType>
          <xs:sequence>
            <xs:element name="Path" type="Path" minOccurs="0" />
            <xs:element name="Name" type="xs:string" minOccurs="0" maxOccurs="unbounded" />
          </xs:sequence>
        </xs:complexType>
      </xs:element>
    </xs:sequence>
  </xs:complexType>

  <xs:complexType name="FileSetting">
    <xs:sequence>

      <xs:element name="Root">
        <xs:complexType>
          <xs:choice>
            <xs:element name="KnownFolder" type="Guid" />
            <xs:element name="RegistryEntry" type="xs:string" />
            <xs:element name="EnvironmentVariable" type="xs:string" />
          </xs:choice>
        </xs:complexType>
      </xs:element>

      <xs:element name="Path" minOccurs="0" type="Path" />
      <xs:element name="FileMask" type="xs:string" minOccurs="0" maxOccurs="unbounded"/>

      <xs:element name="Exclude" minOccurs="0" maxOccurs="unbounded">
        <xs:complexType>
          <xs:sequence>
            <xs:element name="Path" type="Path" minOccurs="0" />
            <xs:element name="FileMask" type="xs:string" minOccurs="0" maxOccurs="unbounded" />
          </xs:sequence>
        </xs:complexType>
      </xs:element>

    </xs:sequence>
  </xs:complexType>

  <xs:simpleType name="SystemParameterSetting">
    <xs:restriction base="xs:string">

      <!-- Accessibility parameters -->
      <xs:enumeration value="AccessTimeout"/>
      <xs:enumeration value="AudioDescription"/>
      <xs:enumeration value="ClientAreaAnimation"/>
      <xs:enumeration value="DisableOverlappedContent"/>
      <xs:enumeration value="FilterKeys"/>
      <xs:enumeration value="FocusBorderHeight"/>
      <xs:enumeration value="FocusBorderWidth"/>
      <xs:enumeration value="HighContrast"/>
      <xs:enumeration value="MessageDuration"/>
      <xs:enumeration value="MouseClickLock"/>
      <xs:enumeration value="MouseClickLockTime"/>
      <xs:enumeration value="MouseKeys"/>
      <xs:enumeration value="MouseSonar"/>
      <xs:enumeration value="MouseVanish"/>
      <xs:enumeration value="ScreenReader"/>
      <xs:enumeration value="ShowSounds"/>
      <xs:enumeration value="SoundSentry"/>
      <xs:enumeration value="StickyKeys"/>
      <xs:enumeration value="ToggleKeys"/>

      <!-- Input parameters -->
      <xs:enumeration value="Beep"/>
      <xs:enumeration value="BlockSendInputResets"/>
      <xs:enumeration value="DefaultInputLang"/>
      <xs:enumeration value="DoubleClickTime"/>
      <xs:enumeration value="DoubleClkHeight"/>
      <xs:enumeration value="DoubleClkWidth"/>
      <xs:enumeration value="KeyboardCues"/>
      <xs:enumeration value="KeyboardDelay"/>
      <xs:enumeration value="KeyboardPref"/>
      <xs:enumeration value="KeyboardSpeed"/>
      <xs:enumeration value="Mouse"/>
      <xs:enumeration value="MouseButtonSwap"/>
      <xs:enumeration value="MouseHoverHeight"/>
      <xs:enumeration value="MouseHoverTime"/>
      <xs:enumeration value="MouseHoverWidth"/>
      <xs:enumeration value="MouseSpeed"/>
      <xs:enumeration value="MouseTrails"/>
      <xs:enumeration value="SnapToDefButton"/>
      <xs:enumeration value="WheelScrollChars"/>
      <xs:enumeration value="WheelScrollLines"/>

      <!-- Desktop parameters (limited subset) -->
      <xs:enumeration value="DeskWallpaper"/>
      <xs:enumeration value="DesktopColor"/>

    </xs:restriction>
  </xs:simpleType>

  <xs:complexType name="Settings">
    <xs:sequence>
      <xs:element name="Asynchronous" type="xs:boolean" minOccurs="0" />
      <xs:element name="PreventOverlappingSynchronization" type="xs:boolean" minOccurs="0" />
      <xs:choice minOccurs="0" maxOccurs="unbounded">
        <xs:element name="Registry" type="RegistrySetting" />
        <xs:element name="File" type="FileSetting" />
        <xs:element name="SystemParameter" type="SystemParameterSetting" />
      </xs:choice>
    </xs:sequence>
  </xs:complexType>

  <xs:complexType name="Common">
    <xs:sequence>
      <xs:element name="Name" type="xs:string" />
      <xs:element name="ID" type="IDString" />
      <xs:element name="Description" type="xs:string" minOccurs="0" />
      <xs:element name="LocalizedNames" type="LocalizedName" minOccurs="0" />
      <xs:element name="LocalizedDescriptions" type="LocalizedDescription" minOccurs="0" />
      <xs:element name="Version" type="xs:integer" />
      <xs:element name="DeferToMSAccount" type="Empty"  minOccurs="0" />
      <xs:element name="Settings" type="Settings" />
    </xs:sequence>
  </xs:complexType>

  <xs:complexType name="Application">
    <xs:sequence>
      <xs:element name="Name" type="xs:string" />
      <xs:element name="ID" type="IDString" />
      <xs:element name="Description" type="xs:string" minOccurs="0" />
      <xs:element name="LocalizedNames" type="LocalizedName" minOccurs="0" />
      <xs:element name="LocalizedDescriptions" type="LocalizedDescription" minOccurs="0" />
      <xs:element name="Version" type="xs:integer" />
      <xs:element name="DeferToMSAccount" type="Empty"  minOccurs="0" />
      <xs:element name="Processes" type="Processes" />
      <xs:element name="Settings" type="Settings" />
    </xs:sequence>
  </xs:complexType>


  <xs:element name="SettingsLocationTemplate">
    <xs:complexType>
      <xs:sequence>

        <xs:element name="Name" type="xs:string" />
        <xs:element name="ID" type="IDString" />
        <xs:element name="Description" type="xs:string" minOccurs="0" />
        <xs:element name="LocalizedNames" type="LocalizedName" minOccurs="0" />
        <xs:element name="LocalizedDescriptions" type="LocalizedDescription" minOccurs="0" />

        <xs:choice>

          <!-- Single application -->
          <xs:sequence>
            <xs:element name="Version" type="TemplateVersion" />
            <xs:element name="Author" type="Author" minOccurs="0" />
            <xs:element name="DeferToMSAccount" type="Empty"  minOccurs="0" />
            <xs:element name="Processes" type="Processes" />
            <xs:element name="Settings" type="Settings" />
          </xs:sequence>

          <!-- Suite of applications -->
          <xs:sequence>
            <xs:element name="ManageSuiteOnly" type="xs:boolean" minOccurs="0" />
            <xs:element name="Author" type="Author" minOccurs="0" />
            <xs:element name="Common" type="Common" />
            <xs:element name="Application" type="Application" minOccurs="2" maxOccurs="unbounded" />
          </xs:sequence>

        </xs:choice>

      </xs:sequence>
    </xs:complexType>
  </xs:element>
  <!-- SettingsLocationTemplate -->

</xs:schema>

Trabalhando com modelos personalizados ue-v 2.x e o gerador UE-V 2.x

Referência técnica da UE-V 2.x