Partilhar via


Biblioteca de elementos XML

Este artigo descreve os elementos XML e as funções auxiliares que podem ser utilizadas para criar ficheiros de migração.xml a utilizar com a Ferramenta de Migração de Estado do Utilizador (USMT). Este artigo pressupõe um conhecimento básico do XML.

Para além dos elementos XML e das funções auxiliares, este artigo:

  • Descreve como especificar padrões de localizações e localizações codificadas.
  • As funções que se destinam apenas à utilização interna do USMT.
  • As etiquetas de versão que podem ser utilizadas com funções auxiliares.

Elementos e funções auxiliares

A tabela seguinte descreve os elementos XML e as funções auxiliares que podem ser utilizadas com USMT.

Elementos A-K Elementos L-Z Funções auxiliares
<addObjects>
<atributos>
<bytes>
<commandLine>
<componente>
<condição>
<condições>
<conteúdo>
<contentModify>
<descrição>
<destinationCleanup>
<detetar>
<deteta>
<deteção>
<displayName>
<ambiente>
<excluir>
<excludeAttributes>
<extensões>
<extensão>
<externalProcess>
<ícone>
<include>
<includeAttribute>
<biblioteca>
<localização>
<locationModify>
<_locDefinition>
<fabricante>
<intercalar>
<migração>
<namedElements>
<object>
<conjunto de objetos>
<caminho>
<caminhos>
<padrão>
<processamento>
<plug-in>
<função>
<regras>
<script>
<Texto>
<incondicionalExclude>
<variável>
<Versão>
<windowsObjects>
<funções de condição>
<funções de conteúdo>
<contentModify functions (funções contentModify> )
<incluir> e <excluir> funções de filtro
<locationModify functions (funções locationModify> )
<unir> funções
<funções de script>
Funções internas do USMT

<addObjects>

O <elemento addObjects> emula a existência de um ou mais objetos no computador de origem. Os elementos do objeto> subordinado< fornecem os detalhes dos objetos emulados. Se o conteúdo for um <elemento de script> , o resultado da invocação é uma matriz de objetos.

Sintaxe:

<addObjects>
</addObjects>

O exemplo seguinte é do MigApp.xml ficheiro:

<addObjects>
   <object>
      <location type="Registry">%HklmWowSoftware%\Microsoft\Office\16.0\Common\Migration\Office [UpgradeVersion]</location>
      <attributes>DWORD</attributes>
      <bytes>0B000000</bytes>
   </object>
   <object>
      <location type="Registry">%HklmWowSoftware%\Microsoft\Office\16.0\Common\Migration\Office [Lang]</location>
      <attributes>DWORD</attributes>
      <bytes>00000000</bytes>
   </object>
</addObjects>

<atributos>

O <elemento atributos> define os atributos de um ficheiro ou chave de registo.

  • Número de ocorrências: uma vez para cada <objeto>

  • Elementos principais:<objeto>

  • Elementos subordinados: nenhum

Sintaxe:

<attributes>Content</attributes>
Configuração Obrigatório? Valor
Conteúdo Sim O conteúdo depende do tipo de objeto especificado.
  • Para ficheiros, o conteúdo pode ser uma cadeia que contém qualquer um dos seguintes atributos separados por vírgulas:
    • Archive
    • Somente leitura
    • System
    • Hidden
  • Para chaves de registo, o conteúdo pode ser um dos seguintes tipos:
    • Nenhum
    • String
    • ExpandirCadeia
    • Binário
    • Dword
    • REG_SZ

O exemplo seguinte é do MigApp.xml ficheiro:

<object>
   <location type="Registry">%HklmWowSoftware%\Microsoft\Office\16.0\Common\Migration\Office [Lang]</location>
   <attributes>DWORD</attributes>
   <bytes>00000000</bytes>
</object> 

<bytes>

O <elemento bytes> só pode ser especificado para ficheiros porque, se <a localização> corresponder a uma chave de registo ou a um diretório, <os bytes são ignorados> .

  • Número de ocorrências: zero ou um

  • Elementos principais:<objeto>

  • Elementos subordinados: nenhum

Sintaxe:

<bytes string="Yes|No" expand="Yes|No">Content</bytes>
Configuração Obrigatório? Valor
string Não, a predefinição é Não Determina se o Conteúdo deve ser interpretado como uma cadeia ou como bytes.
expand Não (predefinição = Sim Quando o parâmetro de expansão é Sim, o <conteúdo do elemento bytes> é expandido primeiro no contexto do computador de origem e, em seguida, interpretado.
Conteúdo Sim Depende do valor da cadeia.
  • Quando a cadeia é Sim: o conteúdo do <elemento bytes> é interpretado como uma cadeia.
  • Quando a cadeia é Não: o conteúdo do <elemento bytes> é interpretado como bytes. Cada dois carateres representam o valor hexadecimal de um byte. Por exemplo, 616263 é a representação da cadeia abc ANSI. Uma representação completa da cadeia UNICODE abc , incluindo o terminador de cadeia, seria: 6100620063000000.

O exemplo seguinte é do MigApp.xml ficheiro:

<object>
   <location type="Registry">%HklmWowSoftware%\Microsoft\Office\16.0\Common\Migration\Office [Lang]</location>
   <attributes>DWORD</attributes>
   <bytes>00000000</bytes>
</object> 

<commandLine>

O <elemento commandLine> pode ser utilizado para iniciar ou parar um serviço ou aplicação antes ou depois de executar as ferramentas ScanState e LoadState .

  • Número de ocorrências: ilimitadas

  • Elementos principais:<externalProcess>

  • Elementos subordinados: nenhum

Sintaxe:

<commandLine>CommandLineString</commandLine>
Configuração Obrigatório? Valor
CommandLineString Sim Uma linha de comandos válida.

<componente>

O <elemento de componente> é necessário num ficheiro de.xml personalizado. Este elemento define a construção mais básica de um ficheiro de.xml de migração. Por exemplo, no ficheiro, o MigApp.xmlMicrosoft Office 2016 é um componente que contém outro componente, o Microsoft Office Access 2016. Os elementos subordinados podem ser utilizados para definir o componente.

Um componente pode ser aninhado dentro de outro componente; ou seja, o <elemento de componente> pode ser subordinado do <elemento de função> no elemento do< componente> em dois casos:

  1. Quando o elemento componente> principal< é um contentor
  2. Se o elemento componente> subordinado< tiver a mesma função que o elemento de componente> principal<.

Sintaxe:

<component type="System|Application|Device|Documents" context="User|System|UserAndSystem" defaultSupported="TRUE|FALSE|YES|NO"
hidden="Yes|No">
</component>
Configuração Obrigatório? Valor
tipo Sim Os seguintes itens podem ser utilizados para agrupar definições e definir o tipo de componente.
  • Sistema: Definições do sistema operativo. Todos os componentes do Windows são definidos por este tipo.
    Quando type="System" e defaultSupported="FALSE", as definições não migram, a menos que exista um componente equivalente no .xml ficheiros especificados na LoadState.exe linha de comandos. Por exemplo, o ficheiro predefinido MigSys.xml contém componentes com type="System" e defaultSupported="FALSE". Se este ficheiro for especificado na ScanState.exe linha de comandos, o ficheiro também tem de ser especificado na LoadState.exe linha de comandos para que as definições sejam migradas. O ficheiro tem de ser especificado porque a LoadState.exe ferramenta tem de detetar um componente equivalente. Ou seja, o componente tem de ter o mesmo urlid de migração do ficheiro .xml e um nome a apresentar idêntico. Caso contrário, a ferramenta LoadState não migra essas definições a partir do arquivo. Esta definição é útil porque um arquivo pode ser utilizado para computadores de destino com a mesma versão ou versão diferente do Windows que o computador de origem.
  • Aplicação: Definições para uma aplicação.
  • Dispositivo: Definições para um dispositivo.
  • Documentos: Especifica ficheiros.
contexto Não
Predefinição = UserAndSystem
Define o âmbito deste parâmetro; ou seja, se pretende processar este componente no contexto do utilizador específico, em todo o sistema operativo ou ambos.
O maior âmbito possível é definido pelo <elemento de componente> . Por exemplo, se um <elemento de componente> tiver um contexto de Utilizador e um <elemento de regras> tiver um contexto de UserAndSystem, o <elemento de regras> funcionará como se tivesse um contexto de Utilizador. Se um <elemento de regras> tiver um contexto de Sistema, funcionará como se o <elemento de regras> não estivesse lá.
  • Utilizador: avalia o componente para cada utilizador.
  • Sistema: avalia o componente apenas uma vez para o sistema.
  • UserAndSystem: avalia o componente para todo o sistema operativo e para cada utilizador.
defaultSupported Não
(predefinição = VERDADEIRO)
Pode ser qualquer uma das opções VERDADEIRO, FALSO, SIM ou NÃO. Se este parâmetro for FALSO (ou NÃO), o componente não será migrado, a menos que exista um componente equivalente no computador de destino.
Quando type="System" e defaultSupported="FALSE", as definições não são migradas, a menos que exista um componente equivalente no .xml ficheiros especificados na LoadState.exe linha de comandos. Por exemplo, o ficheiro predefinido MigSys.xml contém componentes com type="System" e defaultSupported="FALSE". Se este ficheiro for especificado na ScanState.exe linha de comandos, o ficheiro também tem de ser especificado na LoadState.exe linha de comandos para que as definições sejam migradas. O ficheiro tem de ser especificado em ambas as linhas de comandos porque a ferramenta LoadState tem de detetar um componente equivalente. Ou seja, o componente tem de ter o mesmo urlid de migração do ficheiro .xml e um nome a apresentar idêntico ou a ferramenta LoadState não migra essas definições a partir do arquivo. Esta definição é útil porque um arquivo pode ser utilizado para computadores de destino com a mesma versão ou versão diferente do Windows que o computador de origem.
oculto Este parâmetro destina-se apenas à utilização interna do USMT.

Por exemplo, veja qualquer um dos ficheiros de migração.xmlpredefinidos .

<condição>

Embora o <elemento de condição> nos <elementos de deteção>, <objectSet> e <addObjects> ainda seja suportado, a Microsoft recomenda que deixe de utilizar o <elemento de condição> , uma vez que poderá ser preterido em versões futuras do USMT. Se o elemento da <condição> for preterido, será necessária uma reescrita de todos os scripts que utilizem o elemento condition<>. Em vez disso, se uma condição precisar de ser utilizada nos <elementos objectSet> e <addObjects>, a Microsoft recomenda a utilização do elemento de condições> mais potente<. O <elemento conditions> permite a formulação de instruções booleanas complexas.

O <elemento condition> tem um resultado Booleano. Este elemento pode ser utilizado para especificar as condições em que o elemento principal é avaliado. Se alguma das condições atuais devolver FALSO, o elemento principal não será avaliado.

  • Número de ocorrências: ilimitadas.

  • Elementos principais:<condições>, detetar<>, <objectSet>, <addObjects>

  • Elementos subordinados: nenhum

  • Funções auxiliares: As seguintes <funções condicionais> podem ser utilizadas com este elemento: DoesOSMatch, IsNative64Bit(), IsOSLaterThan, IsOSEarlierThan, DoesObjectExist, DoesFileVersionMatch, IsFileVersionAbove, IsFileVersionBelow, IsSystemContext, , DoesStringContentEqual, DoesStringContentContain, , IsSameObject, , e IsSameContentIsSameStringContent.

Sintaxe:

<condition negation="Yes|No">ScriptName</condition>
Configuração Obrigatório? Valor
negação Não
Predefinição = Não
"Sim" inverte o valor Verdadeiro/Falso da condição.
ScriptName Sim Um script definido nesta secção de migração.

Por exemplo, no seguinte exemplo de código, os elementos da <condição>, A e B, são unidos pelo operador AND porque estão em secções de condições> separadas<:

<detection>
   <conditions>
      <condition>A</condition>
   </conditions>
   <conditions operation="AND">
      <condition>B</condition>
   </conditions>
</detection>

No entanto, no seguinte exemplo de código, os elementos da <condição>, A e B, são unidos pelo operador OR porque estão na mesma <secção de condições>.

<detection>
   <conditions>
      <condition>A</condition>
      <condition>B</condition>
   </conditions>
</detection>

<funções de condição>

As <funções de condição> devolvem um valor Booleano. Estes elementos podem ser utilizados em <condições addObjects> .

Funções de versão do sistema operativo

  • DoesOSMatch

    Todas as correspondências não são sensíveis a maiúsculas e minúsculas.

    Sintaxe: DoesOSMatch("OSType","OSVersion")

    Configuração Obrigatório? Valor
    OSType Sim O único valor válido para esta definição é NT. No entanto, esta definição tem de ser definida para que as funções de <condição> funcionem corretamente.
    OSVersion Sim A versão principal, a versão secundária, o número de compilação e a versão de diskette do serviço corrigida separada por períodos. Por exemplo, 5.0.2600.Service Pack 1. A especificação parcial da versão também pode ser especificada com um padrão como 5.0.*.

    Por exemplo:

    <condition>MigXmlHelper.DoesOSMatch("NT","\*")</condition>
    
  • IsNative64Bit

    A função IsNative64Bit devolve TRUE se o processo de migração estiver em execução como um processo nativo de 64 bits; ou seja, um processo em execução num sistema de 64 bits sem o Windows no Windows (WOW). Caso contrário, devolve FALSO.

  • IsOSLaterThan

    Todas as comparações não são sensíveis a maiúsculas e minúsculas.

    Sintaxe: IsOSLaterThan("OSType","OSVersion")

    Configuração Obrigatório? Valor
    OSType Sim Pode ser 9x ou NT. Se OSType não corresponder ao tipo do sistema operativo atual, devolve FALSO. Por exemplo, se o sistema operativo atual for baseado em Windows NT e OSType for "9x", o resultado será FALSO.
    OSVersion Sim A versão principal, a versão secundária, o número de compilação e a versão de diskette do serviço corrigida separada por períodos. Por exemplo, 5.0.2600.Service Pack 1. A especificação parcial da versão também pode ser especificada, mas não é permitido nenhum padrão, como 5.0.

    A função IsOSLaterThan devolve TRUE se o sistema operativo atual for posterior ou igual a OSVersion.

    Por exemplo:

    <condition negation="Yes">MigXmlHelper.IsOSLaterThan("NT","6.0")</condition>
    
  • IsOSEarlierThan

    Todas as comparações não são sensíveis a maiúsculas e minúsculas.

    Sintaxe: IsOSEarlierThan("OSType","OSVersion")

    Configuração Obrigatório? Valor
    OSType Sim Pode ser 9x ou NT. Se OSType não corresponder ao tipo do sistema operativo atual, devolve FALSO. Por exemplo, se o sistema operativo atual for baseado em Windows NT e OSType for "9x", o resultado será FALSO.
    OSVersion Sim A versão principal, a versão secundária, o número de compilação e a versão de diskette do serviço corrigida separada por períodos. Por exemplo, 5.0.2600.Service Pack 1. A especificação parcial da versão também pode ser especificada, mas não é permitido nenhum padrão, como 5.0.

    A função IsOSEarlierThan devolve TRUE se o sistema operativo atual for anterior a OSVersion.

Funções de conteúdo de objeto

  • DoesObjectExist

    A função DoesObjectExist devolve VERDADEIRO se existir algum objeto que corresponda ao padrão de localização. Caso contrário, devolve FALSO. O padrão de localização é expandido antes de tentar a enumeração.

    Sintaxe: DoesObjectExist("ObjectType","EncodedLocationPattern")

    Configuração Obrigatório? Valor
    ObjectType Sim Define o tipo de objeto. Pode ser Ficheiro ou Registo.
    EncodedLocationPattern Sim O padrão de localização. As variáveis de ambiente são permitidas.

    Para obter um exemplo deste elemento, veja o MigApp.xml ficheiro .

  • DoesFileVersionMatch

    O padrão marcar não é sensível a maiúsculas e minúsculas.

    Sintaxe: DoesFileVersionMatch("EncodedFileLocation","VersionTag","VersionValue")

    Configuração Obrigatório? Valor
    EncodedFileLocation Sim O padrão de localização do ficheiro que está verificado. As variáveis de ambiente são permitidas.
    VersionTag Sim O valor da etiqueta de versão que está selecionado.
    VersionValue Sim Um padrão de cadeia. Por exemplo, "Microsoft*".

    Por exemplo:

    <condition>MigXmlHelper.DoesFileVersionMatch("%MSNMessengerInstPath%\\msnmsgr.exe","ProductVersion","6.\*")</condition>   <condition>MigXmlHelper.DoesFileVersionMatch("%MSNMessengerInstPath%\\msnmsgr.exe","ProductVersion","7.\*")</condition>
    
  • IsFileVersionAbove

    A função IsFileVersionAbove devolve TRUE se a versão do ficheiro for superior a VersionValue.

    Sintaxe: IsFileVersionAbove("EncodedFileLocation","VersionTag","VersionValue")

    Configuração Obrigatório? Valor
    EncodedFileLocation Sim O padrão de localização do ficheiro que está verificado. As variáveis de ambiente são permitidas.
    VersionTag Sim O valor da etiqueta de versão que está selecionado.
    VersionValue Sim O valor a comparar. Não é possível especificar um padrão.
  • IsFileVersionBelow

    Sintaxe: IsFileVersionBelow("EncodedFileLocation","VersionTag","VersionValue")

    Configuração Obrigatório? Valor
    EncodedFileLocation Sim O padrão de localização do ficheiro que está verificado. As variáveis de ambiente são permitidas.
    VersionTag Sim O valor da etiqueta de versão que está selecionado.
    VersionValue Sim O valor a comparar. Não é possível especificar um padrão.
  • IsSystemContext

    A função IsSystemContext devolve VERDADEIRO se o contexto atual for "Sistema". Caso contrário, devolve FALSO.

    Sintaxe: IsSystemContext()

  • DoesStringContentEqual

    A função DoesStringContentEqual devolve TRUE se a representação da cadeia do objeto especificado for idêntica a StringContent.

    Sintaxe: DoesStringContentEqual("ObjectType","EncodedLocation","StringContent")

    Configuração Obrigatório? Valor
    ObjectType Sim Define o tipo de objeto. Pode ser Ficheiro ou Registo.
    EncodedLocationPattern Sim A localização codificada para o objeto que é examinado. As variáveis de ambiente podem ser especificadas.
    StringContent Sim A cadeia que está selecionada.

    Por exemplo:

    <condition negation="Yes">MigXmlHelper.DoesStringContentEqual("File","%USERNAME%","")</condition>
    
  • DoesStringContentContain

    A função DoesStringContentContain devolve TRUE se existir, pelo menos, uma ocorrência de StrToFind na representação de cadeia do objeto.

    Sintaxe: DoesStringContentContain("ObjectType","EncodedLocation","StrToFind")

    Configuração Obrigatório? Valor
    ObjectType Sim Define o tipo de objeto. Pode ser Ficheiro ou Registo.
    EncodedLocationPattern Sim A localização codificada para o objeto que é examinado. As variáveis de ambiente podem ser especificadas.
    StrToFind Sim Uma cadeia que é pesquisada dentro do conteúdo do objeto especificado.
  • IsSameObject

    A função IsSameObject devolve VERDADEIRO se as localizações codificadas especificadas resolve para o mesmo objeto físico. Caso contrário, devolve FALSO.

    Sintaxe: IsSameObject("ObjectType","EncodedLocation1","EncodedLocation2")

    Configuração Obrigatório? Valor
    ObjectType Sim Define o tipo de objeto. Pode ser Ficheiro ou Registo.
    CodificaçãoLocation1 Sim A localização codificada para o primeiro objeto. As variáveis de ambiente podem ser especificadas.
    EncodedLocation2 Sim A localização codificada para o segundo objeto. As variáveis de ambiente podem ser especificadas.

    Por exemplo:

    <objectSet>
       <condition negation="Yes">MigXmlHelper.IsSameObject("File","%CSIDL_FAVORITES%","%CSIDL_COMMON_FAVORITES%")</condition>
       <pattern type="File">%CSIDL_FAVORITES%\* [*]</pattern>
    </objectSet>
    
  • IsSameContent

    A função IsSameContent devolve VERDADEIRO se os objetos especificados tiverem o mesmo conteúdo. Caso contrário, devolve FALSO. O conteúdo é comparado com byte byte.

    Sintaxe: IsSameContent("ObjectType1","EncodedLocation1","ObjectType2","EncodedLocation2")

    Configuração Obrigatório? Valor
    ObjectType1 Sim Define o tipo do primeiro objeto. Pode ser Ficheiro ou Registo.
    CodificaçãoLocation1 Sim A localização codificada para o primeiro objeto. As variáveis de ambiente podem ser especificadas.
    ObjectType2 Sim Define o tipo do segundo objeto. Pode ser Ficheiro ou Registo.
    EncodedLocation2 Sim A localização codificada para o segundo objeto. As variáveis de ambiente podem ser especificadas.
  • IsSameStringContent

    A função IsSameStringContent devolve VERDADEIRO se os objetos especificados tiverem o mesmo conteúdo. Caso contrário, devolve FALSO. O conteúdo é interpretado como uma cadeia.

    Sintaxe: IsSameStringContent("ObjectType1","EncodedLocation1","ObjectType2","EncodedLocation2")

    Configuração Obrigatório? Valor
    ObjectType1 Sim Define o tipo do primeiro objeto. Pode ser Ficheiro ou Registo.
    CodificaçãoLocation1 Sim A localização codificada para o primeiro objeto. As variáveis de ambiente podem ser especificadas.
    ObjectType2 Sim Define o tipo do segundo objeto. Pode ser Ficheiro ou Registo.
    EncodedLocation2 Sim A localização codificada para o segundo objeto. As variáveis de ambiente podem ser especificadas.

<condições>

O <elemento conditions> devolve um resultado booleano que é utilizado para especificar as condições em que o elemento principal é avaliado. O USMT avalia os elementos subordinados e, em seguida, associa os respetivos resultados com os operadores E ou OU de acordo com o parâmetro de operação.

Sintaxe:

<conditions operation="AND|OR">
</conditions>
Configuração Obrigatório? Valor
operação Não, predefinição = E Define a operação Booleana que é executada nos resultados obtidos a partir dos elementos subordinados.

O exemplo seguinte é do MigApp.xml ficheiro:

<environment name="GlobalEnv">
   <conditions>
      <condition negation="Yes">MigXmlHelper.IsNative64Bit()</condition>
   </conditions>
   <variable name="HklmWowSoftware">
   <text>HKLM\Software</text>
   </variable>
</environment>

<conteúdo>

O <elemento de conteúdo> pode ser utilizado para especificar uma lista de padrões de objetos para obter um conjunto de objetos a partir do computador de origem. Cada <objectSet> dentro de um <elemento de conteúdo> é avaliado. Para cada lista de padrões de objeto resultante, os objetos correspondentes são enumerados e os respetivos conteúdos são filtrados pelo parâmetro de filtro. A matriz de cadeia resultante é a saída do <elemento de conteúdo> . O script de filtro devolve uma matriz de localizações. O elemento objectSet> principal< pode conter vários elementos de conteúdo> subordinado<.

Sintaxe:

<content filter="ScriptInvocation">
</content>
Configuração Obrigatório? Valor
filter Sim Um script seguido de qualquer número de argumentos de cadeia que são separados por uma vírgula e entre parênteses. Por exemplo, MyScripts.AScript ("Arg1","Arg2").
O script é chamado para cada objeto enumerado pelos conjuntos de objetos na <regra de inclusão> . O script de filtro devolve um valor Booleano. Se o valor devolvido for VERDADEIRO, o objeto será migrado. Se for FALSO, não será migrado.

<funções de conteúdo>

As seguintes funções geram padrões a partir do conteúdo de um objeto. Estas funções são chamadas para cada objeto que o elemento objectSet> principal< está a enumerar.

  • ExtractSingleFile

    Se o valor do registo for multi-SZ, apenas o primeiro segmento é processado. O padrão devolvido é a localização codificada para um ficheiro que tem de existir no sistema. Se a especificação estiver correta no valor do registo, mas o ficheiro não existir, esta função devolve NULO.

    Sintaxe: ExtractSingleFile(Separators,PathHints)

    Configuração Obrigatório? Valor
    Separadores Sim Uma lista de possíveis separadores que podem seguir a especificação de ficheiro neste nome de valor de registo. Por exemplo, se o conteúdo for "C:\Windows\Notepad.exe,-2", o separador é uma vírgula. É possível especificar NULL.
    PathHints Sim Uma lista de caminhos adicionais, separados por dois pontos (;), onde a função procura um ficheiro que corresponda ao conteúdo atual. Por exemplo, se o conteúdo for "Notepad.exe" e o caminho for a variável de ambiente %Path%, a função localiza Notepad.exe em %windir% e devolve "c:\Windows [Notepad.exe]". É possível especificar NULL.

    Por exemplo:

    <content filter="MigXmlHelper.ExtractSingleFile(',','%system%')">
    

    e

    <content filter="MigXmlHelper.ExtractSingleFile(NULL,'%CSIDL_COMMON_FONTS%')">
    
  • ExtractMultipleFiles

    A função ExtractMultipleFiles devolve vários padrões, um para cada ficheiro que é encontrado no conteúdo do valor de registo especificado. Se o valor do registo for multi-SZ, o separador MULTI-SZ é considerado um separador por predefinição. Por conseguinte, para MULTI-SZ, o <argumento Separadores> tem de ser NULO.

    Os padrões devolvidos são as localizações codificadas para ficheiros que têm de existir no computador de origem. Se a especificação estiver correta no valor do registo, mas o ficheiro não existir, não será incluído na lista resultante.

    Sintaxe: ExtractMultipleFiles(Separators,PathHints)

    Configuração Obrigatório? Valor
    Separadores Sim Uma lista de possíveis separadores que podem seguir a especificação de ficheiro neste nome de valor de registo. Por exemplo, se o conteúdo for "C:\Windows\Notepad.exe,-2", o separador é uma vírgula. Este parâmetro tem de ser NULL ao processar valores de registo MULTI-SZ .
    PathHints Sim Uma lista de caminhos adicionais, separados por dois pontos (;), onde a função procura um ficheiro que corresponda ao conteúdo atual. Por exemplo, se o conteúdo for "Notepad.exe" e o caminho for a variável de ambiente %Path%, a função localiza Notepad.exe em %windir% e devolve "c:\Windows [Notepad.exe]". É possível especificar NULL.
  • ExtractDirectory

    A função ExtractDirectory devolve um padrão que é a localização codificada para um diretório que tem de existir no computador de origem. Se a especificação estiver correta no valor do registo, mas o diretório não existir, esta função devolve NULO. Se estiver a processar um valor de registo que seja multi-SZ, apenas o primeiro segmento é processado.

    Sintaxe: ExtractDirectory(Separators,LevelsToTrim,PatternSuffix)

    Configuração Obrigatório? Valor
    Separadores Não Uma lista de possíveis separadores que podem seguir a especificação de ficheiro neste nome de valor de registo. Por exemplo, se o conteúdo for "C:\Windows\Notepad.exe,-2", o separador é uma vírgula. É necessário especificar NULL ao processar valores de registo MULTI-SZ.
    LevelsToTrim Sim O número de níveis a eliminar do final da especificação do diretório. Utilize esta função para extrair um diretório de raiz quando existir um valor de registo que aponte para dentro desse diretório de raiz numa localização conhecida.
    PatternSuffix Sim O padrão a adicionar à especificação do diretório. Por exemplo, * [*].

    Por exemplo:

    <objectSet>
       <content filter='MigXmlHelper.ExtractDirectory (NULL, "1")'>
            <objectSet>
                 <pattern type="Registry">%HklmWowSoftware%\Classes\Software\RealNetworks\Preferences\DT_Common []</pattern>
            </objectSet>
       </content>
    </objectSet>
    

<contentModify>

O <elemento contentModify> modifica o conteúdo de um objeto antes de o objeto ser escrito no computador de destino. Para cada <elemento contentModify> , pode haver vários <elementos objectSet> . Este elemento devolve o novo conteúdo do objeto que está a ser processado.

  • Número de ocorrências: Ilimitado

  • Elementos principais:<regras>

  • Elementos subordinados necessários:<objectSet>

  • Funções auxiliares: as seguintes <funções contentModify> podem ser utilizadas com este elemento: ConvertToDWORD, ConvertToString, ConvertToBinary, KeepExisting, OffsetValue, SetValueByTable, MergeMultiSzContent e MergeDelimitedContent.

Sintaxe:

<contentModify script="ScriptInvocation">
</contentModify>
Configuração Obrigatório? Valor
script Sim Um script seguido de qualquer número de argumentos de cadeia que são separados por uma vírgula e entre parênteses. Por exemplo MyScripts.AScript ("Arg1","Arg2").

O script é chamado para cada objeto enumerado pelos conjuntos de objetos na regra de inclusão. O script de filtro devolve um valor Booleano. Se o valor devolvido for VERDADEIRO, o objeto será migrado. Se for FALSO, não será migrado.

<contentModify functions (funções contentModify> )

As seguintes funções alteram o conteúdo dos objetos à medida que são migrados. Estas funções são chamadas para cada objeto que o elemento objectSet> principal< está a enumerar.

  • ConverterToDWORD

    A função ConvertToDWORD converte o conteúdo dos valores de registo enumerados pelo elemento ObjectSet> principal< num DWORD. Por exemplo, ConverterToDWORD converte a cadeia "1" em DWORD 0x00000001. Se a conversão falhar, será aplicado o valor DefaultValueOnError .

    Sintaxe: ConvertToDWORD(DefaultValueOnError)

    Configuração Obrigatório? Valor
    DefaultValueOnError Não O valor que é escrito no nome do valor se a conversão falhar. É possível especificar NULL e 0 é escrito se a conversão falhar.
  • ConverterToString

    A função ConvertToString converte o conteúdo dos valores de registo que correspondem ao elemento ObjectSet> principal< numa cadeia. Por exemplo, converte o DWORD 0x00000001 na cadeia "1". Se a conversão falhar, será aplicado o valor DefaultValueOnError .

    Sintaxe: ConvertToString(DefaultValueOnError)

    Configuração Obrigatório? Valor
    DefaultValueOnError Não O valor que é escrito no nome do valor se a conversão falhar. É possível especificar NULL e 0 é escrito se a conversão falhar.

    Por exemplo:

    <contentModify script="MigXmlHelper.ConvertToString('1')">
       <objectSet>
            <pattern type="Registry">HKCU\Control Panel\Desktop [ScreenSaveUsePassword]</pattern>
       </objectSet>
    </contentModify>
    
  • ConverterToBinary

    A função ConvertToBinary converte o conteúdo dos valores de registo que correspondem ao elemento objectSet> principal< para um tipo binário.

    Sintaxe: ConvertToBinary ()

  • OffsetValue

    A função OffsetValue adiciona ou subtrai Valor ao valor do objeto migrado e, em seguida, escreve o resultado novamente no valor de registo no computador de destino. Por exemplo, se o objeto migrado for um DWORD com um valor de 14e o Valor for "-2", o valor do registo estará 12 no computador de destino.

    Sintaxe: OffsetValue(Value)

    Configuração Obrigatório? Valor
    Valor Sim A representação de cadeia de carateres de um valor numérico. Pode ser positivo ou negativo. Por exemplo, OffsetValue(2).
  • SetValueByTable

    A função SetValueByTable corresponde ao valor do computador de origem à tabela de origem. Se o valor estiver lá, será aplicado o valor equivalente na tabela de destino. Se o valor não estiver lá ou se a tabela de destino não tiver um valor equivalente, será aplicado DefaultValueOnError .

    Sintaxe: SetValueByTable(SourceTable,DestinationTable,DefaultValueOnError)

    Configuração Obrigatório? Valor
    Tabela De Origem Sim Uma lista de valores separados por vírgulas que são possíveis para os valores do registo de origem.
    DestinationTable Não Uma lista de valores traduzidos separados por vírgulas.
    DefaultValueOnError Não O valor que é aplicado ao computador de destino se um dos dois
    1. O valor do computador de origem não corresponde a SourceTable
    2. DestinationTable não tem um valor equivalente.

    Se DefaultValueOnError for NULL, o valor não será alterado no computador de destino.
  • KeepExisting

    A função KeepExisting pode ser utilizada quando existem conflitos no computador de destino. Esta função mantém (não substitui) os atributos especificados para o objeto que está no computador de destino.

    Sintaxe: KeepExisting("OptionString","OptionString","OptionString",…)

    Configuração Obrigatório? Valor
    OptionString Sim OptionString pode ser Segurança, TimeFields ou FileAttrib:Letter. Pode especificar um de cada tipo de OptionStrings . Não especifique várias OptionStrings com o mesmo valor. Se forem especificadas múltiplas OptionStrings com o mesmo valor, é mantida a opção mais à direita desse tipo. Por exemplo, não especifique ("FileAttrib:H", "FileAttrib:R") porque apenas o Só de Leitura é avaliado. Em vez disso, especifique ("FileAttrib:HR") e os atributos Ocultos e Só de Leitura são mantidos no computador de destino.
    • Segurança: mantém o descritor de segurança do objeto de destino, se existir.
    • TimeFields: mantém os carimbos de data/hora do objeto de destino. Este parâmetro destina-se apenas a ficheiros.
    • FileAttrib:<Letra>: mantém o valor do atributo do objeto de destino, ativado ou DESATIVADO, para o conjunto especificado de atributos de ficheiro. Este parâmetro destina-se apenas a ficheiros. As seguintes opções não são sensíveis a maiúsculas e minúsculas, mas a USMT irá ignorar quaisquer valores inválidos, repetidos ou se existir um espaço depois de FileAttrib:. Qualquer combinação dos seguintes atributos pode ser especificada:
      • A = Arquivo
      • C = Comprimido
      • E = Encriptado
      • H = Oculto
      • I = Não Indexado por Conteúdo
      • O = Offline
      • R = Read-Only
      • S = Sistema
      • T = Temporário
  • MergeMultiSzContent

    A função MergeMultiSzContent intercala o conteúdo MULTI-SZ dos valores de registo enumerados pelo elemento objectSet> principal< com o conteúdo dos valores de registo equivalentes que já existem no computador de destino. Instruction e String remova ou adicione conteúdo ao MULTI-SZ resultante. Os elementos duplicados são removidos.

    Sintaxe: MergeMultiSzContent (Instruction,String,Instruction,String,…)

    Configuração Obrigatório? Valor
    Instrução Sim Pode ser um dos seguintes valores:
    • Adicionar. Adiciona a Cadeia correspondente ao MULTI-SZ resultante, se ainda não estiver lá.
    • Remover. Remove a Cadeia correspondente do MULTI-SZ resultante.
    String Sim A cadeia a adicionar ou remover.
  • MergeDelimitedContent

    A função MergeDelimitedContent intercala o conteúdo dos valores de registo enumerados pelo elemento ObjectSet> principal< com o conteúdo dos valores de registo equivalentes que já existem no computador de destino. O conteúdo é considerado uma lista de elementos separados por um dos carateres no parâmetro Delimitadores. Os elementos duplicados são removidos.

    Sintaxe: MergeDelimitedContent(Delimiters,Instruction,String,…)

    Configuração Obrigatório? Valor
    Delimitadores Sim Um único caráter que é utilizado para separar o conteúdo do objeto que está a ser processado. O conteúdo é considerado uma lista de elementos separados pelos Delimitadores.
    Por exemplo, "." separa a cadeia com base num ponto final.
    Instrução Sim Pode ser um dos seguintes valores:
    • Adicionar: adiciona Cadeia ao MULTI-SZ resultante se ainda não estiver lá.
    • Remover: remove Cadeia do MULTI-SZ resultante.
    String Sim A cadeia a adicionar ou remover.

<descrição>

O <elemento description> define uma descrição para o componente, mas não afeta a migração.

  • Número de ocorrências: zero ou um

  • Elementos principais:<componente>

  • Elementos subordinados: nenhum

Sintaxe:

<description>ComponentDescription</description>
Configuração Obrigatório? Valor
ComponentDescription Sim A descrição do componente.

O seguinte exemplo de código mostra como o <elemento de descrição> define a descrição "O meu componente personalizado":

<description>My custom component<description>

<destinationCleanup>

O <elemento destinationCleanup> elimina objetos, como ficheiros e chaves de registo, do computador de destino antes de aplicar os objetos do computador de origem. Este elemento só é avaliado quando a ferramenta LoadState é executada no computador de destino. Ou seja, este elemento é ignorado pela ferramenta ScanState .

Importante

Utilize esta opção com muito cuidado, uma vez que irá eliminar objetos do computador de destino.

Para cada <elemento destinationCleanup> , pode haver vários <elementos objectSet> . Uma utilização comum para este elemento é se existir uma chave de registo em falta no computador de origem, mas o componente ainda precisar de ser migrado. Neste caso, todas as chaves de registo do componente podem ser eliminadas antes de migrar as chaves do registo de origem. A eliminação de todas as chaves de registo do componente garante que, se existir uma chave em falta no computador de origem, também estará em falta no computador de destino.

  • Número de ocorrências: Ilimitado

  • Elementos principais:<regras>

  • Elementos subordinados:<objectSet> (O computador de destino elimina todos os elementos subordinados.)

Sintaxe:

<destinationCleanup filter=ScriptInvocation>
</destinationCleanup>
Configuração Obrigatório? Valor
filter Sim Um script seguido de qualquer número de argumentos de cadeia que são separados por uma vírgula e entre parênteses. Por exemplo, MyScripts.AScript ("Arg1","Arg2").

O script é chamado para cada objeto enumerado pelos conjuntos de objetos na regra de inclusão. O script de filtro devolve um valor Booleano. Se o valor devolvido for VERDADEIRO, o objeto será migrado. Se for FALSO, não será migrado.

Por exemplo:

<destinationCleanup>
   <objectSet>
      <pattern type="Registry">HKCU\Software\Lotus\123\99.0\DDE Preferences\* [*]</pattern>
      <pattern type="Registry">HKCU\Software\Lotus\123\99.0\Find Preferences\* [*]</pattern>
   </objectSet>
</destinationCleanup>

<detetar>

Embora o <elemento de deteção> ainda seja suportado, a Microsoft recomenda que deixe de utilizar o<> elemento de deteção, uma vez que poderá ser preterido em versões futuras do USMT. Se o <elemento de deteção> for preterido, será necessária uma reescrita de todos os scripts que utilizem o elemento de deteção<>. Em vez disso, a Microsoft recomenda a utilização do< elemento de deteção>. O <elemento de deteção> permite instruções booleanas complexas mais claramente formuladas

O <elemento de deteção> pode ser utilizado para determinar se o componente está presente num sistema. Se todos os elementos de deteção subordinados<> dentro de um elemento dedeteção> resolve como VERDADEIRO, o elemento de deteção é resolvido como< VERDADEIRO.<> Se qualquer elemento subordinado< detetar> elementos resolve como FALSO, o elemento principal <de deteção> será resolvido como FALSO. Se não existir nenhuma <secção de elemento de deteção> , a USMT pressupõe que o componente está presente.

Para cada <elemento de deteção> , podem existir várias <condições> subordinadas ou <elementos objectSet> , que são logicamente associados por um operador OR . Se, pelo menos, uma <condição> ou <elemento objectSet> for avaliado como VERDADEIRO, o elemento de deteção<> é avaliado como VERDADEIRO.

Sintaxe:

<detect name="ID" context="User|System|UserAndSystem">
</detect>
Configuração Obrigatório? Valor
name Sim, quando <detetar> um subordinado com <o nomeElements>
Não, quando <detetar> um subordinado a <detetar>
Quando o ID é especificado, os elementos subordinados não são processados. Em vez disso, todos os outros <elementos de deteção> com o mesmo nome que são declarados no< elemento namedElements são processados>.
contexto Não
(predefinição = UserAndSystem)
Define o âmbito deste parâmetro, que consiste em processar este componente no contexto do utilizador específico, em todo o sistema operativo ou ambos.
O maior âmbito possível é definido pelo elemento de componente. Por exemplo, se um <elemento de componente> tiver um contexto de Utilizador e um <elemento de regras> tiver um contexto de UserAndSystem, o <elemento rules> funcionaria como se tivesse um contexto de Utilizador. Se o <elemento de regras> tivesse um contexto de Sistema, funcionaria como se o <elemento de regras> não estivesse lá.
  • Utilizador: avalia as variáveis para cada utilizador.
  • Sistema: avalia as variáveis apenas uma vez para o sistema.
  • UserAndSystem: avalia as variáveis para todo o sistema operativo e para cada utilizador.

Para obter exemplos, veja os exemplos de deteção<>.

<deteta>

Embora o <elemento detects> ainda seja suportado, a Microsoft recomenda que deixe de utilizar o <elemento detects> , uma vez que poderá ser preterido em versões futuras do USMT. Se o <elemento detetar> for preterido, será necessária uma reescrita de todos os scripts que utilizem o <elemento detects> . Em vez disso, a Microsoft recomenda a utilização do< elemento de deteção> se o elemento principal for <role> ou <namedElements>, ou utilizar o <elemento conditions> se o elemento principal for <regras>. O <elemento de deteção> permite instruções booleanas complexas mais claramente formuladas e o <elemento conditions> permite a formulação de instruções booleanas complexas.

O <elemento detecta> é um contentor para um ou mais <elementos de deteção> . Se todos os <elementos de deteção subordinados> dentro de um <elemento detetar> resolve como VERDADEIRO, o <deteta> como VERDADEIRO. Se algum dos elementos de deteção subordinados<> resolve como FALSO, o <deteta> resolve para FALSO. Para impedir que o <elemento detete> a escrita num componente, crie o <elemento detects> no <elemento namedElements> e, em seguida, veja-o. Se não existir nenhuma <secção de elemento deteção> , a USMT pressupõe que o componente está presente. Os resultados de cada <elemento deteta> são unidos pelo operador OR para formar a regra utilizada para detetar o elemento principal.

Sintaxe:

<detects name="ID" context="User|System|UserAndSystem">
</detects>
Configuração Obrigatório? Valor
name Sim, quando <deteta> é um subordinado com <o nomeElements>
Não, quando <deteta> é um subordinado para função<> ou <regras>
Quando o ID é especificado, não <são processados elementos de deteção> subordinados. Em vez disso, todos os outros <elementos detetados> com o mesmo nome que são declarados no< elemento namedElements são processados>.
contexto Não
(predefinição = UserAndSystem)
Define o âmbito deste parâmetro: se pretende processar este componente no contexto do utilizador específico, em todo o sistema operativo ou ambos.
O maior âmbito possível é definido pelo <elemento> de componente. Por exemplo, se um <elemento de componente> tiver um contexto de Utilizador e um <elemento de regras> tiver um contexto de UserAndSystem, o <elemento de regras> funcionaria como se tivesse um contexto de Utilizador. Se o <elemento de regras> tivesse um contexto de Sistema, funcionaria como se o <elemento de regras> não estivesse lá.
  • Utilizador: avalia as variáveis para cada utilizador.
  • Sistema: avalia as variáveis apenas uma vez para o sistema.
  • UserAndSystem: avalia as variáveis para todo o sistema operativo e para cada utilizador.

O parâmetro de contexto é ignorado para <detetar> elementos que estão dentro <de elementos de regras> .

O exemplo seguinte é do MigApp.xml ficheiro .

<detects>
   <detect>
      <condition>MigXmlHelper.DoesFileVersionMatch("%Lotus123InstPath%\123w.exe","ProductVersion","9.*")</condition>
   </detect>
   <detect>
      <condition>MigXmlHelper.DoesFileVersionMatch("%SmartSuiteInstPath%\smartctr.exe","ProductVersion","99.*")</condition>
   </detect>
</detects>

<deteção>

O <elemento de deteção> é um contentor para um <elemento de condições> . O resultado dos elementos da condição> subordinada<, localizados abaixo do <elemento conditions>, determina o resultado deste elemento. Por exemplo, se todos os elementos das condições> subordinadas< no <elemento de deteção> resolve para VERDADEIRO, o <elemento de deteção> será resolvido como VERDADEIRO. Se algum dos elementos de condições> subordinadas< resolve como FALSO, o <elemento de deteção> é resolvido como FALSO.

Além disso, os resultados de cada secção de deteção< no elemento de função> são unidos pelo operador OR para formar a regra de deteção do elemento principal.>< Ou seja, se uma das secções de deteção<> resolve para VERDADEIRO, o <elemento de função> é processado. Caso contrário, o <elemento de função> não é processado.

Utilize o <elemento de deteção> no <elemento namedElements> para não escrever num componente. Em seguida, inclua uma secção de deteção> correspondente< no <elemento de função> para controlar se o componente é migrado. Se não existir uma <secção de deteção> para um componente, a USMT pressupõe que o componente está presente.

Sintaxe:

<detection name="ID" context="User|System|UserAndSystem">
</detection>
Configuração Obrigatório? Valor
name
  • Sim, quando a <deteção> é declarada <em namedElements>
  • Opcional, quando declarado sob <função>
Se for declarado, o conteúdo do elemento de deteção<> é ignorado e o conteúdo do elemento de deteção<> com o mesmo nome declarado no <elemento namedElements> é avaliado.
contexto Não, predefinição = UserAndSystem Define o âmbito deste parâmetro: se pretende processar este componente no contexto do utilizador específico, em todo o sistema operativo ou ambos.
  • Utilizador: avalia o componente para cada utilizador.
  • Sistema: avalia o componente apenas uma vez para o sistema.
  • UserAndSystem: avalia o componente para todo o sistema operativo e para cada utilizador.

Por exemplo:

<detection name="AdobePhotoshopCS">
   <conditions>
      <condition>MigXmlHelper.DoesObjectExist("Registry","HKCU\Software\Adobe\Photoshop\8.0")</condition>
      <condition>MigXmlHelper.DoesFileVersionMatch("%PhotoshopSuite8Path%\Photoshop.exe","FileVersion","8.*")</condition>
   </conditions>
</detection>

e

<role role="Settings">
   <detection>
      <conditions>
         <condition>MigXmlHelper.DoesFileVersionMatch("%QuickTime5Exe%","ProductVersion","QuickTime 5.*")</condition>
         <condition>MigXmlHelper.DoesFileVersionMatch("%QuickTime5Exe%","ProductVersion","QuickTime 6.*")</condition>
      </conditions>
   </detection>

<displayName>

O <elemento displayName> é um campo obrigatório dentro de cada <elemento de componente> .

  • Número de ocorrências: uma vez para cada componente

  • Elementos principais:<componente>

  • Elementos subordinados: nenhum

Sintaxe:

<displayName _locID="ID">ComponentName</displayName>
Configuração Obrigatório? Valor
locID Não Este parâmetro destina-se à utilização interna do USMT. Não utilize este parâmetro.
ComponentName Sim O nome do componente.

Por exemplo:

<displayName>Command Prompt settings</displayName>

<ambiente>

O <elemento de ambiente> é um contentor para <elementos variáveis> nos quais as variáveis podem ser definidas para utilização num ficheiro .xml . Todas as variáveis de ambiente definidas desta forma são privadas. Ou seja, só estão disponíveis para os componentes subordinados e para o componente em que foram definidos. Para obter dois cenários de exemplo, veja Exemplos.

Sintaxe:

<environment name="ID" context="User|System|UserAndSystem">
</environment>
Configuração Obrigatório? Valor
name Sim, quando <o ambiente> é subordinado de <namedElements>
Não, quando <o ambiente> é subordinado da função> ou componente<><
Quando declarado subordinado dos elementos de <função> ou <componente>, se o ID for declarado, o USMT ignora o conteúdo do elemento de< ambiente> e o conteúdo do elemento de <ambiente> com o mesmo nome declarado no elemento namedElements> é processado.<
contexto Não
(predefinição = UserAndSystem)
Define o âmbito deste parâmetro: se pretende processar este componente no contexto do utilizador específico, em todo o sistema operativo ou ambos.
O maior âmbito possível é definido pelo <elemento de componente> . Por exemplo, se um <elemento de componente> tiver um contexto de Utilizador e um <elemento de regras> tiver um contexto de UserAndSystem, o <elemento de regras> funcionaria como se tivesse um contexto de Utilizador. Se o <elemento de regras> tivesse um contexto de Sistema, funcionaria como <se as regras> não estivessem lá.
  • Utilizador: avalia as variáveis para cada utilizador.
  • Sistema: avalia as variáveis apenas uma vez para o sistema.
  • UserAndSystem: avalia as variáveis para todo o sistema operativo e para cada utilizador.

Exemplos

Cenário de exemplo 1

Neste cenário, gere a localização dos objetos no tempo de execução, consoante a configuração do computador de destino. Por exemplo, se uma aplicação escrever dados no diretório onde a aplicação está instalada e os utilizadores puderem instalar a aplicação em qualquer lugar do computador. Se a aplicação escrever um valor hklm\software\companyname\install [path\] de registo e, em seguida, atualizar este valor com a localização onde a aplicação está instalada, a única forma de migrar corretamente os dados necessários é definir uma variável de ambiente. Por exemplo:

<environment>
   <variable name="INSTALLPATH">
      <script>MigXmlHelper.GetStringContent("Registry","\software\companyname\install [path]")</script>
   </variable>
</environment>

Em seguida, uma regra de inclusão pode ser utilizada da seguinte forma. Qualquer uma das funções de< script> pode ser utilizada para realizar tarefas semelhantes.

<include>
   <objectSet>
      <pattern type="File">%INSTALLPATH%\ [*.xyz]</pattern>
   </objectSet>
</include>

Em segundo lugar, os valores do registo podem ser filtrados para conter os dados necessários. O exemplo seguinte extrai a primeira cadeia (antes do separador ",") no valor do registo Hklm\software\companyname\application\ [Path\].

<environment>
   <variable name="APPPATH">
        <objectSet>
           <content filter='MigXmlHelper.ExtractDirectory (",", "1")'>
             <objectSet>
                <pattern type="Registry">Hklm\software\companyname\application\ [Path]</pattern>
              </objectSet>
            </content>
        </objectSet>
    </variable>
</environment>

Cenário de exemplo 2

Neste cenário, cinco ficheiros denominados File1.txt, File2.txte assim por diante, têm de ser migrados do %SYSTEMDRIVE%\data\userdata\dir1\dir2\. Para migrar estes ficheiros, a seguinte <regra de inclusão> tem de estar num ficheiro .xml :

<include>
   <objectSet>
      <pattern type="File">%SYSTEMDRIVE%\data\userdata\dir1\dir2 [File1.txt]</pattern>
      <pattern type="File">%SYSTEMDRIVE%\data\userdata\dir1\dir2 [File2.txt]</pattern>
      <pattern type="File">%SYSTEMDRIVE%\data\userdata\dir1\dir2 [File3.txt]</pattern>
      <pattern type="File">%SYSTEMDRIVE%\data\userdata\dir1\dir2 [File4.txt]</pattern>
      <pattern type="File">%SYSTEMDRIVE%\data\userdata\dir1\dir2 [File5.txt]</pattern>
   </objectSet>
</include>

Em vez de escrever o caminho cinco vezes, crie uma variável para a localização da seguinte forma:

<environment>
   <variable name="DATAPATH">
      <text>%SYSTEMDRIVE%\data\userdata\dir1\dir2 </text>
      </variable>
</environment>

Em seguida, especifique a variável numa <regra de inclusão> da seguinte forma:

<include>
   <objectSet>
      <pattern type="File">%DATAPATH% [File1.txt]</pattern>
      <pattern type="File">%DATAPATH% [File2.txt]</pattern>
      <pattern type="File">%DATAPATH% [File3.txt]</pattern>
      <pattern type="File">%DATAPATH% [File4.txt]</pattern>
      <pattern type="File">%DATAPATH% [File5.txt]</pattern>
   </objectSet>
</include>

<exclude>

O <elemento exclude> determina que objetos não são migrados, a menos que exista um elemento de inclusão> mais específico< que migre um objeto. Se existir um elemento de inclusão> e exclusão<>para o mesmo objeto, o objeto será incluído.< Para cada <elemento de exclusão>, pode haver vários elementos objectSet> subordinados<.

Sintaxe:

<exclude filter="ScriptInvocation">
</exclude>
Configuração Obrigatório? Valor
filter Não
(predefinição = Não)
Um script seguido de qualquer número de argumentos de cadeia que são separados por uma vírgula e entre parênteses. Por exemplo, MyScripts.AScript ("Arg1","Arg2").

O script é chamado para cada objeto enumerado pelos conjuntos de objetos na regra de inclusão. O script de filtro devolve um valor Booleano. Se o valor devolvido for VERDADEIRO, o objeto será migrado. Se for FALSO, não será migrado.

Por exemplo, no MigUser.xml ficheiro:

<exclude>
   <objectSet>
      <pattern type="File">%CSIDL_MYMUSIC%\* [*]</pattern>
      <pattern type="File">%CSIDL_MYPICTURES%\* [*]</pattern>
      <pattern type="File">%CSIDL_MYVIDEO%\* [*]</pattern>
   </objectSet>
</exclude>

<excludeAttributes>

O <elemento excludeAttributes> pode ser utilizado para determinar que parâmetros associados a um objeto não são migrados. Se existirem conflitos entre os <elementos includeAttributes> e <excludeAttributes> , o padrão mais específico determina os padrões que não são migrados. Se um objeto não tiver um <elemento includeAttributes> ou <excludeAttributes> , todos os parâmetros serão migrados.

  • Número de ocorrências: Ilimitado

  • Elementos principais:<regras>

  • Elementos subordinados:<objectSet>

Sintaxe:

<excludeAttributes attributes="Security|TimeFields|Security,TimeFields">
</excludeAttributes>
Configuração Obrigatório? Valor
atributos Sim Especifica os atributos a serem excluídos. Pode ser especificado um dos seguintes procedimentos ou ambos. Se especificar ambos, têm de ser separados por aspas. Por exemplo, "Security","TimeFields":
  • A segurança pode ser de Proprietário, Grupo, DACL ou SACL.
  • TimeFields pode ser de CreationTime, LastAccessTime e LastWrittenTime

Exemplo:

<migration urlid="http://www.microsoft.com/migration/1.0/migxmlext/miguser">
<!-- This component migrates the files in the Video folder -->
   <component type="System" context="System">
      <displayName>System Data</displayName>
         <role role="Data">
            <rules>
<!-- Include all of the text files, which are immediately in the drive where the operating system is installed -->
               <include>
                  <objectSet>
                     <pattern type="File">%SYSTEMDRIVE%\ [*.txt]</pattern>
                  </objectSet>
               </include>
<!-- Exclude the time stamps from the text file starting with the letter a -->
               <excludeAttributes attributes="TimeFields">
                  <objectSet>
                     <pattern type="File">%SYSTEMDRIVE%\ [a*.txt]</pattern>
                  </objectSet>
               </excludeAttributes>
<!-- include the time stamps from the text file aa.txt -->
               <includeAttributes attributes="TimeFields">
                  <objectSet>
                     <pattern type="File">%SYSTEMDRIVE%\ [aa.txt]</pattern>
                  </objectSet>
               </includeAttributes>
<!-- Logoff the user after LoadState successfully completed. -->
               <externalProcess when="post-apply">
                  <commandLine>
                     logoff
                  </commandLine>
               </externalProcess>
         </rules>
   </role>
<!-- Migrate 
   all doc files from the system
   all power point files
   all visio design files 
   all my c++ program files -->
   <extensions>
      <extension>DOC</extension>
      <extension>PPT</extension>
      <extension>VXD</extension>
      <extension>PST</extension>
      <extension>CPP</extension>
   </extensions>
</component>
</migration>

<extensões>

O <elemento extensions> é um contentor para um ou mais <elementos de extensão> .

  • Número de ocorrências: zero ou um

  • Elementos principais:<componente>

  • Elementos subordinados necessários:<extensão>

Sintaxe:

<extensions>
</extensions>

<extensão>

O <elemento de extensão> pode ser utilizado para especificar documentos de uma extensão específica.

  • Número de ocorrências: ilimitadas

  • Elementos principais:<extensões>

  • Elementos subordinados: nenhum

Sintaxe:

<extension>FilenameExtension</extension>
Configuração Obrigatório? Valor
FilenameExtension Sim Uma extensão de nome de ficheiro.

Por exemplo, para migrar todos os ficheiros *.doc do computador de origem, especifique o seguinte código no elemento do< componente>:

<extensions> 
        <extension>doc</extension> 
<extensions> 

é o mesmo que especificar o seguinte código abaixo do <elemento de regras> :

<include> 
        <objectSet> 
                <script>MigXmlHelper.GenerateDrivePatterns ("* [*.doc]", "Fixed")</script> 
        </objectSet> 
</include>

Para obter outro exemplo de como utilizar o <elemento de extensão> , veja o exemplo de <excludeAttributes>.

<externalProcess>

O <elemento externalProcess> pode ser utilizado para executar uma linha de comandos durante o processo de migração. Por exemplo, uma execução de um comando poderá ter de ser executada após a conclusão do processo LoadState .

  • Número de ocorrências: Ilimitado

  • Elementos principais:<regras>

  • Elementos subordinados necessários:<commandLine>

Sintaxe:

<externalProcess when="pre-scan|scan-success|post-scan|pre-apply|apply-success|post-apply">
</externalProcess>
Configuração Obrigatório? Valor
quando Sim Indica quando a linha de comandos deve ser executada. Este valor pode ser um dos seguintes valores:
  • pré-análise antes do início do processo de análise.
  • scan-success após o processo de análise ser concluído com êxito.
  • após a conclusão do processo de análise, quer tenha sido ou não bem-sucedido.
  • pré-aplicar antes do início do processo de aplicação.
  • apply-success após a conclusão do processo de aplicação com êxito.
  • após a conclusão do processo de aplicação, quer tenha sido ou não bem-sucedido.

Para obter um exemplo de como utilizar o <elemento externalProcess> , veja o exemplo de <excludeAttributes>.

<ícone>

Este elemento é um elemento USMT interno. Não utilize este elemento.

<include>

O <elemento include> determina o que migrar, a menos que exista uma regra de exclusão> mais específica<. Um script pode ser especificado para ser mais específico para expandir a definição do que pretende que seja recolhido. Para cada <elemento de inclusão> , pode haver vários <elementos objectSet> .

Sintaxe:

<include filter="ScriptInvocation">
</include>
Configuração Obrigatório? Valor
filter Não.
Se este parâmetro não for especificado, todos os padrões dentro do elemento objectSet> subordinado< são processados.
Um script seguido de qualquer número de argumentos de cadeia que são separados por uma vírgula e entre parênteses. Por exemplo, MyScripts.AScript ("Arg1","Arg2").
O script é chamado para cada objeto enumerado pelos conjuntos de objetos na <regra de inclusão> . O script de filtro devolve um valor Booleano. Se o valor devolvido for VERDADEIRO, o objeto será migrado. Se for FALSO, não será migrado.

O exemplo seguinte é do MigUser.xml ficheiro:

<component type="Documents" context="User">
   <displayName _locID="miguser.myvideo">My Video</displayName>
      <paths>
         <path type="File">%CSIDL_MYVIDEO%</path>
      </paths>
      <role role="Data">
         <detects>           
            <detect>
               <condition>MigXmlHelper.DoesObjectExist("File","%CSIDL_MYVIDEO%")</condition>
            </detect>
         </detects>
         <rules>
               <include filter='MigXmlHelper.IgnoreIrrelevantLinks()'>
                  <objectSet>
                     <pattern type="File">%CSIDL_MYVIDEO%\* [*]</pattern>
                  </objectSet>
               </include>
               <merge script="MigXmlHelper.DestinationPriority()">
                  <objectSet>
                     <pattern type="File">%CSIDL_MYVIDEO% [desktop.ini]</pattern>
                  </objectSet>
            </merge>
         </rules>
      </role>
    </component>

<incluir> e <excluir> funções de filtro

As seguintes funções devolvem um valor Booleano. Podem ser utilizados para migrar determinados objetos com base no momento em que determinadas condições são cumpridas.

  • AnswerNo

    Este filtro devolve sempre FALSO.

    Sintaxe: AnswerNo ()

  • CompareStringContent

    Sintaxe: CompareStringContent("StringContent","CompareType")

    Configuração Obrigatório? Valor
    StringContent Sim A cadeia contra a marcar.
    CompareType Sim Uma cadeia. Utilize um dos seguintes valores:
    • Igual (não sensível a maiúsculas e minúsculas). A função devolve VERDADEIRO se a representação da cadeia do objeto atual que é processada pelo motor de migração for idêntica a StringContent.
    • NULLou qualquer outro valor. A função devolve VERDADEIRO se a representação da cadeia do objeto atual que é processado pelo motor de migração não corresponder StringContenta .
  • IgnoreIrrelevantLinks

    Este filtro filtra os ficheiros .lnk que apontam para um objeto que não é válido no computador de destino. A filtragem ocorre no computador de destino, pelo que todos os ficheiros .lnk são guardados no arquivo durante o ScanState. Em seguida, são filtrados quando a ferramenta LoadState é executada.

    Sintaxe: IgnoreIrrelevantLinks ()

    Por exemplo:

    <include filter='MigXmlHelper.IgnoreIrrelevantLinks()'>
         <objectSet>
              <pattern type="File">%CSIDL_COMMON_VIDEO%\* [*]</pattern>
         </objectSet>
    </include>
    
  • NeverRestore

    Esta função pode ser utilizada para recolher os objetos especificados do computador de origem, mas não para migrar os objetos para o computador de destino. Quando executada com a ferramenta ScanState , esta função é avaliada como VERDADEIRO. Quando executada com a ferramenta LoadState , esta função é avaliada como FALSO. Esta função pode ser utilizada para marcar o valor de um objeto no computador de destino, mas não há intenção de migrar o objeto para o destino.

    Sintaxe: NeverRestore()

    No exemplo seguinte, HKCU\Painel de Controle\International [Locale] está incluído no arquivo, mas não é migrado para o computador de destino:

    <include filter="MigXmlHelper.NeverRestore()">
       <objectSet>
          <pattern type="Registry">HKCU\Control Panel\International [Locale]</pattern>
       </objectSet>
    </include>
    

<includeAttributes>

O <elemento includeAttributes> pode ser utilizado para determinar se determinados parâmetros associados a um objeto são migrados juntamente com o próprio objeto. Se existirem conflitos entre os <elementos includeAttributes> e <excludeAttributes> , o padrão mais específico determina que parâmetros são migrados. Se um objeto não tiver um <elemento includeAttributes> ou <excludeAttributes> , todos os parâmetros serão migrados.

  • Número de ocorrências: ilimitadas

  • Elementos principais:<regras>

  • Elementos subordinados:<objectSet>

Sintaxe:

<includeAttributes attributes="Security|TimeFields|Security,TimeFields">
</includeAttributes>
Configuração Obrigatório? Valor
atributos Sim Especifica os atributos a incluir com um objeto migrado. Pode ser especificado um dos seguintes procedimentos ou ambos. Se especificar ambos, têm de ser separados por aspas. Por exemplo, "Security","TimeFields":
  • A segurança pode ser um dos seguintes valores:
    • Proprietário: o proprietário do objeto (SID).
    • Grupo: o grupo primário do objeto (SID).
    • DACL (lista de controlo de acesso discricionário): uma lista de controlo de acesso que é controlada pelo proprietário de um objeto e que especifica o acesso que determinados utilizadores ou grupos podem ter ao objeto.
    • SACL (lista de controlo de acesso ao sistema): uma ACL que controla a geração de mensagens de auditoria para tentativas de acesso a um objeto com segurança. A capacidade de obter ou definir o SACL de um objeto é controlada por um privilégio normalmente mantido apenas por administradores de sistema.
  • TimeFields pode ser um dos seguintes valores:
    • CreationTime: especifica quando o ficheiro ou diretório foi criado.
    • LastAccessTime: especifica quando o ficheiro é lido pela última vez, escrito em ou para ficheiros executáveis, executado.
    • LastWrittenTime: especifica quando o ficheiro é escrito pela última vez, truncado ou substituído.

Para obter um exemplo de como utilizar o <elemento includeAttributes> , veja o exemplo de <excludeAttributes>.

<biblioteca>

Este elemento é um elemento USMT interno. Não utilize este elemento.

<localização>

O <elemento de localização> define a localização do elemento do< objeto>.

  • Número de ocorrências: uma vez para cada <objeto>

  • Elementos principais:<objeto>

  • Elementos subordinados:<script>

Sintaxe:

<location type="typeID">ObjectLocation</location>
Configuração Obrigatório? Valor
tipo Sim typeID pode ser Registo ou Ficheiro.
ObjectLocation Sim A localização do objeto.

O exemplo seguinte é do MigApp.xml ficheiro:

<addObjects>
   <object>
      <location type="Registry">%HklmWowSoftware%\Microsoft\Office\16.0\Common\Migration\Office [UpgradeVersion]</location>
      <attributes>DWORD</attributes>
      <bytes>0B000000</bytes>
   </object>
   <object>
      <location type="Registry">%HklmWowSoftware%\Microsoft\Office\16.0\Common\Migration\Office [Lang]</location>
      <attributes>DWORD</attributes>
      <bytes>00000000</bytes>
   </object>
</addObjects>

<locationModify>

O <elemento locationModify> pode ser utilizado para alterar a localização e o nome de um objeto antes de o objeto ser migrado para o computador de destino. O <elemento locationModify> só é processado quando a ferramenta LoadState é executada no computador de destino. Por outras palavras, este elemento é ignorado pela ferramenta ScanState . O <elemento locationModify> cria a pasta adequada no computador de destino, se ainda não existir.

Número de ocorrências: Ilimitado

Sintaxe:

<locationModify script="ScriptInvocation">
</locationModify>
Configuração Obrigatório? Valor
script Sim Um script seguido de qualquer número de argumentos de cadeia que são separados por uma vírgula e entre parênteses. Por exemplo, MyScripts.AScript ("Arg1","Arg2").

O script é chamado para cada objeto enumerado pelos conjuntos de objetos na regra de inclusão. O script de filtro devolve um valor Booleano. Se o valor devolvido for VERDADEIRO, o objeto será migrado. Se for FALSO, não será migrado.

O exemplo seguinte é do MigApp.xml ficheiro:

<locationModify script="MigXmlHelper.RelativeMove('%CSIDL_APPDATA%\Microsoft\Office','%CSIDL_APPDATA%')">
   <objectSet>
      <pattern type="File">%CSIDL_APPDATA%\Microsoft\Office\ [Access10.pip]</pattern>
   </objectSet>
</locationModify>

<locationModify functions (funções locationModify> )

As seguintes funções alteram a localização dos objetos à medida que são migrados ao utilizar o <elemento locationModify> . Estas funções são chamadas para cada objeto que o elemento objectSet> principal< está a enumerar. O <elemento locationModify> cria a pasta adequada no computador de destino, se ainda não existir.

  • ExactMove

    A função ExactMove move todos os objetos correspondentes pelo elemento objectSet> principal< para o ObjectEncodedLocation especificado. Esta função pode ser utilizada para mover um único ficheiro para uma localização diferente no computador de destino. Se a localização de destino for um nó, todos os objetos de origem correspondentes são escritos no nó sem subdiretórios. Se a localização de destino for uma folha, o motor de migração migra todos os objetos de origem correspondentes para a mesma localização. Se ocorrer uma colisão, aplicam-se os algoritmos de colisão normais.

    Sintaxe: ExactMove(ObjectEncodedLocation)

    Configuração Obrigatório? Valor
    ObjectEncodedLocation Sim A localização de destino para todos os objetos de origem.

    Por exemplo:

    <locationModify script="MigXmlHelper.ExactMove('HKCU\Keyboard Layout\Toggle [HotKey]')">
       <objectSet>
            <pattern type="Registry">HKCU\Keyboard Layout\Toggle []</pattern>
       </objectSet>
    </locationModify>
    
  • Mover

    A função Mover move objetos para uma localização diferente no computador de destino. Além disso, esta função cria subdiretórios que estavam acima do CSIDL mais longo no nome do objeto de origem.

    Sintaxe: Move(DestinationRoot)

    Configuração Obrigatório? Valor
    DestinationRoot Sim A localização para onde os objetos de origem são movidos. Se necessário, esta função cria subdiretórios que estavam acima do CSIDL mais longo no nome do objeto de origem.
  • RelativeMove

    A função RelativeMove pode ser utilizada para recolher e mover dados. As variáveis de ambiente podem ser utilizadas nas raízes de origem e destino, mas podem ser definidas de forma diferente nos computadores de origem e destino.

    Sintaxe: RelativeMove(SourceRoot,DestinationRoot)

    Configuração Obrigatório? Valor
    OrigemRoot Sim A localização de onde os objetos são movidos. Quaisquer objetos de origem enumerados pelo elemento objectSet> principal< que não estejam nesta localização não são movidos.
    DestinationRoot Sim A localização para onde os objetos de origem são movidos no computador de destino. Se necessário, esta função cria subdiretórios que estavam acima de SourceRoot.

Por exemplo:

<include>
   <objectSet>
      <pattern type="File">%CSIDL_COMMON_FAVORITES%\* [*]</pattern>
   <objectSet>
</include>
<locationModify script="MigXmlHelper.RelativeMove('%CSIDL_COMMON_FAVORITES%','%CSIDL_COMMON_FAVORITES%')">
     <objectSet>
          <pattern type="File">%CSIDL_COMMON_FAVORITES%\* [*]</pattern>
     </objectSet>
</locationModify>

<_locDefinition>

Este elemento é um elemento USMT interno. Não utilize este elemento.

<fabricante>

O <elemento fabricante> define o fabricante para o componente, mas não afeta a migração.

  • Número de ocorrências: zero ou um

  • Elementos principais:<componente>

  • Elementos subordinados: nenhum

Sintaxe:

<manufacturer>Name</manufacturer>
Configuração Obrigatório? Valor
Nome Sim O nome do fabricante do componente.

<intercalar>

O <elemento de intercalação> determina o que acontece quando ocorre uma colisão. Uma colisão ocorre quando um objeto migrado já está presente no computador de destino. Se este elemento não for especificado, o comportamento predefinido do registo é que o objeto de origem substitua o objeto de destino. O comportamento predefinido dos ficheiros é que o nome do ficheiro de origem seja mudado para OriginalFileName(1).OriginalExtension. Este elemento especifica apenas o que deve ser feito quando ocorre uma colisão. Não inclui objetos. Por conseguinte, para que os objetos sejam migrados, <as regras de inclusão> têm de ser especificadas juntamente com o <elemento de intercalação> . Quando um objeto é processado e é detetada uma colisão, a USMT seleciona a regra de intercalação mais específica. Em seguida, aplica a regra para resolve o conflito. Por exemplo, se uma <regra de intercalação> estiver definida como <sourcePriority> e uma <regra de intercalação> estiver definida como <destinationPriority>, a USMT utilizará a <regra destinationPriority> porque é a mais específica.C:\subfolder\* [*]C:\* [*]

Para obter um exemplo deste elemento, veja Conflitos e precedência.

Sintaxe:

<merge script="ScriptInvocation">
</merge>
Configuração Obrigatório? Valor
script Sim Um script seguido de qualquer número de argumentos de cadeia que são separados por uma vírgula e entre parênteses. Por exemplo, MyScripts.AScript ("Arg1","Arg2").

O script é chamado para cada objeto enumerado pelos conjuntos de objetos na <regra de inclusão> . O script de filtro devolve um valor Booleano. Se o valor devolvido for VERDADEIRO, o objeto será migrado. Se for FALSO, não será migrado.

O exemplo seguinte é do MigUser.xml ficheiro:

<rules>
   <include filter='MigXmlHelper.IgnoreIrrelevantLinks()'>
      <objectSet>
         <pattern type="File">%CSIDL_MYVIDEO%\* [*]</pattern>
      </objectSet>
   </include>
   <merge script="MigXmlHelper.DestinationPriority()">
      <objectSet>
         <pattern type="File">%CSIDL_MYVIDEO% [desktop.ini]</pattern>
      </objectSet>
   </merge>
</rules>

<unir> funções

Estas funções controlam a forma como as colisões são resolvidas.

  • DestinationPriority

    Especifica para manter o objeto que está no computador de destino e não migrar o objeto do computador de origem.

    Por exemplo:

    <merge script="MigXmlHelper.DestinationPriority()">
         <objectSet>
              <pattern type="Registry">HKCU\Software\Microsoft\Office\16.0\PhotoDraw\ [MyPictures]</pattern>
              <pattern type="Registry">HKCU\Software\Microsoft\Office\16.0\PhotoDraw\Settings\ [PicturesPath]</pattern>
              <pattern type="Registry">HKCU\Software\Microsoft\Office\16.0\PhotoDraw\Settings\ [AdditionalPlugInPath]</pattern>
         </objectSet>
    </merge>
    
  • FindFilePlaceByPattern

    A função FindFilePlaceByPattern guarda ficheiros com um contador de incremento quando ocorre uma colisão. É uma cadeia que contém uma de cada construção: <F>, <E>, <N> em qualquer ordem.

    Sintaxe: FindFilePlaceByPattern(FilePattern)

    Configuração Obrigatório? Valor
    FilePattern Sim
    • <F> é substituído pelo nome de ficheiro original.
    • <N> é substituído por um contador de incremento até que não haja colisão com os objetos no computador de destino.
    • <E> é substituído pela extensão de nome de ficheiro original.

    Por exemplo, <F> (<N>).<E> altera o ficheiro MyDocument.doc de origem para MyDocument (1).doc no computador de destino.
  • NewestVersion

    A função NewestVersion resolve conflitos no computador de destino com base na versão do ficheiro.

    Sintaxe: NewestVersion(VersionTag)

    Configuração Obrigatório? Valor
    VersionTag Sim O campo de versão que está selecionado. Este campo pode ser FileVersion ou ProductVersion. O ficheiro com a versão mais alta do VersionTag determina quais os conflitos que são resolvidos com base na versão do ficheiro. Por exemplo, se Myfile.txt contiver FileVersion 1 e o mesmo ficheiro no computador de destino contiver FileVersion 2, o ficheiro no destino permanece.
  • HigherValue()

    Esta função pode ser utilizada para intercalar valores de registo. Os valores do registo são avaliados como valores numéricos e os valores com o valor mais elevado determinam que valores de registo são intercalados.

  • LowerValue()

    Esta função pode ser utilizada para intercalar valores de registo. Os valores do registo são avaliados como valores numéricos e os valores com o valor mais baixo determinam que valores de registo são intercalados.

  • SourcePriority

    Especifica para migrar o objeto do computador de origem e para eliminar o objeto que está no computador de destino.

    Por exemplo:

    <merge script="MigXmlHelper.SourcePriority()">
     <objectSet>
       <pattern type="Registry">%HklmWowSoftware%\Microsoft\Office\14.0\Common\Migration\Publisher [UpgradeVersion]</pattern>
       <pattern type="Registry">%HklmWowSoftware%\Microsoft\Office\15.0\Common\Migration\Publisher [UpgradeVersion]</pattern>
       <pattern type="Registry">%HklmWowSoftware%\Microsoft\Office\16.0\Common\Migration\Publisher [UpgradeVersion]</pattern>
     </objectSet>
    </merge>
    

<migração>

O <elemento de migração> é o elemento raiz único de um ficheiro de migração.xml e é necessário. Cada ficheiro.xml tem de ter um urlid de migração exclusivo. O urlid de cada ficheiro especificado na linha de comandos tem de ser exclusivo. Os urlids têm de ser exclusivos porque o USMT utiliza o urlid para definir os componentes no ficheiro.

Sintaxe:

<migration urlid="*UrlID/*Name">
</migration>
Configuração Obrigatório? Valor
urlid Sim UrlID é um identificador de cadeia que identifica exclusivamente este ficheiro .xml . Este parâmetro tem de ser um nome sem dois pontos, conforme definido pela especificação Espaços de Nomes XML. Cada ficheiro de.xml de migração tem de ter um urlid exclusivo. Se dois ficheiros .xml migração tiverem o mesmo urlid, o segundo ficheiro .xml especificado na linha de comandos não será processado. Para obter mais informações sobre espaços de nomes XML, veja Utilizar Espaços de Nomes XML.
Nome Não Embora não seja necessário, é uma boa prática utilizar o nome do ficheiro .xml .

O exemplo seguinte é do MigApp.xml ficheiro:

<migration urlid="http://www.microsoft.com/migration/1.0/migxmlext/migapp">
</migration>

MigXMLHelper.FileProperties

Esta função auxiliar de filtros pode ser utilizada para filtrar a migração de ficheiros com base no tamanho do ficheiro e nos atributos de data.

Função Auxiliar MigXMLHelper.FileProperties (propriedade, operador, valueToCompare)
Propriedade filesize, dateCreated, dateModified, dateAccessed
Operador range, neq, lte, lt, eq, gte, gt
valueToCompare O valor que está a ser comparado. Por exemplo:
Data: "2023/05/15-2020/05/17", "2023/05/15"
Tamanho: um número com B, KB, MB ou GB no final. "5 GB", "1KB-1MB"
<component context="System"  type="Application">
<displayName>File_size</displayName>
<role role="Data">

   <rules>
        <include filter='MigXmlHelper.FileProperties("dateAccessed","range","2023/05/15-2020/05/17")'>
         <objectSet>
         <pattern type="File">%SYSTEMDRIVE%\DOCS\* [*]</pattern>
         </objectSet>
      </include>
   </rules>
</role>
</component>

<namedElements>

O <elemento namedElements> pode ser utilizado para definir elementos nomeados. Estes elementos podem ser utilizados em qualquer componente em todo o ficheiro .xml . Para obter um exemplo de como utilizar este elemento, veja o MigApp.xml ficheiro .

Sintaxe:

<namedElements>
</namedElements>

Para obter um exemplo deste elemento, veja o MigApp.xml ficheiro .

<object>

O <elemento de objeto> representa um ficheiro ou chave de registo.

Sintaxe:

<object>
</object>

O exemplo seguinte é do MigApp.xml ficheiro:

<addObjects>
   <object>
      <location type="Registry">%HklmWowSoftware%\Microsoft\Office\16.0\Common\Migration\Office [UpgradeVersion]</location>
      <attributes>DWORD</attributes>
      <bytes>0B000000</bytes>
   </object>
   <object>
      <location type="Registry">%HklmWowSoftware%\Microsoft\Office\16.0\Common\Migration\Office [Lang]</location>
      <attributes>DWORD</attributes>
      <bytes>00000000</bytes>
      </object>
</addObjects>

<conjunto de objetos>

O <elemento objectSet> contém uma lista de padrões de objeto; por exemplo, caminhos de ficheiro, localizações de registo, etc. Todos os elementos de condições> subordinadas< são avaliados primeiro. Se todos os elementos de condições> subordinadas< devolverem FALSE, o <elemento objectSet> é avaliado como um conjunto vazio. Para cada elemento principal, só podem existir múltiplos <elementos objectSet> .

Sintaxe:

<objectSet>
</objectSet>

O exemplo seguinte é do MigUser.xml ficheiro:

<component type="Documents" context="User">
   <displayName _locID="miguser.mymusic">My Music</displayName>
      <paths>
         <path type="File">%CSIDL_MYMUSIC%</path>
      </paths>
   <role role="Data">
      <detects>           
      <detect>
         <condition>MigXmlHelper.DoesObjectExist("File","%CSIDL_MYMUSIC%")</condition>
      </detect>
   </detects>           
   <rules>
      <include filter='MigXmlHelper.IgnoreIrrelevantLinks()'>
         <objectSet>
            <pattern type="File">%CSIDL_MYMUSIC%\* [*]</pattern>
         </objectSet>
      </include>
      <merge script="MigXmlHelper.DestinationPriority()">
         <objectSet>
            <pattern type="File">%CSIDL_MYMUSIC%\ [desktop.ini]</pattern>
         </objectSet>
      </merge>
   </rules>
   </role>
</component>

<path>

Este elemento é um elemento USMT interno. Não utilize este elemento.

<caminhos>

Este elemento é um elemento USMT interno. Não utilize este elemento.

<padrão>

Este elemento pode ser utilizado para especificar vários objetos. Podem ser utilizados vários <elementos de padrão> para cada <elemento objectSet> e são combinados. Se especificar ficheiros, a Microsoft recomenda a utilização GenerateDrivePatterns com <script> . GenerateDrivePatterns é basicamente o mesmo que uma regra de <padrão> , sem a especificação da letra de unidade. Por exemplo, as duas linhas de código seguintes são semelhantes:

<pattern type="File">C:\Folder\* [Sample.doc]</pattern>
<script>MigXmlHelper.GenerateDrivePatterns("\Folder\* [Sample.doc]","Fixed"</script>
  • Número de ocorrências: Ilimitado

  • Elementos principais:<objectSet>

  • Elementos subordinados: nenhum, mas o Caminho [objeto] tem de ser válido.

Sintaxe:

<pattern type="typeID">Path [object]</pattern>
Configuração Obrigatório? Valor
tipo Sim typeID pode ser Registo, Ficheiro ou Ini. Se typeId for Ini, não é permitido um espaço entre Caminho e objeto . Por exemplo, o seguinte formato está correto quando type="Ini":
<pattern type="Ini">%WinAmp5InstPath%\Winamp.ini|WinAmp[keeponscreen]</pattern>
Caminho [objeto] Sim Um padrão de registo ou caminho de ficheiro válido, seguido de, pelo menos, um espaço, seguido de parênteses retos [] que contêm o objeto a ser migrado.
  • O caminho pode conter o caráter universal asterisco (*) ou pode ser uma variável de ambiente Reconhecido. O ponto de interrogação não pode ser utilizado como caráter universal. HKCU e HKLM podem ser utilizados para fazer referência a HKEY_CURRENT_USER e HKEY_LOCAL_MACHINE respetivamente.
  • O objeto pode conter o caráter universal asterisco (*). No entanto, o ponto de interrogação não pode ser utilizado como caráter universal. Por exemplo:
    C:\Folder\ [*] enumera todos os ficheiros em C:\Folder , mas sem subpastas de C:\Folder.
    C:\Folder* [*] enumera todos os ficheiros e subpastas de C:\Folder.
    C:\Folder\ [*.mp3] enumera todos os .mp3 ficheiros no C:\Folder.
    C:\Folder\ [Sample.doc] enumera apenas o Sample.doc ficheiro localizado em C:\Folder.
    Observação
    Se migrar um ficheiro com um caráter de parêntese reto ([ ou ]) no nome do ficheiro, tem de inserir um caráter de cenoura (^) diretamente antes do parêntese reto para que seja válido. Por exemplo, se existir um ficheiro com o nome "ficheiro].txt", <pattern type="File">c:\documents\mydocs [file^].txt]</pattern> tem de ser especificado em vez de <pattern type="File">c:\documents\mydocs [file].txt]</pattern>.

