Biblioteca de elementos XML

En este artículo se describen los elementos XML y las funciones auxiliares que se pueden usar para crear archivos de migración.xml para usarlos con la Herramienta de migración de estado de usuario (USMT). En este artículo se asume un conocimiento básico de XML.

Además de los elementos XML y las funciones auxiliares, en este artículo:

  • Describe cómo especificar patrones de ubicaciones y ubicaciones codificadas.
  • Las funciones que son solo para USO interno de USMT.
  • Etiquetas de versión que se pueden usar con funciones auxiliares.

Elementos y funciones auxiliares

En la tabla siguiente se describen los elementos XML y las funciones auxiliares que se pueden usar con USMT.

Elementos A-K Elementos L-Z Funciones auxiliares
<addObjects>
<Atributos>
<Bytes>
<Commandline>
<Componente>
<Condición>
<Condiciones>
<Contenido>
<contentModify>
<Descripción>
<destinationCleanup>
<Detectar>
<Detecta>
<Detección>
<Displayname>
<Ambiente>
<Excluir>
<excludeAttributes>
<Extensiones>
<Extensión>
<externalProcess>
<icon>
<include>
<includeAttribute>
<Biblioteca>
<Ubicación>
<locationModify>
<_locDefinition>
<Fabricante>
<Combinar>
<Migración>
<namedElements>
<Objeto>
<objectSet>
<Camino>
<Caminos>
<patrón>
<Tratamiento>
<Plugin>
<Papel>
<Reglas>
<Guión>
<Texto>
<unconditionalExclude>
<Variable>
<Versión>
<windowsObjects>
<funciones de condición>
<funciones de contenido>
<contentModify> (funciones)
<incluir> y <excluir> funciones de filtro
<locationModify> (funciones)
<funciones de combinación>
<funciones de script>
Funciones internas de USMT

<addObjects>

El <elemento addObjects> emula la existencia de uno o varios objetos en el equipo de origen. Los elementos de objeto> secundarios< proporcionan los detalles de los objetos emulados. Si el contenido es un <elemento de script> , el resultado de la invocación es una matriz de objetos.

Sintaxis:

<addObjects>
</addObjects>

El ejemplo siguiente es del MigApp.xml archivo :

<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>

El <elemento attributes> define los atributos de una clave o archivo del Registro.

  • Número de repeticiones: una vez para cada <objeto>

  • Elementos primarios:<object>

  • Elementos secundarios: none

Sintaxis:

<attributes>Content</attributes>
Configuración ¿Es obligatorio? Valor
Contenido El contenido depende del tipo de objeto especificado.
  • Para los archivos, el contenido puede ser una cadena que contiene cualquiera de los atributos siguientes separados por comas:
    • Archive
    • Solo lectura
    • Sistema
    • Hidden
  • En el caso de las claves del Registro, el contenido puede ser uno de los siguientes tipos:
    • Ninguna
    • Cadena
    • ExpandString
    • Binario
    • Dword
    • REG_SZ

El ejemplo siguiente es del MigApp.xml archivo :

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

<Bytes>

El <elemento bytes> solo se puede especificar para los archivos porque, si <la ubicación> corresponde a una clave del Registro o a un directorio, <se omiten los bytes> .

  • Número de repeticiones: cero o uno

  • Elementos primarios:<object>

  • Elementos secundarios: none

Sintaxis:

<bytes string="Yes|No" expand="Yes|No">Content</bytes>
Configuración ¿Es obligatorio? Valor
string No, el valor predeterminado es No. Determina si el contenido debe interpretarse como una cadena o como bytes.
expand No (valor predeterminado = Sí Cuando el parámetro expand es , el contenido del <elemento bytes> se expande primero en el contexto del equipo de origen y, a continuación, se interpreta.
Contenido Depende del valor de la cadena.
  • Cuando la cadena es : el contenido del <elemento bytes> se interpreta como una cadena.
  • Cuando la cadena es No: el contenido del <elemento bytes> se interpreta como bytes. Cada dos caracteres representan el valor hexadecimal de un byte. Por ejemplo, 616263 es la representación de la abc cadena ANSI. Una representación completa de la cadena abc UNICODE, incluido el terminador de cadena, sería: 6100620063000000.

El ejemplo siguiente es del MigApp.xml archivo :

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

<Commandline>

El <elemento commandLine> se puede usar para iniciar o detener un servicio o una aplicación antes o después de ejecutar las herramientas ScanState y LoadState .

  • Número de repeticiones: ilimitado

  • Elementos primarios:<externalProcess>

  • Elementos secundarios: none

Sintaxis:

<commandLine>CommandLineString</commandLine>
Configuración ¿Es obligatorio? Valor
CommandLineString Línea de comandos válida.

<Componente>

El <elemento de componente> es necesario en un archivo de.xml personalizado. Este elemento define la construcción más básica de un archivo de migración.xml . Por ejemplo, en el MigApp.xml archivo, Microsoft Office 2016 es un componente que contiene otro componente, Microsoft Office Access 2016. Los elementos secundarios se pueden usar para definir el componente.

Un componente se puede anidar dentro de otro componente; es decir, el elemento de< componente> puede ser un elemento secundario del <elemento role> dentro del elemento de< componente> en dos casos:

  1. Cuando el elemento del componente> primario< es un contenedor
  2. Si el elemento de componente> secundario< tiene el mismo rol que el elemento del componente> primario<.

Sintaxis:

<component type="System|Application|Device|Documents" context="User|System|UserAndSystem" defaultSupported="TRUE|FALSE|YES|NO"
hidden="Yes|No">
</component>
Configuración ¿Es obligatorio? Valor
tipo Los siguientes elementos se pueden usar para agrupar la configuración y definir el tipo del componente.
  • Sistema: Configuración del sistema operativo. Este tipo define todos los componentes de Windows.
    Cuando type="System" y defaultSupported="FALSE", la configuración no se migra a menos que haya un componente equivalente en los archivos .xml especificados en la LoadState.exe línea de comandos. Por ejemplo, el archivo predeterminado MigSys.xml contiene componentes con type="System" y defaultSupported="FALSE". Si se especifica este archivo en la ScanState.exe línea de comandos, el archivo también debe especificarse en la LoadState.exe línea de comandos para la configuración que se va a migrar. El archivo debe especificarse porque la LoadState.exe herramienta debe detectar un componente equivalente. Es decir, el componente debe tener el mismo urlid de migración del archivo .xml y un nombre para mostrar idéntico. De lo contrario, la herramienta LoadState no migra esa configuración del almacén. Esta configuración es útil porque se puede usar una tienda para equipos de destino que sean la misma versión o diferente de Windows que el equipo de origen.
  • Aplicación: Configuración de una aplicación.
  • Dispositivo: Configuración de un dispositivo.
  • Documentos: Especifica los archivos.
Contexto No
Default = UserAndSystem
Define el ámbito de este parámetro; es decir, si se va a procesar este componente en el contexto del usuario específico, en todo el sistema operativo o en ambos.
El mayor ámbito posible lo establece el elemento de< componente>. Por ejemplo, si un <elemento de componente> tiene un contexto de User y un <elemento rules> tenía un contexto de UserAndSystem, el <elemento rules> actuaría como si tuviera un contexto de User. Si un <elemento rules> tiene un contexto de System, actuaría como si el <elemento rules> no estuviera allí.
  • Usuario: evalúa el componente para cada usuario.
  • Sistema: evalúa el componente solo una vez para el sistema.
  • UserAndSystem: evalúa el componente para todo el sistema operativo y cada usuario.
defaultSupported No
(valor predeterminado = TRUE)
Puede ser true, falso, o no. Si este parámetro es FALSE (o NO), el componente no se migra a menos que haya un componente equivalente en el equipo de destino.
Cuando type="System" y defaultSupported="FALSE", la configuración no se migra a menos que haya un componente equivalente en los archivos .xml especificados en la LoadState.exe línea de comandos. Por ejemplo, el archivo predeterminado MigSys.xml contiene componentes con type="System" y defaultSupported="FALSE". Si se especifica este archivo en la ScanState.exe línea de comandos, el archivo también debe especificarse en la LoadState.exe línea de comandos para la configuración que se va a migrar. El archivo debe especificarse en ambas líneas de comandos porque la herramienta LoadState debe detectar un componente equivalente. Es decir, el componente debe tener el mismo urlid de migración del archivo .xml y un nombre para mostrar idéntico o la herramienta LoadState no migra esa configuración del almacén. Esta configuración es útil porque se puede usar una tienda para equipos de destino que sean la misma versión o diferente de Windows que el equipo de origen.
Oculto Este parámetro es solo para uso interno de USMT.

Para obtener un ejemplo, consulte cualquiera de los archivos de.xml de migración predeterminados.

<Condición>

Aunque el <elemento condition> de los <elementos detect>, <objectSet> y <addObjects> sigue siendo compatible, Microsoft recomienda dejar de usar el <elemento condition> porque podría estar en desuso en versiones futuras de USMT. Si el <elemento condition> está en desuso, requeriría una reescritura de los scripts que usen el <elemento condition> . En su lugar, si es necesario usar una condición dentro de los <elementos objectSet> y <addObjects>, Microsoft recomienda usar el elemento conditions> más eficaz<. El <elemento conditions> permite la formulación de instrucciones booleanas complejas.

El <elemento condition> tiene un resultado booleano. Este elemento se puede usar para especificar las condiciones en las que se evalúa el elemento primario. Si alguna de las condiciones actuales devuelve FALSE, no se evalúa el elemento primario.

  • Número de repeticiones: ilimitado.

  • Elementos primarios:<conditions>, <detect>, <objectSet>, <addObjects>

  • Elementos secundarios: none

  • Funciones auxiliares: Las siguientes <funciones de condición> se pueden usar con este elemento: DoesOSMatch, IsNative64Bit(), , IsOSLaterThan, IsOSEarlierThanDoesObjectExist, DoesFileVersionMatch, IsFileVersionAbove, IsSystemContextIsFileVersionBelow, DoesStringContentEqual, DoesStringContentContain, IsSameObject, IsSameContenty IsSameStringContent.

Sintaxis:

<condition negation="Yes|No">ScriptName</condition>
Configuración ¿Es obligatorio? Valor
Negación No
Valor predeterminado = No
"Sí" invierte el valor True/False de la condición.
ScriptName Script que se define en esta sección de migración.

Por ejemplo, en el ejemplo de código siguiente, los <elementos de condición>, A y B, se unen mediante el operador AND porque están en secciones de condiciones> independientes<:

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

Sin embargo, en el ejemplo de código siguiente, los <elementos de condición> , A y B, se unen por el operador OR porque están en la misma <sección de condiciones> .

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

<funciones de condición>

Las <funciones de condición> devuelven un valor booleano. Estos elementos se pueden usar en <condiciones addObjects> .

Funciones de versión del sistema operativo

  • DoesOSMatch

    Todas las coincidencias no distinguen mayúsculas de minúsculas.

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

    Configuración ¿Es obligatorio? Valor
    OSType El único valor válido para esta configuración es NT. Sin embargo, esta configuración debe establecerse para que las funciones de <condición> funcionen correctamente.
    OSVersion La versión principal, la versión secundaria, el número de compilación y la versión de diskette del servicio corregida separadas por puntos. Por ejemplo, 5.0.2600.Service Pack 1. La especificación parcial de la versión también se puede especificar con un patrón como 5.0.*.

    Por ejemplo:

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

    La función IsNative64Bit devuelve TRUE si el proceso de migración se ejecuta como un proceso nativo de 64 bits; es decir, un proceso que se ejecuta en un sistema de 64 bits sin Windows en Windows (WOW). De lo contrario, devuelve FALSE.

  • IsOSLaterThan

    Todas las comparaciones no distinguen mayúsculas de minúsculas.

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

    Configuración ¿Es obligatorio? Valor
    OSType Puede ser 9x o NT. Si OSType no coincide con el tipo del sistema operativo actual, devuelve FALSE. Por ejemplo, si el sistema operativo actual está basado en Windows NT y OSType es "9x", el resultado es FALSE.
    OSVersion La versión principal, la versión secundaria, el número de compilación y la versión de diskette del servicio corregida separadas por puntos. Por ejemplo, 5.0.2600.Service Pack 1. También se puede especificar la especificación parcial de la versión, pero no se permite ningún patrón, como 5.0.

    La función IsOSLaterThan devuelve TRUE si el sistema operativo actual es posterior o igual que OSVersion.

    Por ejemplo:

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

    Todas las comparaciones no distinguen mayúsculas de minúsculas.

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

    Configuración ¿Es obligatorio? Valor
    OSType Puede ser 9x o NT. Si OSType no coincide con el tipo del sistema operativo actual, devuelve FALSE. Por ejemplo, si el sistema operativo actual está basado en Windows NT y OSType es "9x" , el resultado es FALSE.
    OSVersion La versión principal, la versión secundaria, el número de compilación y la versión de diskette del servicio corregida separadas por puntos. Por ejemplo, 5.0.2600.Service Pack 1. También se puede especificar la especificación parcial de la versión, pero no se permite ningún patrón, como 5.0.

    La función IsOSEarlierThan devuelve TRUE si el sistema operativo actual es anterior a OSVersion.

Funciones de contenido de objetos

  • DoesObjectExist

    La función DoesObjectExist devuelve TRUE si existe algún objeto que coincida con el patrón de ubicación. De lo contrario, devuelve FALSE. El patrón de ubicación se expande antes de intentar la enumeración.

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

    Configuración ¿Es obligatorio? Valor
    Objecttype Define el tipo de objeto. Puede ser Archivo o Registro.
    EncodedLocationPattern Patrón de ubicación. Se permiten variables de entorno.

    Para obtener un ejemplo de este elemento, vea el MigApp.xml archivo .

  • DoesFileVersionMatch

    La comprobación de patrones no distingue mayúsculas de minúsculas.

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

    Configuración ¿Es obligatorio? Valor
    EncodedFileLocation Patrón de ubicación para el archivo que está comprobado. Se permiten variables de entorno.
    VersionTag Valor de etiqueta de versión que se comprueba.
    VersionValue Patrón de cadena. Por ejemplo, "Microsoft*".

    Por ejemplo:

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

    La función IsFileVersionAbove devuelve TRUE si la versión del archivo es mayor que VersionValue.

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

    Configuración ¿Es obligatorio? Valor
    EncodedFileLocation Patrón de ubicación para el archivo que está comprobado. Se permiten variables de entorno.
    VersionTag Valor de etiqueta de versión que se comprueba.
    VersionValue Valor con el que se va a comparar. No se puede especificar un patrón.
  • IsFileVersionBelow

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

    Configuración ¿Es obligatorio? Valor
    EncodedFileLocation Patrón de ubicación para el archivo que está comprobado. Se permiten variables de entorno.
    VersionTag Valor de etiqueta de versión que se comprueba.
    VersionValue Valor con el que se va a comparar. No se puede especificar un patrón.
  • IsSystemContext

    La función IsSystemContext devuelve TRUE si el contexto actual es "System". De lo contrario, devuelve FALSE.

    Sintaxis: IsSystemContext()

  • DoesStringContentEqual

    La función DoesStringContentEqual devuelve TRUE si la representación de cadena del objeto especificado es idéntica a StringContent.

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

    Configuración ¿Es obligatorio? Valor
    Objecttype Define el tipo de objeto. Puede ser Archivo o Registro.
    EncodedLocationPattern Ubicación codificada del objeto que se examina. Se pueden especificar variables de entorno.
    StringContent Cadena con la que se comprueba.

    Por ejemplo:

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

    La función DoesStringContentContain devuelve TRUE si hay al menos una aparición de StrToFind en la representación de cadena del objeto.

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

    Configuración ¿Es obligatorio? Valor
    Objecttype Define el tipo de objeto. Puede ser Archivo o Registro.
    EncodedLocationPattern Ubicación codificada del objeto que se examina. Se pueden especificar variables de entorno.
    StrToFind Cadena que se busca dentro del contenido del objeto especificado.
  • IsSameObject

    La función IsSameObject devuelve TRUE si las ubicaciones codificadas dadas se resuelven en el mismo objeto físico. De lo contrario, devuelve FALSE.

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

    Configuración ¿Es obligatorio? Valor
    Objecttype Define el tipo de objeto. Puede ser Archivo o Registro.
    EncodedLocation1 Ubicación codificada para el primer objeto. Se pueden especificar variables de entorno.
    EncodedLocation2 Ubicación codificada para el segundo objeto. Se pueden especificar variables de entorno.

    Por ejemplo:

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

    La función IsSameContent devuelve TRUE si los objetos especificados tienen el mismo contenido. De lo contrario, devuelve FALSE. El contenido se compara byte byte.

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

    Configuración ¿Es obligatorio? Valor
    ObjectType1 Define el tipo del primer objeto. Puede ser Archivo o Registro.
    EncodedLocation1 Ubicación codificada para el primer objeto. Se pueden especificar variables de entorno.
    ObjectType2 Define el tipo del segundo objeto. Puede ser Archivo o Registro.
    EncodedLocation2 Ubicación codificada para el segundo objeto. Se pueden especificar variables de entorno.
  • IsSameStringContent

    La función IsSameStringContent devuelve TRUE si los objetos especificados tienen el mismo contenido. De lo contrario, devuelve FALSE. El contenido se interpreta como una cadena.

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

    Configuración ¿Es obligatorio? Valor
    ObjectType1 Define el tipo del primer objeto. Puede ser Archivo o Registro.
    EncodedLocation1 Ubicación codificada para el primer objeto. Se pueden especificar variables de entorno.
    ObjectType2 Define el tipo del segundo objeto. Puede ser Archivo o Registro.
    EncodedLocation2 Ubicación codificada para el segundo objeto. Se pueden especificar variables de entorno.

<Condiciones>

El <elemento conditions> devuelve un resultado booleano que se usa para especificar las condiciones en las que se evalúa el elemento primario. USMT evalúa los elementos secundarios y, a continuación, combina sus resultados mediante los operadores AND o OR según el parámetro de operación.

Sintaxis:

<conditions operation="AND|OR">
</conditions>
Configuración ¿Es obligatorio? Valor
Operación No, default = AND Define la operación booleana que se realiza en los resultados obtenidos de los elementos secundarios.

El ejemplo siguiente es del MigApp.xml archivo :

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

<Contenido>

El <elemento de contenido> se puede usar para especificar una lista de patrones de objeto para obtener un conjunto de objetos del equipo de origen. Se evalúa cada <objectSet> dentro de un <elemento de contenido> . Para cada lista de patrones de objetos resultante, los objetos que coinciden con él se enumeran y el parámetro de filtro filtra su contenido. La matriz de cadenas resultante es la salida del elemento de< contenido>. El script de filtro devuelve una matriz de ubicaciones. El elemento objectSet> primario< puede contener varios elementos de contenido> secundario<.

  • Número de repeticiones: ilimitado

  • Elementos primarios:<objectSet>

  • Elementos secundarios:<objectSet>

  • Funciones auxiliares: Las siguientes <funciones de contenido> se pueden usar con este elemento: ExtractSingleFile, ExtractMultipleFilesy ExtractDirectory.

Sintaxis:

<content filter="ScriptInvocation">
</content>
Configuración ¿Es obligatorio? Valor
filter Script seguido de cualquier número de argumentos de cadena separados por una coma y entre paréntesis. Por ejemplo, MyScripts.AScript ("Arg1","Arg2").
Se llama al script para cada objeto enumerado por los conjuntos de objetos de la <regla de inclusión> . El script de filtro devuelve un valor booleano. Si el valor devuelto es TRUE, se migra el objeto. Si es FALSE, no se migra.

<funciones de contenido>

Las siguientes funciones generan patrones del contenido de un objeto. Se llama a estas funciones para cada objeto que enumera el elemento ObjectSet> primario<.

  • ExtractSingleFile

    Si el valor del Registro es MULTI-SZ, solo se procesa el primer segmento. El patrón devuelto es la ubicación codificada para un archivo que debe existir en el sistema. Si la especificación es correcta en el valor del Registro, pero el archivo no existe, esta función devuelve NULL.

    Sintaxis: ExtractSingleFile(Separators,PathHints)

    Configuración ¿Es obligatorio? Valor
    Separadores Lista de posibles separadores que podrían seguir la especificación del archivo en este nombre de valor del Registro. Por ejemplo, si el contenido es "C:\Windows\Notepad.exe,-2", el separador es una coma. Se puede especificar NULL.
    PathHints Una lista de rutas de acceso adicionales, separadas por dos puntos (;), donde la función busca un archivo que coincida con el contenido actual. Por ejemplo, si el contenido es "Notepad.exe" y la ruta de acceso es la variable de entorno %Path% , la función busca Notepad.exe en %windir% y devuelve "c:\Windows [Notepad.exe]". Se puede especificar NULL.

    Por ejemplo:

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

    y

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

    La función ExtractMultipleFiles devuelve varios patrones, uno para cada archivo que se encuentra en el contenido del valor del Registro especificado. Si el valor del Registro es MULTI-SZ, el separador MULTI-SZ se considera un separador de forma predeterminada. por lo tanto, para MULTI-SZ, el <argumento Separators> debe ser NULL.

    Los patrones devueltos son las ubicaciones codificadas para los archivos que deben existir en el equipo de origen. Si la especificación es correcta en el valor del Registro, pero el archivo no existe, no se incluye en la lista resultante.

    Sintaxis: ExtractMultipleFiles(Separators,PathHints)

    Configuración ¿Es obligatorio? Valor
    Separadores Lista de posibles separadores que podrían seguir la especificación del archivo en este nombre de valor del Registro. Por ejemplo, si el contenido es "C:\Windows\Notepad.exe,-2", el separador es una coma. Este parámetro debe ser NULL al procesar valores del Registro MULTI-SZ .
    PathHints Una lista de rutas de acceso adicionales, separadas por dos puntos (;), donde la función busca un archivo que coincida con el contenido actual. Por ejemplo, si el contenido es "Notepad.exe" y la ruta de acceso es la variable de entorno %Path% , la función busca Notepad.exe en %windir% y devuelve "c:\Windows [Notepad.exe]". Se puede especificar NULL.
  • ExtractDirectory

    La función ExtractDirectory devuelve un patrón que es la ubicación codificada para un directorio que debe existir en el equipo de origen. Si la especificación es correcta en el valor del Registro, pero el directorio no existe, esta función devuelve NULL. Si está procesando un valor del Registro que es una SZ MÚLTIPLE, solo se procesa el primer segmento.

    Sintaxis: ExtractDirectory(Separators,LevelsToTrim,PatternSuffix)

    Configuración ¿Es obligatorio? Valor
    Separadores No Lista de posibles separadores que podrían seguir la especificación del archivo en este nombre de valor del Registro. Por ejemplo, si el contenido es "C:\Windows\Notepad.exe,-2", el separador es una coma. SE debe especificar NULL al procesar valores del Registro MULTI-SZ .
    LevelsToTrim Número de niveles que se van a eliminar del final de la especificación del directorio. Use esta función para extraer un directorio raíz cuando haya un valor del Registro que apunte dentro de ese directorio raíz en una ubicación conocida.
    PatternSuffix Patrón que se va a agregar a la especificación del directorio. Por ejemplo, * [*].

    Por ejemplo:

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

<contentModify>

El <elemento contentModify> modifica el contenido de un objeto antes de escribir el objeto en el equipo de destino. Para cada <elemento contentModify> , puede haber varios <elementos objectSet> . Este elemento devuelve el nuevo contenido del objeto que se está procesando.

  • Número de repeticiones: Ilimitado

  • Elementos primarios:<rules>

  • Elementos secundarios necesarios:<objectSet>

  • Funciones auxiliares: las siguientes <funciones contentModify> se pueden usar con este elemento: ConvertToDWORD, ConvertToString, ConvertToBinary, KeepExisting, OffsetValue, SetValueByTable, MergeMultiSzContent y MergeDelimitedContent.

Sintaxis:

<contentModify script="ScriptInvocation">
</contentModify>
Configuración ¿Es obligatorio? Valor
Guión Script seguido de cualquier número de argumentos de cadena separados por una coma y entre paréntesis. Por ejemplo, MyScripts.AScript ("Arg1","Arg2").

Se llama al script para cada objeto enumerado por los conjuntos de objetos de la regla de inclusión. El script de filtro devuelve un valor booleano. Si el valor devuelto es TRUE, se migra el objeto. Si es FALSE, no se migra.

<contentModify> (funciones)

Las siguientes funciones cambian el contenido de los objetos a medida que se migran. Se llama a estas funciones para cada objeto que enumera el elemento ObjectSet> primario<.

  • ConvertToDWORD

    La función ConvertToDWORD convierte el contenido de los valores del Registro enumerados por el elemento ObjectSet> primario< en un DWORD. Por ejemplo, ConvertToDWORD convierte la cadena "1" en DWORD 0x00000001. Si se produce un error en la conversión, se aplica el valor de DefaultValueOnError .

    Sintaxis: ConvertToDWORD(DefaultValueOnError)

    Configuración ¿Es obligatorio? Valor
    DefaultValueOnError No Valor que se escribe en el nombre del valor si se produce un error en la conversión. Se puede especificar NULL y 0 se escribe si se produce un error en la conversión.
  • ConvertToString

    La función ConvertToString convierte el contenido de los valores del Registro que coinciden con el elemento ObjectSet> primario< en una cadena. Por ejemplo, convierte DWORD 0x00000001 en la cadena "1". Si se produce un error en la conversión, se aplica el valor de DefaultValueOnError .

    Sintaxis: ConvertToString(DefaultValueOnError)

    Configuración ¿Es obligatorio? Valor
    DefaultValueOnError No Valor que se escribe en el nombre del valor si se produce un error en la conversión. Se puede especificar NULL y 0 se escribe si se produce un error en la conversión.

    Por ejemplo:

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

    La función ConvertToBinary convierte el contenido de los valores del Registro que coinciden con el elemento ObjectSet> primario< en un tipo binario.

    Sintaxis: ConvertToBinary ()

  • OffsetValue

    La función OffsetValue agrega o resta Value del valor del objeto migrado y, a continuación, escribe el resultado de nuevo en el valor del Registro en el equipo de destino. Por ejemplo, si el objeto migrado es un DWORD con un valor de 14y el valor es "-2", el valor del Registro estará 12 en el equipo de destino.

    Sintaxis: OffsetValue(Value)

    Configuración ¿Es obligatorio? Valor
    Valor Representación de cadena de un valor numérico. Puede ser positivo o negativo. Por ejemplo, OffsetValue(2).
  • SetValueByTable

    La función SetValueByTable coincide con el valor del equipo de origen con la tabla de origen. Si el valor está allí, se aplica el valor equivalente de la tabla de destino. Si el valor no está allí o si la tabla de destino no tiene ningún valor equivalente, se aplica DefaultValueOnError .

    Sintaxis: SetValueByTable(SourceTable,DestinationTable,DefaultValueOnError)

    Configuración ¿Es obligatorio? Valor
    SourceTable Lista de valores separados por comas que son posibles para los valores del Registro de origen.
    DestinationTable No Lista de valores traducidos separados por comas.
    DefaultValueOnError No Valor que se aplica al equipo de destino si se trata de uno de los valores
    1. El valor del equipo de origen no coincide con SourceTable.
    2. DestinationTable no tiene ningún valor equivalente.

    Si DefaultValueOnError es NULL, el valor no cambia en el equipo de destino.
  • Mantener existente

    La función KeepExisting se puede usar cuando hay conflictos en el equipo de destino. Esta función mantiene (no sobrescribe) los atributos especificados para el objeto que se encuentra en el equipo de destino.

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

    Configuración ¿Es obligatorio? Valor
    OptionString OptionString puede ser Seguridad, TimeFields o FileAttrib:Letter. Se puede especificar uno de cada tipo de OptionStrings . No especifique varias optionstrings con el mismo valor. Si se especifican varias OptionStrings con el mismo valor, se mantiene la opción más a la derecha de ese tipo. Por ejemplo, no especifique ("FileAttrib:H", "FileAttrib:R") porque solo se evalúa Solo lectura. En su lugar, especifique ("FileAttrib:HR") y los atributos Hidden y Read-only se mantienen en el equipo de destino.
    • Seguridad: mantiene el descriptor de seguridad del objeto de destino si existe.
    • TimeFields: mantiene las marcas de tiempo del objeto de destino. Este parámetro es solo para archivos.
    • FileAttrib:<Carta>: mantiene el valor de atributo del objeto de destino, YA sea ON o OFF, para el conjunto especificado de atributos de archivo. Este parámetro es solo para archivos. Los siguientes no distinguen mayúsculas de minúsculas, pero USMT omitirá los valores que no son válidos, se repiten o si hay un espacio después de FileAttrib:. Se puede especificar cualquier combinación de los atributos siguientes:
      • A = Archivo
      • C = comprimido
      • E = Cifrado
      • H = Oculto
      • I = No contenido indizado
      • O = Sin conexión
      • R = Read-Only
      • S = Sistema
      • T = Temporal
  • MergeMultiSzContent

    La función MergeMultiSzContent combina el contenido MULTI-SZ de los valores del Registro enumerados por el elemento ObjectSet> primario< con el contenido de los valores equivalentes del Registro que ya existen en el equipo de destino. Instruction y String quite o agregue contenido a la red MULTI-SZ resultante. Se quitan los elementos duplicados.

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

    Configuración ¿Es obligatorio? Valor
    Instrucción Puede ser uno de los siguientes valores:
    • Agregar. Agrega la cadena correspondiente a la red MULTI-SZ resultante si aún no está allí.
    • Quitar. Quita la cadena correspondiente de la SZ MÚLTIPLE resultante.
    Cadena Cadena que se va a agregar o quitar.
  • MergeDelimitedContent

    La función MergeDelimitedContent combina el contenido de los valores del Registro enumerados por el elemento ObjectSet> primario< con el contenido de los valores equivalentes del Registro que ya existen en el equipo de destino. El contenido se considera una lista de elementos separados por uno de los caracteres del parámetro Delimiters. Se quitan los elementos duplicados.

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

    Configuración ¿Es obligatorio? Valor
    Delimitadores Carácter único que se usa para separar el contenido del objeto que se está procesando. El contenido se considera una lista de elementos separados por los delimitadores.
    Por ejemplo, "." separa la cadena en función de un punto.
    Instrucción Puede ser uno de los siguientes valores:
    • Agregar: agrega string a la red MULTI-SZ resultante si aún no está allí.
    • Quitar: quita string de la SZ MÚLTIPLE resultante.
    Cadena Cadena que se va a agregar o quitar.

<Descripción>

El <elemento description> define una descripción para el componente, pero no afecta a la migración.

  • Número de repeticiones: cero o uno

  • Elementos primarios:<componente>

  • Elementos secundarios: none

Sintaxis:

<description>ComponentDescription</description>
Configuración ¿Es obligatorio? Valor
ComponentDescription Descripción del componente.

En el ejemplo de código siguiente se muestra cómo el <elemento description> define la descripción "Mi componente personalizado":

<description>My custom component<description>

<destinationCleanup>

El <elemento destinationCleanup> elimina objetos, como archivos y claves del Registro, del equipo de destino antes de aplicar los objetos desde el equipo de origen. Este elemento solo se evalúa cuando se ejecuta la herramienta LoadState en el equipo de destino. Es decir, la herramienta ScanState omite este elemento.

Importante

Use esta opción con extrema precaución porque eliminará objetos del equipo de destino.

Para cada <elemento destinationCleanup> , puede haber varios <elementos objectSet> . Un uso común para este elemento es si falta una clave del Registro en el equipo de origen, pero el componente todavía debe migrarse. En este caso, todas las claves del Registro del componente se pueden eliminar antes de migrar las claves del Registro de origen. La eliminación de todas las claves del Registro del componente garantiza que, si falta una clave en el equipo de origen, también faltará en el equipo de destino.

  • Número de repeticiones: Ilimitado

  • Elementos primarios:<rules>

  • Elementos secundarios:<objectSet> (El equipo de destino elimina todos los elementos secundarios).

Sintaxis:

<destinationCleanup filter=ScriptInvocation>
</destinationCleanup>
Configuración ¿Es obligatorio? Valor
filter Script seguido de cualquier número de argumentos de cadena separados por una coma y entre paréntesis. Por ejemplo, MyScripts.AScript ("Arg1","Arg2").

Se llama al script para cada objeto enumerado por los conjuntos de objetos de la regla de inclusión. El script de filtro devuelve un valor booleano. Si el valor devuelto es TRUE, se migra el objeto. Si es FALSE, no se migra.

Por ejemplo:

<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>

<Detectar>

Aunque el <elemento de detección> sigue siendo compatible, Microsoft recomienda dejar de usar el <elemento de detección> porque podría estar en desuso en futuras versiones de USMT. Si el <elemento de detección> está en desuso, requeriría una reescritura de los scripts que usen el <elemento de detección> . En su lugar, Microsoft recomienda usar el elemento de< detección>. El <elemento de detección> permite instrucciones booleanas complejas más claramente formuladas

El <elemento detect> se puede usar para determinar si el componente está presente en un sistema. Si todos los elementos secundarios <de detección> dentro de un <elemento de detección> se resuelven en TRUE, el <elemento de detección> se resuelve en TRUE. Si algún elemento de detección> secundario< se resuelve en FALSE, su elemento primario <de detección> se resuelve en FALSE. Si no hay ninguna <sección de elemento de detección> , USMT supone que el componente está presente.

Para cada <elemento de detección> puede haber varios elementos objectSet> o<condición> secundarios<, que están unidos lógicamente por un operador OR. Si al menos un <elemento condition> o <objectSet> se evalúa como TRUE, el <elemento de detección> se evalúa como TRUE.

Sintaxis:

<detect name="ID" context="User|System|UserAndSystem">
</detect>
Configuración ¿Es obligatorio? Valor
name Sí, cuando <detectar> es un elemento secundario para <namedElements>
No, cuando <detectar> es un elemento secundario que <se detecta>
Cuando se especifica id ., no se procesan los elementos secundarios. En su lugar, se procesan los demás <elementos de detección> con el mismo nombre que se declaran dentro del <elemento namedElements> .
Contexto No
(valor predeterminado = UserAndSystem)
Define el ámbito de este parámetro, que es si se va a procesar este componente en el contexto del usuario específico, en todo el sistema operativo o en ambos.
El mayor ámbito posible lo establece el elemento de componente. Por ejemplo, si un <elemento de componente> tiene un contexto de User y un <elemento rules> tenía un contexto de UserAndSystem, el <elemento rules> actuaría como si tuviera un contexto de User. Si el <elemento rules> tuviera un contexto de System, actuaría como si el <elemento rules> no estuviera allí.
  • Usuario: evalúa las variables de cada usuario.
  • Sistema: evalúa las variables solo una vez para el sistema.
  • UserAndSystem: evalúa las variables de todo el sistema operativo y de cada usuario.

Para obtener ejemplos, consulte los ejemplos de detección<>.

<Detecta>

Aunque el <elemento detects> sigue siendo compatible, Microsoft recomienda dejar de usar el <elemento detects porque podría estar en desuso> en futuras versiones de USMT. Si el <elemento detects está en desuso> , requeriría una reescritura de los scripts que usen el <elemento detects> . En su lugar, Microsoft recomienda usar el <elemento de detección> si el elemento primario es <role> o <namedElements>, o usar el <elemento conditions> si el elemento primario es <rules>. El <elemento de detección> permite instrucciones booleanas complejas más claramente formuladas y el <elemento conditions> permite la formulación de instrucciones booleanas complejas.

El <elemento detects> es un contenedor para uno o varios <elementos de detección> . Si todos los elementos secundarios detectan<> elementos dentro de un <elemento que se resuelve en TRUE, detecta que se resuelve en>TRUE.>< Si alguno de los elementos de detección> secundarios<>se resuelve en FALSE,< detecta que se resuelve en FALSE. Para evitar que el <elemento detecte> que se va a escribir dentro de un componente, cree el <elemento detects> en el <elemento namedElements> y, a continuación, haga referencia a él. Si no hay ninguna <sección de elemento de detección> , USMT supone que el componente está presente. El operador OR une los resultados de cada <elemento de> detección para formar la regla que se usa para detectar el elemento primario.

Sintaxis:

<detects name="ID" context="User|System|UserAndSystem">
</detects>
Configuración ¿Es obligatorio? Valor
name Sí, cuando <detecta> es un elemento secundario para <namedElements>
No, cuando <detecta> que es un elemento secundario para el< rol> o <las reglas>
Cuando se especifica id., no se procesan elementos de detección> secundarios<. En su lugar, cualquier otro <detecta elementos> con el mismo nombre que se declaran dentro del <elemento namedElements> que se procesan.
Contexto No
(valor predeterminado = UserAndSystem)
Define el ámbito de este parámetro: si se va a procesar este componente en el contexto del usuario específico, en todo el sistema operativo o en ambos.
El mayor ámbito posible lo establece el elemento> de< componente. Por ejemplo, si un <elemento de componente> tiene un contexto de User y un <elemento rules> tenía un contexto de UserAndSystem, el <elemento rules> actuaría como si tuviera un contexto de User. Si el <elemento rules> tuviera un contexto de System, actuaría como si el <elemento rules> no estuviera allí.
  • Usuario: evalúa las variables de cada usuario.
  • Sistema: evalúa las variables solo una vez para el sistema.
  • UserAndSystem: evalúa las variables de todo el sistema operativo y de cada usuario.

El parámetro de contexto se omite para <detectar elementos> que están dentro de <elementos de reglas> .

El ejemplo siguiente es del MigApp.xml archivo .

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

<Detección>

El <elemento de detección> es un contenedor para un <elemento de condiciones> . El resultado de los elementos de condición> secundarios<, situados debajo del <elemento conditions>, determina el resultado de este elemento. Por ejemplo, si todos los elementos de condiciones secundarias<> dentro del <elemento de detección> se resuelven en TRUE, el <elemento de detección> se resuelve en TRUE. Si alguno de los elementos de condiciones secundarias<> se resuelve en FALSE, el <elemento de detección> se resuelve en FALSE.

Además, el operador OR une los resultados de cada <sección de detección> dentro del <elemento role> para formar la regla de detección del elemento primario. Es decir, si una de las <secciones de detección> se resuelve en TRUE, se procesa el <elemento de rol>. De lo contrario, el <elemento role> no se procesa.

Use el <elemento de detección> en el <elemento namedElements> para no escribir en un componente. A continuación, incluya una sección de detección> coincidente< en el <elemento role> para controlar si se migra el componente. Si no hay una <sección de detección> para un componente, USMT supone que el componente está presente.

Sintaxis:

<detection name="ID" context="User|System|UserAndSystem">
</detection>
Configuración ¿Es obligatorio? Valor
name
  • Sí, cuando <la detección> se declara en <namedElements>
  • Opcional, cuando se declara en <el rol>
Si se declara, se omite el <contenido del elemento de detección> y se evalúa el <contenido del elemento de detección> con el mismo nombre que se declara en el <elemento namedElements> .
Contexto No, default = UserAndSystem Define el ámbito de este parámetro: si se va a procesar este componente en el contexto del usuario específico, en todo el sistema operativo o en ambos.
  • Usuario: evalúa el componente para cada usuario.
  • Sistema: evalúa el componente solo una vez para el sistema.
  • UserAndSystem: evalúa el componente para todo el sistema operativo y cada usuario.

Por ejemplo:

<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>

y

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

<Displayname>

El <elemento displayName> es un campo obligatorio dentro de cada <elemento de componente> .

  • Número de repeticiones: una vez para cada componente

  • Elementos primarios:<componente>

  • Elementos secundarios: none

Sintaxis:

<displayName _locID="ID">ComponentName</displayName>
Configuración ¿Es obligatorio? Valor
locID No Este parámetro es para uso interno de USMT. No use este parámetro.
ComponentName Nombre del componente.

Por ejemplo:

<displayName>Command Prompt settings</displayName>

<Ambiente>

El <elemento environment> es un contenedor de <elementos variables> en el que se pueden definir variables para su uso en un archivo .xml . Todas las variables de entorno definidas de esta manera son privadas. Es decir, solo están disponibles para sus componentes secundarios y el componente en el que se definieron. Para ver dos escenarios de ejemplo, vea Ejemplos.

Sintaxis:

<environment name="ID" context="User|System|UserAndSystem">
</environment>
Configuración ¿Es obligatorio? Valor
name Sí, cuando <el entorno> es un elemento secundario de <namedElements>
No, cuando <el entorno> es un elemento secundario del <rol> o <componente>
Cuando se declara como elemento secundario de los <elementos role> o <component>, si se declara ID, USMT omite el contenido del elemento environment<> y se procesa el<> contenido del elemento environment con el mismo nombre declarado en el <elemento namedElements>.
Contexto No
(valor predeterminado = UserAndSystem)
Define el ámbito de este parámetro: si se va a procesar este componente en el contexto del usuario específico, en todo el sistema operativo o en ambos.
El mayor ámbito posible lo establece el elemento de< componente>. Por ejemplo, si un <elemento de componente> tiene un contexto de User y un <elemento rules> tenía un contexto de UserAndSystem, el <elemento rules> actuaría como si tuviera un contexto de User. Si el <elemento rules> tuviera un contexto de System, actuaría como si <las reglas> no estuvieran allí.
  • Usuario: evalúa las variables de cada usuario.
  • Sistema: evalúa las variables solo una vez para el sistema.
  • UserAndSystem: evalúa las variables de todo el sistema operativo y de cada usuario.

Ejemplos

Escenario de ejemplo 1

En este escenario, genere la ubicación de los objetos en tiempo de ejecución en función de la configuración del equipo de destino. Por ejemplo, si una aplicación escribe datos en el directorio donde está instalada la aplicación y los usuarios pueden instalar la aplicación en cualquier lugar del equipo. Si la aplicación escribe un valor hklm\software\companyname\install [path\] del Registro y, a continuación, actualiza este valor con la ubicación donde está instalada la aplicación, la única manera de migrar correctamente los datos necesarios es definir una variable de entorno. Por ejemplo:

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

A continuación, se puede usar una regla de inclusión como se indica a continuación. Cualquiera de las funciones de< script> se puede usar para realizar tareas similares.

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

En segundo lugar, los valores del Registro se pueden filtrar para contener los datos necesarios. En el ejemplo siguiente se extrae la primera cadena (antes del separador ",") en el valor del Registro 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>

Escenario de ejemplo 2

En este escenario, es necesario migrar cinco archivos denominados File1.txt, File2.txt, etc., desde %SYSTEMDRIVE%\data\userdata\dir1\dir2\. Para migrar estos archivos, la siguiente <regla de inclusión> debe estar en un archivo .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>

En lugar de escribir la ruta de acceso cinco veces, cree una variable para la ubicación de la siguiente manera:

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

A continuación, especifique la variable en una regla de inclusión<> como se indica a continuación:

<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>

<excluye>

El <elemento exclude> determina qué objetos no se migran, a menos que haya un elemento include> más específico< que migre un objeto. Si hay un <elemento include> y <exclude> para el mismo objeto, se incluye el objeto . Para cada <elemento exclude>, puede haber varios elementos objectSet> secundarios<.

  • Número de repeticiones: Ilimitado

  • Elementos primarios:<rules>

  • Elementos secundarios:<objectSet>

  • Funciones auxiliares: Las siguientes <funciones de filtro de exclusión> se pueden usar con este elemento: CompareStringContent, IgnoreIrrelevantLinks, AnswerNo, NeverRestorey SameRegContent.

Sintaxis:

<exclude filter="ScriptInvocation">
</exclude>
Configuración ¿Es obligatorio? Valor
filter No
(valor predeterminado = No)
Script seguido de cualquier número de argumentos de cadena separados por una coma y entre paréntesis. Por ejemplo, MyScripts.AScript ("Arg1","Arg2").

Se llama al script para cada objeto enumerado por los conjuntos de objetos de la regla de inclusión. El script de filtro devuelve un valor booleano. Si el valor devuelto es TRUE, se migra el objeto. Si es FALSE, no se migra.

Por ejemplo, desde el MigUser.xml archivo:

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

<excludeAttributes>

El <elemento excludeAttributes> se puede usar para determinar qué parámetros asociados a un objeto no se migran. Si hay conflictos entre los <elementos includeAttributes> y <excludeAttributes> , el patrón más específico determina los patrones que no se migran. Si un objeto no tiene un <elemento includeAttributes> o <excludeAttributes> , se migran todos sus parámetros.

  • Número de repeticiones: Ilimitado

  • Elementos primarios:<rules>

  • Elementos secundarios:<objectSet>

Sintaxis:

<excludeAttributes attributes="Security|TimeFields|Security,TimeFields">
</excludeAttributes>
Configuración ¿Es obligatorio? Valor
Atributos Especifica los atributos que se van a excluir. Se puede especificar una de las siguientes opciones o ambas. Si especifica ambos, deben separarse entre comillas. Por ejemplo, "Security","TimeFields":
  • La seguridad puede ser una de Propietario, Grupo, DACL o SACL.
  • TimeFields puede ser uno de CreationTime, LastAccessTime y LastWrittenTime

Por ejemplo:

<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>

<Extensiones>

El <elemento extensions> es un contenedor para uno o varios <elementos de extensión> .

Sintaxis:

<extensions>
</extensions>

<Extensión>

El <elemento de extensión> se puede usar para especificar documentos de una extensión específica.

  • Número de repeticiones: ilimitado

  • Elementos primarios:<extensiones>

  • Elementos secundarios: none

Sintaxis:

<extension>FilenameExtension</extension>
Configuración ¿Es obligatorio? Valor
FilenameExtension Extensión de nombre de archivo.

Por ejemplo, para migrar todos los archivos *.doc del equipo de origen, especifique el código siguiente en el <elemento component> :

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

es lo mismo que especificar el código siguiente debajo del <elemento rules> :

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

Para obtener otro ejemplo de cómo usar el <elemento de extensión>, vea el ejemplo de< excludeAttributes>.

<externalProcess>

El <elemento externalProcess> se puede usar para ejecutar una línea de comandos durante el proceso de migración. Por ejemplo, es posible que una ejecución de un comando tenga que ejecutarse una vez completado el proceso LoadState .

  • Número de repeticiones: Ilimitado

  • Elementos primarios:<rules>

  • Elementos secundarios necesarios:<commandLine>

Sintaxis:

<externalProcess when="pre-scan|scan-success|post-scan|pre-apply|apply-success|post-apply">
</externalProcess>
Configuración ¿Es obligatorio? Valor
Cuando Indica cuándo se debe ejecutar la línea de comandos. Este valor puede ser uno de los siguientes valores:
  • examen previo antes de que comience el proceso de examen.
  • scan-success una vez que el proceso de examen finaliza correctamente.
  • después del examen una vez finalizado el proceso de examen, tanto si se ha realizado correctamente como si no.
  • preapliquen antes de que comience el proceso de aplicación.
  • apply-success una vez que el proceso de aplicación finaliza correctamente.
  • después de aplicar una vez finalizado el proceso de aplicación, tanto si se ha realizado correctamente como si no.

Para obtener un ejemplo de cómo usar el <elemento externalProcess>, vea el ejemplo de< excludeAttributes>.

<icon>

Este elemento es un elemento USMT interno. No use este elemento.

<include>

El <elemento include> determina qué migrar, a menos que haya una regla de exclusión> más específica<. Se puede especificar un script para que sea más específico para ampliar la definición de lo que quiere recopilar. Para cada <elemento include> , puede haber varios <elementos objectSet> .

  • Número de repeticiones: Ilimitado

  • Elementos primarios:<rules>

  • Elemento secundario obligatorio:<objectSet>

  • Funciones auxiliares: Las siguientes <funciones de filtro de inclusión> se pueden usar con este elemento: CompareStringContent, IgnoreIrrelevantLinks, AnswerNoy NeverRestore.

Sintaxis:

<include filter="ScriptInvocation">
</include>
Configuración ¿Es obligatorio? Valor
filter No.
Si no se especifica este parámetro, se procesan todos los patrones que se encuentran dentro del elemento objectSet> secundario<.
Script seguido de cualquier número de argumentos de cadena separados por una coma y entre paréntesis. Por ejemplo, MyScripts.AScript ("Arg1","Arg2").
Se llama al script para cada objeto enumerado por los conjuntos de objetos de la <regla de inclusión> . El script de filtro devuelve un valor booleano. Si el valor devuelto es TRUE, se migra el objeto. Si es FALSE, no se migra.

El ejemplo siguiente es del MigUser.xml archivo :

<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> y <excluir> funciones de filtro

Las siguientes funciones devuelven un valor booleano. Se pueden usar para migrar determinados objetos en función de cuándo se cumplen ciertas condiciones.

  • AnswerNo

    Este filtro siempre devuelve FALSE.

    Sintaxis: AnswerNo ()

  • CompareStringContent

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

    Configuración ¿Es obligatorio? Valor
    StringContent Cadena con la que se va a comprobar.
    CompareType Cadena. Use uno de los valores siguientes:
    • Igual (no distingue mayúsculas de minúsculas). La función devuelve TRUE si la representación de cadena del objeto actual que procesa el motor de migración es idéntica a StringContent.
    • NULLo cualquier otro valor. La función devuelve TRUE si la representación de cadena del objeto actual que procesa el motor de migración no coincide con StringContent.
  • IgnoreIrrelevantLinks

    Este filtro muestra los archivos .lnk que apuntan a un objeto que no es válido en el equipo de destino. El filtrado tiene lugar en el equipo de destino, por lo que todos los archivos .lnk se guardan en el almacén durante ScanState. A continuación, se filtran cuando se ejecuta la herramienta LoadState .

    Sintaxis: IgnoreIrrelevantLinks ()

    Por ejemplo:

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

    Esta función se puede usar para recopilar los objetos especificados del equipo de origen, pero luego no migrar los objetos al equipo de destino. Cuando se ejecuta con la herramienta ScanState , esta función se evalúa como TRUE. Cuando se ejecuta con la herramienta LoadState , esta función se evalúa como FALSE. Esta función puede usarse para comprobar el valor de un objeto en el equipo de destino, pero no hay ninguna intención de migrar el objeto al destino.

    Sintaxis: NeverRestore()

    En el ejemplo siguiente, HKCU\Panel de control\International [Locale] se incluye en el almacén, pero no se migra al equipo de destino:

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

<includeAttributes>

El <elemento includeAttributes> se puede usar para determinar si determinados parámetros asociados a un objeto se migran junto con el propio objeto. Si hay conflictos entre los <elementos includeAttributes> y <excludeAttributes> , el patrón más específico determina qué parámetros se migran. Si un objeto no tiene un <elemento includeAttributes> o <excludeAttributes> , se migran todos sus parámetros.

  • Número de repeticiones: ilimitado

  • Elementos primarios:<rules>

  • Elementos secundarios:<objectSet>

Sintaxis:

<includeAttributes attributes="Security|TimeFields|Security,TimeFields">
</includeAttributes>
Configuración ¿Es obligatorio? Valor
Atributos Especifica los atributos que se van a incluir con un objeto migrado. Se puede especificar una de las siguientes opciones o ambas. Si especifica ambos, deben separarse entre comillas. Por ejemplo, "Security","TimeFields":
  • La seguridad puede ser uno de los siguientes valores:
    • Propietario: propietario del objeto (SID).
    • Grupo: el grupo principal del objeto (SID).
    • DACL (lista de control de acceso discrecional): lista de control de acceso controlada por el propietario de un objeto y que especifica el acceso que determinados usuarios o grupos pueden tener al objeto.
    • SACL (lista de control de acceso del sistema): acl que controla la generación de mensajes de auditoría para los intentos de acceder a un objeto protegible. La capacidad de obtener o establecer la SACL de un objeto se controla mediante un privilegio que normalmente solo tienen los administradores del sistema.
  • TimeFields puede ser uno de los siguientes valores:
    • CreationTime: especifica cuándo se creó el archivo o directorio.
    • LastAccessTime: especifica cuándo se lee por última vez el archivo, se escribe en o para los archivos ejecutables, se ejecuta.
    • LastWrittenTime: especifica cuándo se escribe por última vez en el archivo, se trunca o se sobrescribe.

Para obtener un ejemplo de cómo usar el <elemento includeAttributes>, vea el ejemplo de< excludeAttributes>.

<Biblioteca>

Este elemento es un elemento USMT interno. No use este elemento.

<Ubicación>

El <elemento location> define la ubicación del elemento object<>.

  • Número de repeticiones: una vez para cada <objeto>

  • Elementos primarios:<object>

  • Elementos secundarios:<script>

Sintaxis:

<location type="typeID">ObjectLocation</location>
Configuración ¿Es obligatorio? Valor
tipo typeID puede ser Registro o Archivo.
ObjectLocation Ubicación del objeto.

El ejemplo siguiente es del MigApp.xml archivo :

<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>

El <elemento locationModify> se puede usar para cambiar la ubicación y el nombre de un objeto antes de migrar el objeto al equipo de destino. El <elemento locationModify> solo se procesa cuando la herramienta LoadState se ejecuta en el equipo de destino. En otras palabras, la herramienta ScanState omite este elemento. El <elemento locationModify> crea la carpeta adecuada en el equipo de destino si aún no existe.

Número de repeticiones: Ilimitado

Sintaxis:

<locationModify script="ScriptInvocation">
</locationModify>
Configuración ¿Es obligatorio? Valor
Guión Script seguido de cualquier número de argumentos de cadena separados por una coma y entre paréntesis. Por ejemplo, MyScripts.AScript ("Arg1","Arg2").

Se llama al script para cada objeto enumerado por los conjuntos de objetos de la regla de inclusión. El script de filtro devuelve un valor booleano. Si el valor devuelto es TRUE, se migra el objeto. Si es FALSE, no se migra.

El ejemplo siguiente es del MigApp.xml archivo :

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

<locationModify> (funciones)

Las siguientes funciones cambian la ubicación de los objetos a medida que se migran cuando se usa el <elemento locationModify> . Se llama a estas funciones para cada objeto que enumera el elemento objectSet> primario<. El <elemento locationModify> crea la carpeta adecuada en el equipo de destino si aún no existe.

  • ExactMove

    La función ExactMove mueve todos los objetos que coinciden con el elemento objectSet> primario< al objeto ObjectEncodedLocation especificado. Esta función se puede usar para mover un único archivo a una ubicación diferente en el equipo de destino. Si la ubicación de destino es un nodo, todos los objetos de origen coincidentes se escriben en el nodo sin subdirectorios. Si la ubicación de destino es una hoja, el motor de migración migra todos los objetos de origen coincidentes a la misma ubicación. Si se produce una colisión, se aplican los algoritmos de colisión normales.

    Sintaxis: ExactMove(ObjectEncodedLocation)

    Configuración ¿Es obligatorio? Valor
    ObjectEncodedLocation Ubicación de destino de todos los objetos de origen.

    Por ejemplo:

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

    La función Move mueve objetos a una ubicación diferente en el equipo de destino. Además, esta función crea subdirectorios que estaban por encima del CSIDL más largo en el nombre del objeto de origen.

    Sintaxis: Move(DestinationRoot)

    Configuración ¿Es obligatorio? Valor
    DestinationRoot Ubicación donde se mueven los objetos de origen. Si es necesario, esta función crea los subdirectorios que estaban por encima del CSIDL más largo en el nombre del objeto de origen.
  • RelativeMove

    La función RelativeMove se puede usar para recopilar y mover datos. Las variables de entorno se pueden usar en las raíces de origen y destino, pero pueden definirse de forma diferente en los equipos de origen y de destino.

    Sintaxis: RelativeMove(SourceRoot,DestinationRoot)

    Configuración ¿Es obligatorio? Valor
    SourceRoot Ubicación desde la que se mueven los objetos. No se mueven los objetos de origen enumerados por el elemento objectSet> primario< que no están en esta ubicación.
    DestinationRoot Ubicación a la que se mueven los objetos de origen en el equipo de destino. Si es necesario, esta función crea los subdirectorios que estaban por encima de SourceRoot.

Por ejemplo:

<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 es un elemento USMT interno. No use este elemento.

<Fabricante>

El <elemento manufacturer> define el fabricante del componente, pero no afecta a la migración.

  • Número de repeticiones: cero o uno

  • Elementos primarios:<componente>

  • Elementos secundarios: none

Sintaxis:

<manufacturer>Name</manufacturer>
Configuración ¿Es obligatorio? Valor
Nombre Nombre del fabricante del componente.

<Combinar>

El <elemento merge> determina lo que ocurre cuando se produce una colisión. Una colisión se produce cuando un objeto que se migra ya está presente en el equipo de destino. Si no se especifica este elemento, el comportamiento predeterminado del registro es que el objeto de origen sobrescriba el objeto de destino. El comportamiento predeterminado de los archivos es que se cambie el nombre del archivo de origen a OriginalFileName(1).OriginalExtension. Este elemento especifica solo lo que se debe hacer cuando se produce una colisión. No incluye objetos. Por lo tanto, para que los objetos se migren, <se deben especificar reglas de inclusión> junto con el <elemento merge> . Cuando se procesa un objeto y se detecta una colisión, USMT selecciona la regla de combinación más específica. A continuación, aplica la regla para resolver el conflicto. Por ejemplo, si una <regla de combinación> se establece en <sourcePriority> y una <regla de combinación> se establece <en destinationPriority>, USMT usaría la <regla destinationPriority> porque es la más específica.C:\subfolder\* [*]C:\* [*]

Para obtener un ejemplo de este elemento, vea Conflictos y prioridad.

  • Número de repeticiones: Ilimitado

  • Elementos primarios:<rules>

  • Elemento secundario obligatorio:<objectSet>

  • Funciones auxiliares: Las siguientes <funciones de combinación> se pueden usar con este elemento: SourcePriority, DestinationPriority, , FindFilePlaceByPatternLeafPattern, NewestVersion, HigherValue()y LowerValue().

Sintaxis:

<merge script="ScriptInvocation">
</merge>
Configuración ¿Es obligatorio? Valor
Guión Script seguido de cualquier número de argumentos de cadena separados por una coma y entre paréntesis. Por ejemplo, MyScripts.AScript ("Arg1","Arg2").

Se llama al script para cada objeto enumerado por los conjuntos de objetos de la <regla de inclusión> . El script de filtro devuelve un valor booleano. Si el valor devuelto es TRUE, se migra el objeto. Si es FALSE, no se migra.

El ejemplo siguiente es del MigUser.xml archivo :

<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>

<funciones de combinación>

Estas funciones controlan cómo se resuelven las colisiones.

  • DestinationPriority

    Especifica que se mantenga el objeto que se encuentra en el equipo de destino y no se migre el objeto desde el equipo de origen.

    Por ejemplo:

    <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

    La función FindFilePlaceByPattern guarda los archivos con un contador de incremento cuando se produce una colisión. Es una cadena que contiene una de cada construcción: <F>, <E>, <N> en cualquier orden.

    Sintaxis: FindFilePlaceByPattern(FilePattern)

    Configuración ¿Es obligatorio? Valor
    FilePattern
    • <F> se reemplaza por el nombre de archivo original.
    • <N> se reemplaza por un contador de incremento hasta que no hay ninguna colisión con los objetos en el equipo de destino.
    • <E> se reemplaza por la extensión de nombre de archivo original.

    Por ejemplo, <F> (<N>).<E> cambia el archivo MyDocument.doc de origen en MyDocument (1).doc en el equipo de destino.
  • NewestVersion

    La función NewestVersion resuelve conflictos en el equipo de destino en función de la versión del archivo.

    Sintaxis: NewestVersion(VersionTag)

    Configuración ¿Es obligatorio? Valor
    VersionTag Campo de versión que está activado. Este campo puede ser FileVersion o ProductVersion. El archivo con la versión versionTag más alta determina qué conflictos se resuelven en función de la versión del archivo. Por ejemplo, si Myfile.txt contiene FileVersion 1 y el mismo archivo en el equipo de destino contiene FileVersion 2, el archivo en destino permanece.
  • HigherValue()

    Esta función se puede usar para combinar valores del Registro. Los valores del Registro se evalúan como valores numéricos y el que tiene el valor superior determina qué valores del Registro se combinan.

  • LowerValue()

    Esta función se puede usar para combinar valores del Registro. Los valores del Registro se evalúan como valores numéricos y el que tiene el valor inferior determina qué valores del Registro se combinan.

  • SourcePriority

    Especifica que se migrará el objeto desde el equipo de origen y se eliminará el objeto que se encuentra en el equipo de destino.

    Por ejemplo:

    <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>
    

<Migración>

El <elemento de migración> es el elemento raíz único de un archivo de.xml de migración y es necesario. Cada archivo.xml debe tener un urlid de migración único. El urlid de cada archivo especificado en la línea de comandos debe ser único. Los urlids deben ser únicos porque USMT usa el urlid para definir los componentes del archivo.

Sintaxis:

<migration urlid="*UrlID/*Name">
</migration>
Configuración ¿Es obligatorio? Valor
urlid UrlID es un identificador de cadena que identifica de forma única este archivo de.xml . Este parámetro debe ser un nombre sin dos puntos tal y como se define en la especificación Espacios de nombres XML. Cada archivo de.xml de migración debe tener un urlid único. Si dos archivos de.xml de migración tienen el mismo urlid, el segundo archivo .xml especificado en la línea de comandos no se procesa. Para obtener más información sobre los espacios de nombres XML, consulte Uso de espacios de nombres XML.
Nombre No Aunque no es necesario, se recomienda usar el nombre del archivo .xml .

El ejemplo siguiente es del MigApp.xml archivo :

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

MigXMLHelper.FileProperties

Esta función auxiliar de filtro se puede usar para filtrar la migración de archivos en función del tamaño de archivo y los atributos de fecha.

Función auxiliar MigXMLHelper.FileProperties (propiedad, operador, valueToCompare)
Propiedad filesize, dateCreated, dateModified, dateAccessed
Operador range, neq, lte, lt, eq, gte, gt
valueToCompare Valor que se está comparando. Por ejemplo:
Fecha: "2023/05/15-2020/05/17", "2023/05/15"
Tamaño: un número con B, KB, MB o GB al final. "5GB", "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>

El <elemento namedElements> se puede usar para definir elementos con nombre. Estos elementos se pueden usar en cualquier componente a lo largo del archivo .xml . Para obtener un ejemplo de cómo usar este elemento, vea el MigApp.xml archivo .

Sintaxis:

<namedElements>
</namedElements>

Para obtener un ejemplo de este elemento, vea el MigApp.xml archivo .

<Objeto>

El <elemento object> representa un archivo o una clave del Registro.

Sintaxis:

<object>
</object>

El ejemplo siguiente es del MigApp.xml archivo :

<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>

<objectSet>

El <elemento objectSet> contiene una lista de patrones de objeto; por ejemplo, rutas de acceso de archivo, ubicaciones del Registro, etc. Los elementos de condiciones> secundarias< se evalúan primero. Si todos los elementos de condiciones> secundarias< devuelven FALSE, el <elemento objectSet> se evalúa como un conjunto vacío. Para cada elemento primario, solo puede haber varios <elementos objectSet> .

Sintaxis:

<objectSet>
</objectSet>

El ejemplo siguiente es del MigUser.xml archivo :

<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 es un elemento USMT interno. No use este elemento.

<Caminos>

Este elemento es un elemento USMT interno. No use este elemento.

<patrón>

Este elemento se puede usar para especificar varios objetos. Se pueden usar varios <elementos de patrón> para cada <elemento objectSet> y se combinan. Si especifica archivos, Microsoft recomienda usar GenerateDrivePatterns con <script> en su lugar. GenerateDrivePatterns es básicamente lo mismo que una <regla de patrón> , sin la especificación de la letra de unidad. Por ejemplo, las dos líneas de código siguientes son similares:

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

  • Elementos primarios:<objectSet>

  • Elementos secundarios: ninguno excepto Path [object] debe ser válido.

Sintaxis:

<pattern type="typeID">Path [object]</pattern>
Configuración ¿Es obligatorio? Valor
tipo typeID puede ser Registry, File o Ini. Si typeId es Ini, no se permite un espacio entre Path y el objeto . Por ejemplo, el siguiente formato es correcto cuando type="Ini":
<pattern type="Ini">%WinAmp5InstPath%\Winamp.ini|WinAmp[keeponscreen]</pattern>
Ruta de acceso [objeto] Un patrón de ruta de acceso de archivo o registro válido, seguido de al menos un espacio, seguido de corchetes [] que contienen el objeto que se va a migrar.
  • La ruta de acceso puede contener el carácter comodín asterisco (*) o puede ser una variable de entorno reconocida. El signo de interrogación no se puede usar como carácter comodín. HKCU y HKLM se pueden usar para hacer referencia a HKEY_CURRENT_USER y HKEY_LOCAL_MACHINE respectivamente.
  • El objeto puede contener el carácter comodín asterisco (*). Sin embargo, el signo de interrogación no se puede usar como carácter comodín. Por ejemplo:
    C:\Folder\ [*] enumera todos los archivos de C:\Folder , pero no subcarpetas de C:\Folder.
    C:\Folder* [*] enumera todos los archivos y subcarpetas de C:\Folder.
    C:\Folder\ [*.mp3] enumera todos los .mp3 archivos de C:\Folder.
    C:\Folder\ [Sample.doc] enumera solo el Sample.doc archivo ubicado en C:\Folder.
    Nota
    Si migra un archivo que tiene un carácter de corchete ([ o ]) en el nombre de archivo, se debe insertar un carácter de zanahoria (^) directamente antes del corchete para que sea válido. Por ejemplo, si hay un archivo denominado "file].txt", <pattern type="File">c:\documents\mydocs [file^].txt]</pattern> debe especificarse en lugar de <pattern type="File">c:\documents\mydocs [file].txt]</pattern>.

Por ejemplo:

  • Para migrar una sola clave del Registro:

    <pattern type="Registry">HKLM\Software\Microsoft\Windows\CurrentVersion\Internet Settings\Cache [Persistent]</pattern>
    
  • Para migrar la C:\EngineeringDrafts carpeta y las subcarpetas de la unidad C::

    <pattern type="File">C:\EngineeringDrafts\* [*]</pattern>
    
  • Para migrar solo la C:\EngineeringDrafts carpeta, excepto las subcarpetas, desde la unidad C::

    Volver a enrutar archivos y configuraciones

  • Para migrar el Sample.doc archivo desde C:\EngineeringDrafts:

    <pattern type="File"> C:\EngineeringDrafts\ [Sample.doc]</pattern>
    
  • Para migrar el Sample.doc archivo desde donde existe en la unidad C: use el patrón de la siguiente manera. Si existen varios archivos con el mismo nombre en la unidad C:, se migran todos estos archivos.

    <pattern type="File"> C:\* [Sample.doc] </pattern>
    
  • Para obtener más ejemplos de cómo usar este elemento, vea Excluir archivos y configuraciones, Volver a enrutar archivos y configuraciones, Incluir archivos y configuraciones y Ejemplos XML personalizados.

<Tratamiento>

Este elemento se puede usar para ejecutar un script durante un punto específico dentro del proceso de migración. No se esperan valores devueltos de los scripts especificados. Si hay valores devueltos, se omiten.

  • Número de repeticiones: ilimitado

  • Elementos primarios:<rules>

  • Elemento secundario necesario:<script>