Por exemplo:

  • Para migrar uma única chave de registo:

    <pattern type="Registry">HKLM\Software\Microsoft\Windows\CurrentVersion\Internet Settings\Cache [Persistent]</pattern>
    
  • Para migrar a C:\EngineeringDrafts pasta e as subpastas da unidade C:

    <pattern type="File">C:\EngineeringDrafts\* [*]</pattern>
    
  • Para migrar apenas a C:\EngineeringDrafts pasta, excluindo as subpastas, da unidade C:

    Redirecionar ficheiros e definições

  • Para migrar o ficheiro de Sample.docC:\EngineeringDrafts:

    <pattern type="File"> C:\EngineeringDrafts\ [Sample.doc]</pattern>
    
  • Para migrar o Sample.doc ficheiro de onde já existe no padrão de utilização da unidade C: da seguinte forma. Se existirem vários ficheiros com o mesmo nome na unidade C:, todos estes ficheiros serão migrados.

    <pattern type="File"> C:\* [Sample.doc] </pattern>
    
  • Para obter mais exemplos sobre como utilizar este elemento, veja Excluir ficheiros e definições, Redirecionar ficheiros e definições, Incluir ficheiros e definições e Exemplos XML personalizados.

<processamento>

Este elemento pode ser utilizado para executar um script durante um ponto específico no processo de migração. Os valores devolvidos não são esperados a partir dos scripts especificados. Se existirem valores devolvidos, estes são ignorados.

  • Número de ocorrências: ilimitadas

  • Elementos principais:<regras>

  • Elemento subordinado necessário:<script>

Sintaxe:

<processing when="pre-scan|scan-success|post-scan|pre-apply|apply-success|post-apply">
</processing>
Configuração Obrigatório? Valor
quando Sim Indica quando o script deve ser executado. Este valor pode ser um dos seguintes valores:
  • pré-análise significa antes do início do processo de análise.
  • scan-success significa que após o processo de análise ser concluído com êxito.
  • após a análise significa que, após a conclusão do processo de análise, se foi ou não bem-sucedido.
  • pré-aplicar significa antes do início do processo de aplicação.
  • apply-success significa que o processo de aplicação é concluído com êxito.
  • pós-aplicação significa que após a conclusão do processo de aplicação, quer tenha sido ou não bem-sucedido.

<plug-in>

Este elemento é um elemento USMT interno. Não utilize este elemento.

<função>

O <elemento de função> é necessário num ficheiro de.xml personalizado. Quando o <elemento de função> é especificado, pode ser criado um componente concreto. O componente é definido pelos parâmetros especificados ao nível do <componente> e pela função especificada aqui.

Sintaxe:

<role role="Container|Binaries|Settings|Data">
</role>
Configuração Obrigatório? Valor
função Sim Define a função para o componente. A função pode ser uma das seguintes:
  • Contentor
  • Binários
  • Configurações
  • Dados