Sintaxis:

<processing when="pre-scan|scan-success|post-scan|pre-apply|apply-success|post-apply">
</processing>
Configuración ¿Es obligatorio? Valor
Cuando Indica cuándo se debe ejecutar el script. Este valor puede ser uno de los siguientes valores:
  • pre-scan significa antes de que comience el proceso de escaneo.
  • scan-success significa que una vez que el proceso de escaneo finaliza correctamente.
  • post-scan significa una vez finalizado el proceso de digitalización, tanto si se ha realizado correctamente como si no.
  • pre-apply significa antes de que comience el proceso de aplicación.
  • apply-success significa que una vez que el proceso de aplicación finaliza correctamente.
  • post-apply significa una vez finalizado el proceso de aplicación, tanto si se ha realizado correctamente como si no.

<Plugin>

Este elemento es un elemento USMT interno. No use este elemento.

<Papel>

El <elemento role> es necesario en un archivo de.xml personalizado. Cuando se especifica el <elemento role> , se puede crear un componente concreto. El componente se define mediante los parámetros especificados en el nivel de <componente> y con el rol que se especifica aquí.

Sintaxis:

<role role="Container|Binaries|Settings|Data">
</role>
Configuración ¿Es obligatorio? Valor
Papel Define el rol para el componente. El rol puede ser uno de los siguientes:
  • Contenedor
  • Binarios
  • Configuración
  • Datos