Pode especificar um dos seguintes itens:
  1. Até três <elementos de função> num <componente> – um elemento de função "Binários", um elemento de função "Definições" e um elemento de função "Dados". Estes parâmetros não alteram o comportamento da migração. O seu único objetivo é ajudar a categorizar as definições que estão a migrar. Estes <elementos de função> podem ser aninhados, mas cada elemento aninhado tem de ser do mesmo parâmetro de função.
  2. Um elemento de função> "Contentor"< dentro de um <elemento de componente>. Neste caso, não é possível especificar quaisquer elementos de regras> subordinados<, apenas outros <elementos do componente>. Cada elemento de componente> subordinado< tem de ter o mesmo tipo que o elemento do componente> principal<. Por exemplo:
              
              
              <component context="UserAndSystem" type="Application">
<displayName _locID="migapp.msoffice2016">Microsoft Office 2016</displayName>
<nome do ambiente="GlobalEnv" />
<role role="Container">
<detection name="AnyOffice2016Version" />
<detection name="Word2016" />
<!--
Definições Comuns do Office 2016
-->
<component context="UserAndSystem" type="Application">

O exemplo seguinte é do MigUser.xml ficheiro . Para obter mais exemplos, veja o MigApp.xml ficheiro:

<component type="System" context="User">
   <displayName _locID="miguser.startmenu">Start Menu</displayName>
   <paths>
      <path type="File">%CSIDL_STARTMENU%</path>
   </paths>
   <role role="Settings">
      <detects>           
         <detect>
            <condition>MigXmlHelper.DoesObjectExist("File","%CSIDL_STARTMENU%")</condition>
         </detect>
      </detects>           
   <rules>
      <include filter='MigXmlHelper.IgnoreIrrelevantLinks()'>
         <objectSet>
            <pattern type="File">%CSIDL_STARTMENU%\* [*]</pattern>
         </objectSet>
      </include>
      <merge script="MigXmlHelper.DestinationPriority()">
         <objectSet>
            <pattern type="File">%CSIDL_STARTMENU% [desktop.ini]</pattern>
            <pattern type="File">%CSIDL_STARTMENU%\* [*]</pattern>
         </objectSet>
      </merge>
   </rules>
   </role>