Se puede especificar uno de los siguientes elementos:
  1. Hasta tres <elementos de rol> dentro de un <componente> : un elemento de rol "Archivos binarios", un elemento de rol "Settings" y un elemento de rol "Data". Estos parámetros no cambian el comportamiento de la migración: su único propósito es ayudar a clasificar la configuración que se va a migrar. Estos <elementos de rol> se pueden anidar, pero cada elemento anidado debe ser del mismo parámetro de rol.
  2. Un elemento de rol> "Contenedor"< dentro de un <elemento de componente>. En este caso, no se pueden especificar elementos de reglas> secundarias<, solo otros <elementos de componente>. Y cada elemento de componente> secundario< debe tener el mismo tipo que el del elemento de componente> primario<. Por ejemplo:
<component context="UserAndSystem" type="Application">
<displayName _locID="migapp.msoffice2016">Microsoft Office 2016</displayName>
<environment name="GlobalEnv" />
<role role="Container">
<detection name="AnyOffice2016Version" />
<detection name="Word2016" />
<!--
Configuración común de Office 2016
-->
<component context="UserAndSystem" type="Application">

El ejemplo siguiente es del MigUser.xml archivo . Para obtener más ejemplos, vea el MigApp.xml archivo:

<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>

<reglas>

El <elemento rules> es necesario en un archivo de.xml personalizado. Este elemento contiene reglas que se ejecutan durante la migración si el elemento del componente> primario< está seleccionado, a menos que el elemento de condiciones> secundario<, si está presente, se evalúe como FALSE. Para cada <elemento rules>, puede haber varios elementos de reglas> secundarias<.