</component>

<regras>

O <elemento rules> é necessário num ficheiro de.xml personalizado. Este elemento contém regras que são executadas durante a migração se o elemento do componente> principal< estiver selecionado, a menos que o <elemento de condições> subordinadas, se estiver presente, seja avaliado como FALSO. Para cada <elemento de regras>, podem existir vários elementos de regras> subordinados<.

Sintaxe:

<rules name="ID" context="User|System|UserAndSystem">
</rules>
Configuração Obrigatório? Valor
name Sim, quando <as regras> são subordinadas com< o nomeElements>
Não, quando <as regras> são subordinadas a qualquer outro elemento
Quando o ID é especificado, os elementos subordinados não são processados. Em vez disso, todos os outros <elementos de regras> com o mesmo nome que são declarados em< namedElements são processados>.
contexto Não
(predefinição = UserAndSystem)
Define o âmbito deste parâmetro: se pretende processar este componente no contexto do utilizador específico, em todo o sistema operativo ou ambos.
O maior âmbito possível é definido pelo elemento de componente. Por exemplo, se um <elemento de componente> tiver um contexto de Utilizador e um <elemento de regras> tiver um contexto de UserAndSystem, o <elemento de regras> funcionará como se tivesse um contexto de Utilizador. Se <as regras> tivessem um contexto de Sistema, funcionaria como <se as regras> não existissem.
  • Utilizador: avalia as variáveis para cada utilizador.
  • Sistema: avalia as variáveis apenas uma vez para o sistema.
  • UserAndSystem: avalia as variáveis para todo o sistema operativo e para cada utilizador.