Sintaxis:

<rules name="ID" context="User|System|UserAndSystem">
</rules>
Configuración ¿Es obligatorio? Valor
name Sí, cuando <las reglas> son un elemento secundario para <namedElements>
No, cuando <las reglas> son secundarias para cualquier otro elemento
Cuando se especifica id ., no se procesan los elementos secundarios. En su lugar, se procesan los demás <elementos de reglas> con el mismo nombre que se declaran dentro de <namedElements> .
Contexto No
(valor predeterminado = UserAndSystem)
Define el ámbito de este parámetro: si se va a procesar este componente en el contexto del usuario específico, en todo el sistema operativo o en ambos.
El mayor ámbito posible lo establece el elemento de componente. Por ejemplo, si un <elemento de componente> tiene un contexto de User y un <elemento rules> tenía un contexto de UserAndSystem, el <elemento rules> actuaría como si tuviera un contexto de User. Si <las reglas> tuvieran un contexto de Sistema, actuaría como si <las reglas> no estuvieran allí.
  • Usuario: evalúa las variables de cada usuario.
  • Sistema: evalúa las variables solo una vez para el sistema.
  • UserAndSystem: evalúa las variables de todo el sistema operativo y de cada usuario.

El ejemplo siguiente es del MigUser.xml archivo :