O exemplo seguinte é do MigUser.xml ficheiro:

<component type="Documents" context="User">
   <displayName _locID="miguser.mymusic">My Music</displayName>
      <paths>
         <path type="File">%CSIDL_MYMUSIC%</path>
      </paths>
   <role role="Data">
      <detects>           
      <detect>
         <condition>MigXmlHelper.DoesObjectExist("File","%CSIDL_MYMUSIC%")</condition>
      </detect>
   </detects>           
   <rules>
      <include filter='MigXmlHelper.IgnoreIrrelevantLinks()'>
         <objectSet>
            <pattern type="File">%CSIDL_MYMUSIC%\* [*]</pattern>
         </objectSet>
      </include>
      <merge script="MigXmlHelper.DestinationPriority()">
         <objectSet>
            <pattern type="File">%CSIDL_MYMUSIC%\ [desktop.ini]</pattern>
         </objectSet>
      </merge>
   </rules>
   </role>
</component>

<script>

O valor devolvido exigido pelo <script> depende do elemento principal.

Número de ocorrências: Uma vez para <variável>, ilimitado para <objectSet> e <processamento>

Elementos principais:<objectSet>, <variável>, <processamento>

Elementos subordinados: nenhum

Funções de sintaxe e auxiliar:

  • Sintaxe Geral: <script>ScriptWithArguments</script>

  • GetStringContent pode ser utilizado quando <o script> está dentro <da variável>.

    Sintaxe: <script>MigXmlHelper.GetStringContent("ObjectType","EncodedLocationPattern", "ExpandContent")</script>

    Exemplo: <script>MigXMLHelper.GetStringContent("Registry","HKLM\Software\MyApp\Installer [EXEPATH]")</script>

  • GenerateUserPatterns pode ser utilizado quando <o script> está dentro <de objectSet>.

    Sintaxe: <script>MigXmlHelper.GenerateUserPatterns("ObjectType","EncodedLocationPattern","ProcessCurrentUser")</script>

    Exemplo: <script>MigXmlHelper.GenerateUserPatterns ("File","%USERPROFILE%\* [*.doc]", "FALSE")</script>

  • GenerateDrivePatterns pode ser utilizado quando <o script> está dentro <de objectSet>.

    Sintaxe: <script>MigXmlHelper.GenerateDrivePatterns("PatternSegment","DriveType")</script>

    Exemplo: <script>MigXmlHelper.GenerateDrivePatterns("* [sample.doc]", "Fixed")</script>

  • Os scripts de execução simples podem ser utilizados com <elementos de script> que estão dentro <dos elementos de processamento> : AskForLogoff, ConvertToShortFileName, KillExplorer, RemoveEmptyDirectories, RestartExplorer, RegisterFonts, StartService, StopService, SyncSCM.

    Sintaxe: <script>MigXmlHelper.ExecutingScript</script>

    Exemplo: <script>MigXmlHelper.KillExplorer()</script>

Configuração Obrigatório? Valor
ScriptWithArguments Sim Um script seguido de qualquer número de argumentos de cadeia que são separados por uma vírgula e entre parênteses. Por exemplo, MyScripts.AScript ("Arg1","Arg2").
O script é chamado para cada objeto enumerado pelos conjuntos de objetos na <regra de inclusão> . O script de filtro devolve um valor Booleano. Se o valor devolvido for VERDADEIRO, o objeto será migrado. Se for FALSO, não será migrado.
O valor devolvido exigido pelo <script> depende do elemento principal.
  • Quando utilizado na <variável>, o valor devolvido tem de ser uma cadeia.
  • Quando utilizado no <objectSet>, o valor devolvido tem de ser uma matriz bidimensional de cadeias.
  • Quando utilizado na <localização>, o valor devolvido tem de ser uma localização válida que se alinhe com o atributo de tipo de <localização>. Por exemplo, se <location type="File",> o elemento de script subordinado, se especificado, tem de ser uma localização de ficheiro válida.
    Observação
    Se migrar um ficheiro com um caráter de parêntese reto ([ ou ]) no nome do ficheiro, insira o caráter de cenoura (^) diretamente antes do parêntese reto para que seja válido. Por exemplo, se existir um ficheiro com o nome "ficheiro].txt", especifique <pattern type="File">c:\documents\mydocs [file^].txt]</pattern> em vez de <pattern type="File">c:\documents\mydocs [file].txt]</pattern>.

Exemplos:

Para migrar o ficheiro Sample.doc a partir de qualquer unidade no computador de origem, utilize <o script> da seguinte forma. Se existirem múltiplos ficheiros com o mesmo nome, todos esses ficheiros serão migrados.

<script>MigXmlHelper.GenerateDrivePatterns("* [sample.doc]", "Fixed")</script> 

Para obter mais exemplos sobre como utilizar este elemento, veja Excluir Ficheiros e Definições, Redirecionar Ficheiros e Definições e Exemplos XML Personalizados.

<funções de script>

As seguintes funções podem ser utilizadas com o <elemento script>

Funções de geração de cadeias e padrões

Estas funções devolvem uma cadeia ou um padrão.

  • GetStringContent

    GetStringContent pode ser utilizado com <elementos de script> que estão dentro <de elementos variáveis> . Se possível, esta função devolve a representação de cadeia do objeto especificado. Caso contrário, devolve NULL. Para objetos de ficheiro, esta função devolve sempre NULL.

    Sintaxe: GetStringContent("ObjectType","EncodedLocationPattern", "ExpandContent")

    Configuração Obrigatório? Valor
    ObjectType Sim O tipo de objeto. Pode ser Registo ou Ini (para um ficheiro de.ini ).
    EncodedLocationPattern Sim
    • Se o tipo de objeto for Registo, EncodedLocationPattern tem de ser um caminho de registo válido. Por exemplo, HKLM\SOFTWARE\MyKey[].
    • Se o tipo de objeto for Ini, EncodedLocationPattern tem de estar no seguinte formato:
      IniFilePath|SectionName[SettingName]
    ExpandirContento Não (predefinição=VERDADEIRO) Pode ser VERDADEIRO ou FALSO. Se for FALSO, a localização especificada não é expandida antes de ser devolvida.

    Por exemplo:

    <variable name="MSNMessengerInstPath">
    <script>MigXmlHelper.GetStringContent("Registry","%HklmWowSoftware%\Microsoft\MSNMessenger [InstallationDirectory]")</script>
    </variable>
    
  • GenerateDrivePatterns

    A GenerateDrivePatterns função itera todas as unidades disponíveis e seleciona as que correspondem ao tipo de unidade pedido. Em seguida, concatena as unidades selecionadas com a parte final de PatternSegment para formar um padrão de ficheiro codificado completo. Por exemplo, se PatternSegment for Path [file.txt] e DriveType for Fixed, a função gera C:\Path [file.txt]e outros padrões se existirem unidades fixas que não C:. As variáveis de ambiente não podem ser especificadas com esta função. GenerateDrivePatternspode ser utilizado com <elementos de script> que estão dentro <de objectSet> que estão dentro <de incluir exclusão>/<>.

    Sintaxe: GenerateDrivePatterns("PatternSegment","DriveType")

    Configuração Obrigatório? Valor
    PatternSegment Sim O sufixo de um padrão codificado. O valor é concatenado com uma especificação de unidade, como "c:", para formar um padrão de ficheiro codificado completo. Por exemplo, "* [*.doc]". PatternSegment não pode ser uma variável de ambiente.
    DriveType Sim O tipo de unidade para o qual os padrões devem ser gerados. Pode especificar um dos seguintes itens:
    • Fixo
    • CDROM
    • Amovível
    • Remoto

    Veja o último componente no MigUser.xml ficheiro para obter um exemplo deste elemento.

  • GenerateUserPatterns

    A GenerateUserPatterns função itera através de todos os utilizadores que estão a ser migrados, excluindo o utilizador atualmente processado se <ProcessCurrentUser> for FALSE e expande o padrão especificado no contexto de cada utilizador. Por exemplo, se os utilizadores A, B e C tiverem perfis no C:\Users, ao chamar GenerateUserPattens('File','%userprofile% [*.doc]','TRUE'), a função auxiliar gera os três padrões seguintes:

    • "C:\Users\A\* [*.doc]"

    • "C:\Users\B\* [*.doc]"

    • "C:\Users\C\* [*.doc]"

    Sintaxe: GenerateUserPatterns("ObjectType","EncodedLocationPattern","ProcessCurrentUser")

    Configuração Obrigatório? Valor
    ObjectType Sim Define o tipo de objeto. Pode ser Ficheiro ou Registo.
    EncodedLocationPattern Sim O padrão de localização. As variáveis de ambiente são permitidas.
    ProcessCurrentUser Sim Pode ser VERDADEIRO ou FALSO. Indica se os padrões devem ser gerados para o utilizador atual.

Exemplo:

Se GenerateUserPattens('File','%userprofile% [*.doc]','FALSE') for chamada enquanto a USMT está a processar o utilizador A, esta função só gera padrões para os utilizadores B e C. Esta função auxiliar pode ser utilizada para criar regras complexas. Por exemplo, para migrar todos os .doc ficheiros do computador de origem, mas se o utilizador X não for migrado, não migre nenhum dos ficheiros do .doc perfil do utilizador X.

O exemplo seguinte é código de exemplo para este cenário. O primeiro <elemento de regras> migra todos os .doc ficheiros no computador de origem, exceto os existentes no C:\Users. Os elementos das segundas< regras> migram todos os .doc ficheiros, C:\Users exceto os .doc ficheiros nos perfis dos outros utilizadores. Uma vez que o segundo <elemento de regras> é processado em cada contexto de utilizador migrado, o resultado final é o comportamento pretendido. O resultado final é o esperado.

<rules context="System">
  <include>
    <objectSet>
      <script>MigXmlHelper.GenerateDrivePatterns ("* [*.doc]", "Fixed")</script>
    </objectSet>
  </include>
  <exclude>
    <objectSet>
      <pattern type="File">%ProfilesFolder%\* [*.doc]</pattern>
    </objectSet>
  </exclude>
</rules>
<rules context="User">
  <include>
    <objectSet>
      <pattern type="File">%ProfilesFolder%\* [*.doc]</pattern>
    </objectSet>
  </include>
  <exclude>
    <objectSet>
      <script>MigXmlHelper.GenerateUserPatterns ("File","%userprofile%\* [*.doc]", "FALSE")</script>
    </objectSet>
  </exclude>
</rules>

MigXmlHelper.GenerateDocPatterns

A MigXmlHelper.GenerateDocPatterns função auxiliar invoca o localizador de documentos para analisar o sistema quanto a todos os ficheiros que podem ser migrados. Pode ser invocado no contexto do Sistema ou do Utilizador para focar a análise.

Configuração Obrigatório? Valor
ScanProgramFiles Não (predefinição = FALSO) Pode ser VERDADEIRO ou FALSO. O parâmetro ScanProgramFiles determina se o localizador de documentos analisa ou não o diretório Ficheiros de Programa para recolher extensões de ficheiro registadas para aplicações conhecidas. Por exemplo, quando definido como VERDADEIRO , deteta e migra ficheiros.jpg no diretório do Photoshop, se .jpg for uma extensão de ficheiro registada no Photoshop.
IncludePatterns Não (predefinição = VERDADEIRO) Pode ser VERDADEIRO ou FALSO. TRUE gera padrões de inclusão e pode ser adicionado sob o <elemento de inclusão> . FALSE gera padrões de exclusão e pode ser adicionado sob o <elemento de exclusão> .
SystemDrive Não (predefinição = FALSO) Pode ser VERDADEIRO ou FALSO. Se FOR VERDADEIRO, restringe todos os padrões à unidade do sistema.
 <!-- This component migrates data in user context -->
  <component type="Documents" context="User">
    <displayName>MigDocUser</displayName>
    <role role="Data">
      <rules>
        <include filter='MigXmlHelper.IgnoreIrrelevantLinks()'>
          <objectSet>
            <script>MigXmlHelper.GenerateDocPatterns ("false")</script>
          </objectSet>
        </include>
        <exclude>
          <objectSet>
           <script>MigXmlHelper.GenerateDocPatterns ("false", "false", "false")</script>
          </objectSet>
        </exclude>
      </rules>
    </role>
  </component>

Execução simples de scripts

Os scripts seguintes não têm nenhum valor devolvido. Os seguintes erros podem ser utilizados com <elementos de script> que estão dentro <dos elementos de processamento>

  • AskForLogoff(). Solicitações que o utilizador termine sessão no final da migração. Por exemplo:

    <processing when="apply-success">
      <script>MigXmlHelper.AskForLogoff()</script>
    </processing>
    
  • ConvertToShortFileName(RegistryEncodedLocation). Se RegistryEncodedLocation for o caminho completo de um ficheiro existente, esta função converte o ficheiro no nome de ficheiro abreviado e, em seguida, atualiza o valor do registo.

  • KillExplorer(). Para Explorer.exe para o contexto de utilizador atual. Parar Explorer.exe permite o acesso a determinadas chaves e ficheiros que são mantidos abertos quando Explorer.exe está em execução. Por exemplo:

    <processing when="pre-apply">
      <script>MigXmlHelper.KillExplorer()</script>
    </processing>
    
  • RegisterFonts(FileEncodedLocation). Regista o tipo de letra especificado ou todos os tipos de letra no diretório especificado. Por exemplo:

 <processing when="apply-success">
   <script>MigXmlHelper.RegisterFonts("%CSIDL_COMMON_FONTS%")</script>
 </processing>
  • RemoveEmptyDirectories (DirectoryEncodedPattern). Elimina quaisquer diretórios vazios que correspondam a DirectoryEncodedPattern no computador de destino.

  • RestartExplorer(). Reinicia Explorer.exe no final da migração. Por exemplo:

    <processing when="post-apply">
      <script>MigXmlHelper.RestartExplorer()</script>
    </processing>
    
  • StartService (ServiceName, OptionalParam1, OptionalParam2,...). Inicia o serviço identificado pelo ServiceName. ServiceName é a subchave no HKLM\System\CurrentControlSet\Services que contém os dados do serviço especificado. Os parâmetros opcionais, se existirem, são transmitidos para a API StartService. Para obter mais informações, veja o artigo Função StartServiceA (winsvc.h ).

  • StopService (ServiceName). Para o serviço identificado pelo ServiceName. ServiceName é a subchave no HKLM\System\CurrentControlSet\Services que contém os dados do serviço especificado.

  • SyncSCM(ServiceShortName). Lê o valor Tipo de início do registo (HKLM\System\CurrentControlSet\Services\ServiceShortName [Start]) depois de o valor ser alterado pelo motor de migração e, em seguida, sincroniza o Service Control Manager (SCM) com o novo valor.

<Texto>

O <elemento de texto> pode ser utilizado para definir um valor para quaisquer variáveis de ambiente que estejam dentro de um dos ficheiros de.xml de migração.

Sintaxe:

<text>NormalText</text>
Configuração Valor
Texto Normal Este texto é interpretado como texto normal.

Por exemplo:

<variable name="QuickTime5or6DataSys">
  <text>%CSIDL_COMMON_APPDATA%\QuickTime</text> 
</variable>

<incondicionalExclude>

O <elemento incondicionalExclude> exclui os ficheiros especificados e os valores de registo da migração, independentemente das outras regras de inclusão em qualquer um dos ficheiros de.xml de migração ou no Config.xml ficheiro. Os objetos aqui declarados não são migrados porque este elemento tem precedência sobre todas as outras regras. Por exemplo, mesmo que existam regras de inclusão> explícitas< para incluir .mp3 ficheiros, se forem excluídos com esta opção, não serão migrados.

Utilize este elemento para excluir todos os .mp3 ficheiros do computador de origem. Em alternativa, se efetuar C:\UserData uma cópia de segurança com outro método, toda a pasta pode ser excluída da migração. Utilize este elemento com cuidado. Se uma aplicação precisar de um ficheiro excluído, a aplicação poderá não funcionar corretamente no computador de destino.

  • Número de ocorrências: Ilimitado.

  • Elementos principais:<regras>

  • Elementos subordinados:<objectSet>

Sintaxe:

<unconditionalExclude></unconditionalExclude>

O ficheiro .xml seguinte exclui todos os .mp3 ficheiros da migração. Para obter exemplos adicionais sobre como utilizar este elemento, veja Excluir Ficheiros e Definições.

<migration urlid="http://www.microsoft.com/migration/1.0/migxmlext/excludefiles">
  <component context="System" type="Documents">
        <displayName>Test</displayName>
        <role role="Data">
            <rules>
             <unconditionalExclude>
                        <objectSet>
    <script>MigXmlHelper.GenerateDrivePatterns ("* [*.mp3]", "Fixed")</script>
                        </objectSet> 
             </unconditionalExclude>
            </rules>
        </role>
    </component>
</migration>

<variável>

O <elemento variável> é necessário num <elemento de ambiente> . Para cada <elemento de variável> , tem de existir um <objetoConjunto>, <script> ou <elemento de texto> . O conteúdo do <elemento variável> atribui um valor de texto à variável de ambiente. Este elemento tem as três opções seguintes:

  1. Se o elemento de< variável> contiver um <elemento de texto>, o valor do elemento de variável é o valor do elemento de< texto>.

  2. Se o <elemento variável> contiver um <elemento de script> e a invocação do script produzir uma cadeia não nula, o valor do elemento variável<> será o resultado da invocação do script.

  3. Se o <elemento variável> contiver um <elemento objectSet> e a avaliação do <elemento objectSet> produzir pelo menos um padrão de objeto, o valor do primeiro objeto para corresponder ao padrão de objeto resultante é o valor do elemento variável.

Sintaxe:

<variable name="ID" remap=TRUE|FALSE>
</variable>
Configuração Obrigatório? Valor
name Sim ID é um valor de cadeia que é o nome utilizado para referenciar a variável de ambiente. A Microsoft recomenda que o ID comece com o nome do componente para evitar colisões no espaço de nomes. Por exemplo, se o nome do componente for MyComponent e se pretender uma variável que seja o caminho de instalação do componente, MyComponent.InstallPathpoderá ser especificado.
remapear Não, predefinição = FALSO Especifica se pretende avaliar esta variável de ambiente como uma variável de ambiente de remapeamento. Os objetos localizados num caminho abaixo do valor desta variável de ambiente são movidos automaticamente para onde a variável de ambiente aponta no computador de destino.

O exemplo seguinte é do MigApp.xml ficheiro:

<environment>
   <variable name="HklmWowSoftware">
      <text>HKLM\Software</text>
   </variable>
   <variable name="WinZip8or9or10Exe">
      <script>MigXmlHelper.GetStringContent("Registry","%HklmWowSoftware%\Microsoft\Windows\CurrentVersion\App Paths\winzip32.exe []")</script>
   </variable>
</environment>

<version>

O <elemento de versão> define a versão do componente, mas não afeta a migração.

  • Número de ocorrências: zero ou um

  • Elementos principais:<componente>

  • Elementos subordinados: nenhum

Sintaxe:

<version>ComponentVersion</version>
Configuração Obrigatório? Valor
ComponentVersion Sim A versão do componente, que pode conter padrões.

Por exemplo:

<version>4.*</version>

<windowsObjects>

O <elemento windowsObjects> destina-se apenas à utilização interna do USMT. Não utilize este elemento.

Apêndice

Especificar localizações

  • Especificar localizações codificadas. A localização codificada utilizada em todas as funções auxiliares é uma representação de cadeia inequívoca para o nome de um objeto. A localização codificada é composta pela parte do nó, opcionalmente seguida pela folha entre parênteses retos. Este formato faz uma distinção clara entre nós e folhas.

    Por exemplo, especifique o ficheiro C:\Windows\Notepad.exe da seguinte forma: c:\Windows[Notepad.exe]. Da mesma forma, especifique o diretório C:\Windows\System32 da seguinte forma: c:\Windows\System32. (Repare na ausência da [] construção.)

    Representar o registo é semelhante. O valor predefinido de uma chave de registo é representado como uma construção vazia [] . Por exemplo, o valor predefinido da chave de HKLM\SOFTWARE\MyKey registo é HKLM\SOFTWARE\MyKey[].

  • Especificar padrões de localização. Especificar um padrão de localização é semelhante a especificar uma localização real. A exceção é que tanto o nó como a parte de folha aceitam padrões. No entanto, um padrão do nó não se estende até à folha.

    Por exemplo, o padrão c:\Windows\* corresponde ao diretório do Windows e a todos os subdiretórios, mas não corresponde a nenhum dos ficheiros nesses diretórios. Para corresponder também aos ficheiros, c:\Windows\*[*] tem de ser especificado.

Funções internas do USMT

As seguintes funções destinam-se apenas à utilização interna do USMT. Não os utilize num ficheiro de.xml .

  • AntiAlias

  • ConverterScreenSaver

  • ConvertShowIEOnDesktop

  • ConvertToOfficeLangID

  • MigrateActiveDesktop

  • MigrateAppearanceUPM

  • MigrateDisplayCS

  • MigrateDisplaySS

  • MigrateIEAutoSearch

  • MigrateMouseUPM

  • MigrateSoundSysTray

  • MigrateTaskBarSS

  • SetPstPathInMapiStruc

Etiquetas de versão válidas

As seguintes etiquetas de versão podem ser utilizadas com várias funções auxiliares:

  • "CompanyName"

  • "FileDescription"

  • "FileVersion"

  • "InternalName"

  • "LegalCopyright"

  • "OriginalFilename"

  • "ProductName"

  • "ProductVersion"

As seguintes etiquetas de versão contêm valores que podem ser comparados:

  • "FileVersion"

  • "ProductVersion"