<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>

<Guión>

El valor devuelto que requiere <el script> depende del elemento primario.

Número de repeticiones: Una vez para variable<>, ilimitado para <objectSet> y <procesamiento>

Elementos primarios:<objectSet>, <variable>, <procesamiento>

Elementos secundarios: none

Sintaxis y funciones auxiliares:

  • Sintaxis general: <script>ScriptWithArguments</script>

  • GetStringContent se puede usar cuando <el script> está dentro de la< variable> .

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

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

  • GenerateUserPatterns se puede usar cuando <el script> está dentro de< objectSet>.

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

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

  • GenerateDrivePatterns se puede usar cuando <el script> está dentro de< objectSet>.

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

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

  • Los scripts de ejecución simple se pueden usar con <elementos de script> que están dentro de <los elementos de procesamiento> : AskForLogoff, ConvertToShortFileName, KillExplorer, RemoveEmptyDirectories, RestartExplorer, RegisterFonts, StartService, StopService, SyncSCM.

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

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

Configuración ¿Es obligatorio? Valor
ScriptWithArguments Script seguido de cualquier número de argumentos de cadena separados por una coma y entre paréntesis. Por ejemplo, MyScripts.AScript ("Arg1","Arg2").
Se llama al script para cada objeto enumerado por los conjuntos de objetos de la <regla de inclusión> . El script de filtro devuelve un valor booleano. Si el valor devuelto es TRUE, se migra el objeto. Si es FALSE, no se migra.
El valor devuelto que requiere <el script> depende del elemento primario.
  • Cuando se usa dentro de <variable>, el valor devuelto debe ser una cadena.
  • Cuando se usa en <objectSet>, el valor devuelto debe ser una matriz bidimensional de cadenas.
  • Cuando se usa dentro de <location>, el valor devuelto debe ser una ubicación válida que se alinee con el atributo type de <location>. Por ejemplo, si <location type="File">, el elemento de script secundario, si se especifica, debe ser una ubicación de archivo válida.
    Nota
    Si migra un archivo que tiene un carácter de corchete ([ o ]) en el nombre de archivo, inserte el carácter carrot (^) directamente antes del corchete para que sea válido. Por ejemplo, si hay un archivo denominado "file].txt", especifique <pattern type="File">c:\documents\mydocs [file^].txt]</pattern> en lugar de <pattern type="File">c:\documents\mydocs [file].txt]</pattern>.

Ejemplos:

Para migrar el archivo Sample.doc desde cualquier unidad del equipo de origen, use <el script> como se indica a continuación. Si existen varios archivos con el mismo nombre, se migran todos estos archivos.

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

Para obtener más ejemplos de cómo usar este elemento, vea Excluir archivos y configuraciones, Volver a enrutar archivos y configuraciones y Ejemplos XML personalizados.

<funciones de script>

Las siguientes funciones se pueden usar con el <elemento script>

Funciones de generación de cadenas y patrones

Estas funciones devuelven una cadena o un patrón.

  • GetStringContent

    GetStringContent se puede usar con elementos de <script> que están dentro de <elementos variables> . Si es posible, esta función devuelve la representación de cadena del objeto especificado. De lo contrario, devuelve NULL. En el caso de los objetos de archivo, esta función siempre devuelve NULL.

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

    Configuración ¿Es obligatorio? Valor
    Objecttype Tipo de objeto. Puede ser Registry o Ini (para un archivo .ini ).
    EncodedLocationPattern
    • Si el tipo de objeto es Registry, EncodedLocationPattern debe ser una ruta de acceso del Registro válida. Por ejemplo, HKLM\SOFTWARE\MyKey[].
    • Si el tipo de objeto es Ini, EncodedLocationPattern debe tener el formato siguiente:
      IniFilePath|SectionName[SettingName]
    ExpandContent No (default=TRUE) Puede ser TRUE o FALSE. Si es FALSE, la ubicación especificada no se expande antes de devolverla.

    Por ejemplo:

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

    La GenerateDrivePatterns función recorre en iteración todas las unidades disponibles y selecciona las que coinciden con el tipo de unidad solicitado. A continuación, concatena las unidades seleccionadas con la parte final de PatternSegment para formar un patrón de archivo codificado completo. Por ejemplo, si PatternSegment es Path [file.txt] y DriveType es Fixed, la función genera y otros patrones si hay unidades fijas distintas C:\Path [file.txt]de C:. Las variables de entorno no se pueden especificar con esta función. GenerateDrivePatternsse puede usar con <elementos de script> que están dentro de< objectSet> que están dentro de< include>/<exclude>.

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

    Configuración ¿Es obligatorio? Valor
    PatternSegment Sufijo de un patrón codificado. El valor se concatena con una especificación de unidad, como "c:", para formar un patrón de archivo codificado completo. Por ejemplo, "* [*.doc]". PatternSegment no puede ser una variable de entorno.
    DriveType Tipo de unidad para el que se van a generar los patrones. Se puede especificar uno de los siguientes elementos:
    • Fijo
    • CDROM
    • Extraíble
    • Remoto

    Vea el último componente del MigUser.xml archivo para obtener un ejemplo de este elemento.

  • GenerateUserPatterns

    La GenerateUserPatterns función recorre en iteración todos los usuarios que se están migrando, excepto el usuario procesado actualmente si <ProcessCurrentUser> es FALSE, y expande el patrón especificado en el contexto de cada usuario. Por ejemplo, si los usuarios A, B y C tienen perfiles en C:\Users, mediante una llamada a GenerateUserPattens('File','%userprofile% [*.doc]','TRUE'), la función auxiliar genera los tres patrones siguientes:

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

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

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

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

    Configuración ¿Es obligatorio? Valor
    Objecttype Define el tipo de objeto. Puede ser Archivo o Registro.
    EncodedLocationPattern Patrón de ubicación. Se permiten variables de entorno.
    ProcessCurrentUser Puede ser TRUE o FALSE. Indica si se deben generar los patrones para el usuario actual.

Por ejemplo:

Si GenerateUserPattens('File','%userprofile% [*.doc]','FALSE') se llama a mientras USMT procesa el usuario A, esta función solo genera patrones para los usuarios B y C. Esta función auxiliar se puede usar para compilar reglas complejas. Por ejemplo, para migrar todos los .doc archivos desde el equipo de origen, pero si el usuario X no se migra, no migre ninguno de los .doc archivos del perfil del usuario X.

El ejemplo siguiente es código de ejemplo para este escenario. El primer <elemento rules> migra todos los .doc archivos del equipo de origen, excepto los que se encuentran dentro de C:\Users. Los elementos de segunda< regla> migran todos los .doc archivos, C:\Users excepto los .doc archivos de los perfiles de los demás usuarios. Dado que el segundo <elemento rules> se procesa en cada contexto de usuario migrado, el resultado final es el comportamiento deseado. El resultado final es el 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

La MigXmlHelper.GenerateDocPatterns función auxiliar invoca al buscador de documentos para examinar el sistema en busca de todos los archivos que se pueden migrar. Se puede invocar en el contexto del sistema o del usuario para centrar el examen.

Configuración ¿Es obligatorio? Valor
ScanProgramFiles No (valor predeterminado = FALSE) Puede ser TRUE o FALSE. El parámetro ScanProgramFiles determina si el buscador de documentos examina o no el directorio Archivos de programa para recopilar extensiones de archivo registradas para aplicaciones conocidas. Por ejemplo, cuando se establece en TRUE , detecta y migra .jpg archivos en el directorio de Photoshop, si .jpg es una extensión de archivo registrada en Photoshop.
IncludePatterns No (valor predeterminado = TRUE) Puede ser TRUE o FALSE. TRUE genera patrones de inclusión y se puede agregar en el <elemento include> . FALSE genera patrones de exclusión y se puede agregar en el <elemento exclude> .
Systemdrive No (valor predeterminado = FALSE) Puede ser TRUE o FALSE. Si es TRUE, restringe todos los patrones a la unidad del 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>

Ejecución sencilla de scripts

Los scripts siguientes no tienen ningún valor devuelto. Los siguientes errores se pueden usar con <elementos de script> que están dentro de los elementos de< procesamiento>.

  • AskForLogoff(). Solicita al usuario que cierre la sesión al final de la migración. Por ejemplo:

    <processing when="apply-success">
      <script>MigXmlHelper.AskForLogoff()</script>
    </processing>
    
  • ConvertToShortFileName(RegistryEncodedLocation). Si RegistryEncodedLocation es la ruta de acceso completa de un archivo existente, esta función convierte el archivo en su nombre de archivo corto y, a continuación, actualiza el valor del Registro.

  • KillExplorer(). Detiene Explorer.exe para el contexto de usuario actual. Detener Explorer.exe permite el acceso a determinadas claves y archivos que se mantienen abiertos cuando se ejecuta Explorer.exe. Por ejemplo:

    <processing when="pre-apply">
      <script>MigXmlHelper.KillExplorer()</script>
    </processing>
    
  • RegisterFonts(FileEncodedLocation). Registra la fuente especificada o todas las fuentes del directorio especificado. Por ejemplo:

 <processing when="apply-success">
   <script>MigXmlHelper.RegisterFonts("%CSIDL_COMMON_FONTS%")</script>
 </processing>
  • RemoveEmptyDirectories (DirectoryEncodedPattern). Elimina los directorios vacíos que coincidan con DirectoryEncodedPattern en el equipo de destino.

  • RestartExplorer(). Reinicia Explorer.exe al final de la migración. Por ejemplo:

    <processing when="post-apply">
      <script>MigXmlHelper.RestartExplorer()</script>
    </processing>
    
  • StartService (ServiceName, OptionalParam1, OptionalParam2,...). Inicia el servicio identificado por ServiceName. ServiceName es la subclave en HKLM\System\CurrentControlSet\Services que contiene los datos del servicio especificado. Los parámetros opcionales, si los hay, se pasan a la API StartService. Para obtener más información, vea el artículo Función StartServiceA (winsvc.h).

  • StopService (ServiceName). Detiene el servicio identificado por ServiceName. ServiceName es la subclave en HKLM\System\CurrentControlSet\Services que contiene los datos del servicio especificado.

  • SyncSCM(ServiceShortName). Lee el valor de Tipo de inicio del Registro (HKLM\System\CurrentControlSet\Services\ServiceShortName [Start]) después de que el motor de migración cambie el valor y, a continuación, sincroniza Service Control Manager (SCM) con el nuevo valor.

<Texto>

El <elemento text> se puede usar para establecer un valor para las variables de entorno que se encuentran dentro de uno de los archivos de.xml de migración.

Sintaxis:

<text>NormalText</text>
Configuración Valor
NormalText Este texto se interpreta como texto normal.

Por ejemplo:

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

<unconditionalExclude>

El <elemento unconditionalExclude> excluye los archivos y valores del Registro especificados de la migración, independientemente de las demás reglas de inclusión en cualquiera de los archivos de.xml de migración o en el Config.xml archivo. Los objetos declarados aquí no se migran porque este elemento tiene prioridad sobre todas las demás reglas. Por ejemplo, aunque haya reglas de inclusión> explícitas< para incluir .mp3 archivos, si se excluyen con esta opción, no se migran.

Use este elemento para excluir todos los .mp3 archivos del equipo de origen. O bien, si se realiza una C:\UserData copia de seguridad con otro método, toda la carpeta se puede excluir de la migración. Use este elemento con precaución. Si una aplicación necesita un archivo excluido, es posible que la aplicación no funcione correctamente en el equipo de destino.

  • Número de repeticiones: Ilimitado.

  • Elementos primarios:<rules>

  • Elementos secundarios:<objectSet>

Sintaxis:

<unconditionalExclude></unconditionalExclude>

El siguiente archivo .xml excluye todos los .mp3 archivos de la migración. Para obtener ejemplos adicionales de cómo usar este elemento, vea Excluir archivos y configuración.

<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>

<Variable>

El <elemento variable> es necesario en un elemento de< entorno>. Para cada <elemento de variable> debe haber un <elemento objectSet>, <script> o <text> . El contenido del <elemento variable> asigna un valor de texto a la variable de entorno. Este elemento tiene las tres opciones siguientes:

  1. Si el <elemento variable> contiene un <elemento de texto> , el valor del elemento variable es el valor del <elemento de texto> .

  2. Si el <elemento variable> contiene un <elemento script> y la invocación del script genera una cadena que no es null, el valor del <elemento variable> es el resultado de la invocación del script.

  3. Si el <elemento variable> contiene un <elemento objectSet> y la evaluación del <elemento objectSet> genera al menos un patrón de objeto, el valor del primer objeto que coincida con el patrón de objeto resultante es el valor del elemento variable.

Sintaxis:

<variable name="ID" remap=TRUE|FALSE>
</variable>
Configuración ¿Es obligatorio? Valor
name Id es un valor de cadena que es el nombre que se usa para hacer referencia a la variable de entorno. Microsoft recomienda que el identificador comience por el nombre del componente para evitar colisiones de espacio de nombres. Por ejemplo, si el nombre del componente es MyComponent y se desea una variable que sea la ruta de instalación del componente, MyComponent.InstallPathpodría especificarse.
Remap No, default = FALSE Especifica si se debe evaluar esta variable de entorno como una variable de entorno de reasignación. Los objetos que se encuentran en una ruta de acceso que se encuentra debajo del valor de esta variable de entorno se mueven automáticamente a donde apunta la variable de entorno en el equipo de destino.

El ejemplo siguiente es del MigApp.xml archivo :

<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>

<versión>

El <elemento version> define la versión del componente, pero no afecta a la migración.

  • Número de repeticiones: cero o uno

  • Elementos primarios:<componente>

  • Elementos secundarios: none

Sintaxis:

<version>ComponentVersion</version>
Configuración ¿Es obligatorio? Valor
ComponentVersion Versión del componente, que puede contener patrones.

Por ejemplo:

<version>4.*</version>

<windowsObjects>

El <elemento windowsObjects> es solo para uso interno de USMT. No use este elemento.

Apéndice

Especificación de ubicaciones

  • Especificación de ubicaciones codificadas. La ubicación codificada utilizada en todas las funciones auxiliares es una representación de cadena inequívoca para el nombre de un objeto. La ubicación codificada se compone de la parte del nodo, seguida opcionalmente de la hoja entre corchetes. Este formato hace una distinción clara entre nodos y hojas.

    Por ejemplo, especifique el archivo C:\Windows\Notepad.exe de la siguiente manera: c:\Windows[Notepad.exe]. Del mismo modo, especifique el directorio C:\Windows\System32 de la siguiente manera: c:\Windows\System32. (Observe la ausencia de la [] construcción).

    Representar el registro es similar. El valor predeterminado de una clave del Registro se representa como una construcción vacía [] . Por ejemplo, el valor predeterminado de la clave del HKLM\SOFTWARE\MyKey Registro es HKLM\SOFTWARE\MyKey[].

  • Especificación de patrones de ubicación. Especificar un patrón de ubicación es similar a especificar una ubicación real. La excepción es que tanto el nodo como la parte hoja aceptan patrones. Sin embargo, un patrón del nodo no se extiende a la hoja.

    Por ejemplo, el patrón c:\Windows\* coincide con el directorio de Windows y todos los subdirectorios, pero no coincide con ninguno de los archivos de esos directorios. Para que coincidan también con los archivos, c:\Windows\*[*] debe especificarse.

Funciones internas de USMT

Las siguientes funciones son solo para uso interno de USMT. No los use en un archivo .xml .

  • AntiAlias

  • ConvertScreenSaver

  • ConvertShowIEOnDesktop

  • ConvertToOfficeLangID

  • MigrateActiveDesktop

  • MigrateAppearanceUPM

  • MigrateDisplayCS

  • MigrateDisplaySS

  • MigrateIEAutoSearch

  • MigrateMouseUPM

  • MigrateSoundSysTray

  • MigrateTaskBarss

  • SetPstPathInMapiStruc

Etiquetas de versión válidas

Las siguientes etiquetas de versión se pueden usar con varias funciones auxiliares:

  • "CompanyName"

  • "FileDescription"

  • "FileVersion"

  • "InternalName"

  • "LegalCopyright"

  • "OriginalFilename"

  • "ProductName"

  • "ProductVersion"

Las siguientes etiquetas de versión contienen valores que se pueden comparar:

  • "FileVersion"

  • "ProductVersion"