Biblioteca de elementos XML
Introducción
En este tema se explican los elementos XML y las funciones auxiliares que te permiten crear archivos .xml de migración para usarlos con la herramienta de migración de estado de usuario (USMT). Se da por sentado que comprendes los conceptos básicos de XML .
En este tema
Además de los elementos XML y las funciones auxiliares, en este tema se describe cómo especificar ubicaciones codificadas y patrones de ubicaciones, funciones que son solo para uso interno de USMT y las etiquetas de versión que puedes usar con las funciones auxiliares.
Elementos y funciones auxiliares
Apéndice
Especificación de ubicaciones
Funciones internas de USMT
Etiquetas de versión válidas
Elementos y funciones auxiliares
En la siguiente tabla, se describen los elementos XML y las funciones auxiliares que puedes usar con USMT.
Elementos de la A a la K | Elementos de la L a la Z | Funciones auxiliares |
---|---|---|
<addObjects> <attributes> <bytes> <commandLine> <component> <condition> <conditions> <content> <contentModify> <description> <destinationCleanup> <detect> <detects> <detection> <displayName> <environment> <exclude> <excludeAttributes> <extensions> <extension> <externalProcess> <icon> <include> <includeAttributes> |
<library> <location> <locationModify> <_locDefinition> <manufacturer> <merge> <migration> <namedElements> <object> <objectSet> <path> <paths> <pattern> <processing> <plugin> <role> <rules> <script> <text> <unconditionalExclude> <variable> <version> <windowsObjects> |
Funciones <condition> Funciones <content> Funciones <contentModify> Funciones de filtro <include> y <exclude> Funciones <locationModify> Funciones <merge> Funciones <script> Funciones internas de USMT |
<addObjects>
El elemento <addObjects> emula la existencia de uno o varios objetos en el equipo de origen. Los elementos secundarios <object> proporcionan los detalles de los objetos emulados. Si el contenido es un elemento <script>, el resultado de la invocación será una matriz de objetos.
Número de repeticiones: ilimitado
Elementos principales: <rules>
Elementos secundarios necesarios: <object>. Además, debes especificar <location> y <attributes> como elementos secundarios de este elemento <object>.
Elementos secundarios opcionales: <conditions>, <condition>, <script>
Sintaxis:
<addObjects>
</addObjects>
El siguiente ejemplo pertenece al archivo MigApp.xml:
<addObjects>
<object>
<location type="Registry">%HklmWowSoftware%\Microsoft\Office\12.0\Common\Migration\Office [UpgradeVersion]</location>
<attributes>DWORD</attributes>
<bytes>0B000000</bytes>
</object>
<object>
<location type="Registry">%HklmWowSoftware%\Microsoft\Office\12.0\Common\Migration\Office [Lang]</location>
<attributes>DWORD</attributes>
<bytes>00000000</bytes>
</object>
</addObjects>
<attributes>
El elemento <attributes> define los atributos de una clave del Registro o un archivo.
Número de repeticiones: una por cada <object>
Elementos principales: <object>
Elementos secundarios: ninguno
Sintaxis:
<attributes>Contenido</attributes>
Parámetro | ¿Obligatorio? | Valor |
---|---|---|
Contenido |
Sí |
El contenido depende del tipo de objeto especificado.
|
El siguiente ejemplo pertenece al archivo MigApp.xml:
<object>
<location type="Registry">%HklmWowSoftware%\Microsoft\Office\12.0\Common\Migration\Office [Lang]</location>
<attributes>DWORD</attributes>
<bytes>00000000</bytes>
</object>
<bytes>
Debes especificar el elemento <bytes> solamente para archivos, ya que, si el elemento <location> corresponde a una clave del Registro o a un directorio, <bytes> se omitirá.
Número de repeticiones: cero o una
Elementos principales: <object>
Elementos secundarios: ninguno
Sintaxis:
<bytes string="Yes|No" expand="Yes|No">Contenido</bytes>
Parámetro | ¿Obligatorio? | Valor |
---|---|---|
cadena |
No, el valor predeterminado es “No” |
Determina si Contenido debe interpretarse como una cadena o como bytes. |
expand |
No, el valor predeterminado es “Yes” |
Cuando el parámetro “expand” es “Yes”, el contenido del elemento <bytes> se expande primero en el contexto del equipo de origen y se interpreta después. |
Contenido |
Sí |
Depende del valor de la cadena.
|
El siguiente ejemplo pertenece al archivo MigApp.xml:
<object>
<location type="Registry">%HklmWowSoftware%\Microsoft\Office\12.0\Common\Migration\Office [Lang]</location>
<attributes>DWORD</attributes>
<bytes>00000000</bytes>
</object>
<commandLine>
Tal vez quieras usar el elemento <commandLine> 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 principales: <externalProcess>
Elementos secundarios: ninguno
Sintaxis:
<commandLine>CadenaDeLíneaDeComandos</commandLine>
Parámetro | ¿Obligatorio? | Valor |
---|---|---|
CadenaDeLíneaDeComandos |
Sí |
Una línea de comandos válida. |
<component>
El elemento <component> es necesario en un archivo .xml personalizado. Este elemento define la construcción más básica de un archivo .xml de migración. Por ejemplo, en el archivo MigApp.xml, “Microsoft(R) Office 2003” es un componente que contiene otro componente, “Microsoft Office Access(R) 2003”. Puedes usar estos elementos secundarios para definir el componente.
Un componente puede estar anidado dentro de otro; es decir, el elemento <component> puede ser un elemento secundario del elemento <role> dentro del elemento <component>. Esto puede suceder en dos casos: 1) cuando el elemento principal <component> es un contenedor o 2) cuando el elemento secundario <component> tiene el mismo rol que el elemento principal <component>.
Número de repeticiones: ilimitado
Elementos principales: <migration>, <role>
Elementos secundarios necesarios: <role>, <displayName>
Elementos secundarios opcionales: <manufacturer>, <version>, <description>, <paths>, <icon>, <environment>, <extensions>
Sintaxis:
<component type="System|Application|Device|Documents" context="User|System|UserAndSystem" defaultSupported="TRUE|FALSE|YES|NO"
hidden="Yes|No">
</component>
Parámetro | ¿Obligatorio? | Valor |
---|---|---|
type |
Sí |
Puedes usar lo siguiente para agrupar valores y definir el tipo que corresponde al componente.
|
context |
No El valor predeterminado es “UserAndSystem” |
Define el ámbito de este parámetro, es decir, si este componente se debe procesar en el contexto del usuario específico, en todo el sistema operativo, o en ambos. El ámbito más amplio posible se establece con el elemento <component>. Por ejemplo, si un elemento <component> tiene un contexto de “User” y un elemento <rules> tiene un contexto de “UserAndSystem”, el elemento <rules> se comportará como si tuviera el contexto de “User”. Si un elemento <rules> tiene un contexto de “System”, se comportará como si el elemento <rules> no existiera.
|
defaultSupported |
No El valor predeterminado es “TRUE” |
Puede ser alguno de los siguientes: “TRUE”, “FALSE”, “YES” o “NO”. Si este parámetro es “FALSE” (o “NO”), el componente no se migrará, salvo que exista un componente equivalente en el equipo de destino. Cuando “type” es igual a “System” y “defaultSupported” es igual a “FALSE”, la configuración no se migrará, salvo que haya un componente equivalente en los archivos .xml que están especificados en la línea de comandos LoadState. Por ejemplo, el archivo MigSys.xml predeterminado contiene componentes donde “type” es igual a “System” y “defaultSupported”, a “FALSE”. Si especificas este archivo en la línea de comandos ScanState, también debes especificar el archivo en la línea de comandos LoadState para que se migre la configuración. Esto sucede porque la herramienta LoadState debe encontrar un componente equivalente. Es decir, el componente debe tener el mismo atributo urlid de migración que el archivo .xml y un nombre para mostrar idéntico. Si esto no sucede, la herramienta LoadState no migrará esa configuración desde el almacén. Esto es útil cuando el equipo de origen ejecuta Windows XP y se migra tanto a Windows Vista como a Windows XP, porque puedes usar el mismo almacén para los dos equipos de destino. |
hidden |
|
Este parámetro es solo para uso interno de USMT. |
Para obtener un ejemplo, consulta alguno de los archivos .xml de migración predeterminados.
<condition>
Aunque se admite el elemento <condition> que pertenece a los elementos <detect>, <objectSet> y <addObjects>, te recomendamos que no lo uses. Es posible que este elemento quede desusado en versiones futuras de USMT, y debas reescribir tus scripts. Te recomendamos que, en caso de que necesites usar una condición dentro de los elementos <objectSet> y <addObjects>, uses un elemento <conditions> más eficaz, que te permita formular instrucciones booleanas complejas.
El elemento <condition> tiene un resultado booleano. Puedes usar este elemento para especificar las condiciones en las que se evaluará el elemento principal. Si alguna de las condiciones actuales devuelve “FALSE”, no se evaluará el elemento principal.
Número de repeticiones: ilimitado
Elementos principales: <conditions>, <detect>, <objectSet> y <addObjects>
Elementos secundarios: ninguno
Funciones auxiliares: puedes usar las siguientes funciones Funciones <condition> con este elemento: DoesOSMatch, IsNative64Bit(), IsOSLaterThan, IsOSEarlierThan, DoesObjectExist, DoesFileVersionMatch, IsFileVersionAbove, IsFileVersionBelow, IsSystemContext, DoesStringContentEqual, DoesStringContentContain, IsSameObject, IsSameContent e IsSameStringContent.
Sintaxis:
<condition negation="Yes|No">NombreDeScript</condition>
Parámetro | ¿Obligatorio? | Valor |
---|---|---|
negation |
No El valor predeterminado es “No” |
“Yes” revierte el valor verdadero o falso de la condición. |
NombreDeScript |
Sí |
Un script que se definió en esta sección de la migración. |
Por ejemplo:
En la muestra de código a continuación, los elementos <condition>, A y B se unen con el operador “AND” porque están en secciones <conditions> diferentes. Por ejemplo:
<detection>
<conditions>
<condition>A</condition>
</conditions>
<conditions operation="AND">
<condition>B</condition>
</conditions>
</detection>
De todos modos, en la muestra de código a continuación, los elementos <condition>, A y B se unen con el operador “OR” porque están la misma sección <conditions>.
<detection>
<conditions>
<condition>A</condition>
<condition>B</condition>
</conditions>
</detection>
Funciones <condition>
La función <condition> devuelve un valor booleano. Puedes usar estos elementos con condiciones <addObjects>.
Funciones de la versión del sistema operativo
Funciones de contenido de objetos
Funciones de la versión del sistema operativo
DoesOSMatch
Ninguna coincidencia distingue mayúsculas de minúsculas.
Sintaxis: DoesOSMatch("TipoDeSO","VersiónDeSO")
Parámetro ¿Obligatorio? Valor TipoDeSO
Sí
El único valor válido para esta configuración es NT. De todos modos, ten en cuenta que debes establecer esta configuración para que las funciones <condition> operen correctamente.
VersiónDeSO
Sí
La versión principal, la versión secundaria, el número de compilación y la versión corregida del disquete de servicio separados por puntos. Por ejemplo,
5.0.2600.Service Pack 1
. También puedes hacer una especificación parcial de la versión con un patrón. Por ejemplo,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
Ninguna comparación distingue mayúsculas de minúsculas.
Sintaxis: IsOSLaterThan("TipoDeSO","VersiónDeSO")
Parámetro ¿Obligatorio? Valor TipoDeSO
Sí
Puede ser 9x o NT. Si TipoDeSO no coincide con el tipo de sistema operativo actual, devuelve “FALSE”. Por ejemplo, si el sistema operativo actual está basado en Windows NT y TipoDeSO es “9x”, el resultado será “FALSE”.
VersiónDeSO
Sí
La versión principal, la versión secundaria, el número de compilación y la versión corregida del disquete de servicio separados por puntos. Por ejemplo,
5.0.2600.Service Pack 1
. También puedes hacer una especificación parcial de la versión, pero no se permite usar un patrón. Por ejemplo,5.0
.La función IsOSLaterThan devuelve “TRUE” si el sistema operativo actual es posterior o igual a VersiónDeSO.
Por ejemplo:
<condition negation="Yes">MigXmlHelper.IsOSLaterThan("NT","6.0")</condition>
IsOSEarlierThan
Ninguna comparación distingue mayúsculas de minúsculas.
Sintaxis: IsOSEarlierThan("TipoDeSO","VersiónDeSO")
Parámetro ¿Obligatorio? Valor TipoDeSO
Sí
Puede ser 9x o NT. Si TipoDeSO no coincide con el tipo de sistema operativo actual, devuelve “FALSE”. Por ejemplo, si el sistema operativo actual está basado en Windows NT y TipoDeSO es “9x”, el resultado será “FALSE”.
VersiónDeSO
Sí
La versión principal, la versión secundaria, el número de compilación y la versión corregida del disquete de servicio separados por puntos. Por ejemplo,
5.0.2600.Service Pack 1
. También puedes hacer una especificación parcial de la versión, pero no se permite usar un patrón. Por ejemplo,5.0
.La función IsOSEarlierThan devuelve “TRUE” si el sistema operativo actual es anterior a VersiónDeSO.
Funciones de contenido de objetos
DoesObjectExist
La función DoesObjectExist devuelve “TRUE” si existe algún objeto que coincida con el patrón de la ubicación. De lo contrario, devuelve “FALSE”. El patrón de la ubicación se expande antes de tratar de realizar la enumeración.
Sintaxis: DoesObjectExist("TipoDeObjeto","PatrónDeUbicaciónCodificado")
Parámetro ¿Obligatorio? Valor TipoDeObjeto
Sí
Define el tipo de objeto. Puede ser “File” o “Registry”.
PatrónDeUbicaciónCodificado
Sí
El Especificación de ubicaciones. Se permiten variables de entorno.
Para obtener un ejemplo de este elemento, consulta el archivo MigApp.xml.
DoesFileVersionMatch
La comprobación del patrón no distingue mayúsculas de minúsculas.
Sintaxis: DoesFileVersionMatch("UbicaciónCodificadaDeArchivo","EtiquetaDeVersión","ValorDeVersión")
Parámetro ¿Obligatorio? Valor UbicaciónCodificadaDeArchivo
Sí
El Especificación de ubicaciones del archivo que se comprobará. Se permiten variables de entorno.
EtiquetaDeVersión
Sí
El valor de Etiquetas de versión válidas que se comprobará.
ValorDeVersión
Sí
Un 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 superior a ValorDeVersión.
Sintaxis: IsFileVersionAbove(“UbicaciónCodificadaDeArchivo”,“EtiquetaDeVersión”,“ValorDeVersión”)
Parámetro ¿Obligatorio? Valor UbicaciónCodificadaDeArchivo
Sí
El Especificación de ubicaciones del archivo que se comprobará. Se permiten variables de entorno.
EtiquetaDeVersión
Sí
El valor de Etiquetas de versión válidas que se comprobará.
ValorDeVersión
Sí
El valor con el que se realizará la comparación. No se permite especificar un patrón.
IsFileVersionBelow
Sintaxis: IsFileVersionBelow(“UbicaciónCodificadaDeArchivo”,“EtiquetaDeVersión”,“ValorDeVersión”)
Parámetro ¿Obligatorio? Valor UbicaciónCodificadaDeArchivo
Sí
El Especificación de ubicaciones del archivo que se comprobará. Se permiten variables de entorno.
EtiquetaDeVersión
Sí
El valor de Etiquetas de versión válidas que se comprobará.
ValorDeVersión
Sí
El valor con el que se realizará la comparación. No se permite 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 dado es idéntica a
StringContent
.Sintaxis: DoesStringContentEqual(“TipoDeObjeto”,“PatrónDeUbicaciónCodificado”,“ContenidoDeCadena”)
Parámetro ¿Obligatorio? Valor TipoDeObjeto
Sí
Define el tipo de objeto. Puede ser “File” o “Registry”.
PatrónDeUbicaciónCodificado
Sí
La Especificación de ubicaciones del objeto que se examinará. Se permite especificar variables de entorno.
ContenidoDeCadena
Sí
La cadena con la que se va a comprobar.
Por ejemplo:
<condition negation="Yes">MigXmlHelper.DoesStringContentEqual("File","%USERNAME%","")</condition>
DoesStringContentContain
La función DoesStringContentContain devuelve “TRUE” si hay al menos una repetición de CadenaBuscada en la representación de cadena del objeto.
Sintaxis: DoesStringContentContain(“TipoDeObjeto”,“UbicaciónCodificada”,“CadenaBuscada”)
Parámetro ¿Obligatorio? Valor TipoDeObjeto
Sí
Define el tipo de objeto. Puede ser “File” o “Registry”.
PatrónDeUbicaciónCodificado
Sí
La Especificación de ubicaciones del objeto que se examinará. Se permite especificar variables de entorno.
CadenaBuscada
Sí
Una cadena que se buscará en el contenido de un objeto dado.
IsSameObject
La función IsSameObject devuelve “TRUE” si las ubicaciones codificadas dadas dan como resultado el mismo objeto físico. De lo contrario, devuelve “FALSE”.
Sintaxis: IsSameObject(“TipoDeObjeto”,“UbicaciónCodificada1”,“UbicaciónCodificada2”)
Parámetro ¿Obligatorio? Valor TipoDeObjeto
Sí
Define el tipo de objeto. Puede ser “File” o “Registry”.
UbicaciónCodificada1
Sí
La Especificación de ubicaciones del primer objeto. Se permite especificar variables de entorno.
UbicaciónCodificada2
Sí
La Especificación de ubicaciones del segundo objeto. Se permite 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 dados tienen el mismo contenido. De lo contrario, devuelve “FALSE”. El contenido se comparará byte por byte.
Sintaxis: IsSameContent(“TipoDeObjeto1”,“UbicaciónCodificada1”,“TipoDeObjeto2”,“UbicaciónCodificada2”)
Parámetro ¿Obligatorio? Valor TipoDeObjeto1
Sí
Define el tipo del primer objeto. Puede ser “File” o “Registry”.
UbicaciónCodificada1
Sí
La Especificación de ubicaciones del primer objeto. Se permite especificar variables de entorno.
TipoDeObjeto2
Sí
Define el tipo del segundo objeto. Puede ser “File” o “Registry”.
UbicaciónCodificada2
Sí
La Especificación de ubicaciones del segundo objeto. Se permite especificar variables de entorno.
IsSameStringContent
La función IsSameStringContent devuelve “TRUE” si los objetos dados tienen el mismo contenido. De lo contrario, devuelve “FALSE”. El contenido se interpretará como una cadena.
Sintaxis: IsSameStringContent(“TipoDeObjeto1”,“UbicaciónCodificada1”,“TipoDeObjeto2”,“UbicaciónCodificada2”)
Parámetro ¿Obligatorio? Valor TipoDeObjeto1
Sí
Define el tipo del primer objeto. Puede ser “File” o “Registry”.
UbicaciónCodificada1
Sí
La Especificación de ubicaciones del primer objeto. Se permite especificar variables de entorno.
TipoDeObjeto2
Sí
Define el tipo del segundo objeto. Puede ser “File” o “Registry”.
UbicaciónCodificada2
Sí
La Especificación de ubicaciones del segundo objeto. Se permite especificar variables de entorno.
<conditions>
El elemento <conditions> devuelve un resultado booleano que se usa para especificar las condiciones con las que se evalúa el elemento principal. USMT evalúa los elementos secundarios y después une los resultados mediante los operadores “AND” u “OR” según el parámetro operation.
Número de repeticiones: ilimitado dentro de otro elemento <conditions>. Limitado a una repetición en <detection>, <rules>, <addObjects> y <objectSet>
Elementos principales: <conditions>, <detection>, <environment>, <rules>, <addObjects> y <objectSet>
Elementos secundarios: <conditions> y <condition>
Sintaxis:
<conditions operation="AND|OR">
</conditions>
Parámetro | ¿Obligatorio? | Valor |
---|---|---|
operation |
No, el valor predeterminado es “AND” |
Define la operación booleana que se realiza en los resultados obtenidos a partir de los elementos secundarios. |
El siguiente ejemplo pertenece al archivo MigApp.xml:
<environment name="GlobalEnv">
<conditions>
<condition negation="Yes">MigXmlHelper.IsNative64Bit()</condition>
</conditions>
<variable name="HklmWowSoftware">
<text>HKLM\Software</text>
</variable>
</environment>
<content>
Puedes usar el elemento <content> para especificar una lista de patrones de objeto y obtener un conjunto de objetos del equipo de origen. Se evalúa cada <objectSet> dentro de un elemento <content>. Por cada lista de patrón de objetos resultante, se enumeran los objetos coincidentes y el parámetro de filtrado filtra su contenido. La matriz de cadena resultante es el resultado del elemento <content>. El script de filtrado devuelve una matriz de ubicaciones. El elemento principal <objectSet> puede contener varios elementos secundarios <content>.
Número de repeticiones: ilimitado
Elementos principales: <objectSet>
Elementos secundarios: <objectSet>
Funciones auxiliares: puedes usar las siguientes funciones Funciones <content> con este elemento: ExtractSingleFile, ExtractMultipleFiles y ExtractDirectory.
Sintaxis:
<content filter=“InvocaciónDeScript”>
</content>
Parámetro | ¿Obligatorio? | Valor |
---|---|---|
filter |
Sí |
Un script seguido de cualquier cantidad de argumentos de cadena separados por comas y entre paréntesis. Por ejemplo Se llama al script por cada objeto enumerado por los conjuntos de objetos de la regla <include>. El script de filtrado devuelve un valor booleano. Si el valor de retorno es “TRUE”, se migrará el objeto. Si es “FALSE”, no se migrará. |
Funciones <content>
Las siguientes funciones generan patrones fuera del contenido de un objeto. Se llama a estas funciones por cada objeto que enumera el elemento principal <ObjectSet>.
ExtractSingleFile
Si el valor del Registro es un valor MULTI-SZ, solo se procesa el primer segmento. El patrón devuelto es la ubicación codificada de un archivo que debe existir en el sistema. Si la especificación es correcta en el valor del Registro, pero no existe el archivo, esta función devuelve “NULL”.
Sintaxis: ExtractSingleFile(Separadores,SugerenciasDeRutaDeAcceso)
Parámetro ¿Obligatorio? Valor Separadores
Sí
Una lista de los posibles separadores que pueden cumplir con 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. Puedes especificar “NULL”.
SugerenciasDeRutaDeAcceso
Sí
Una lista de rutas de acceso adicionales, separadas por signos de punto y coma (;), en las que 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 una variable de entorno %Path%, la función encuentra Notepad.exe en %windir% y devuelve "c:\Windows [Notepad.exe]". Puedes 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 por cada archivo encontrado en el contenido de cada valor del Registro dado. Si el valor del Registro es un valor MULTI-SZ, se considera que el separador MULTI-SZ es el separador predeterminado. Por lo tanto, para los valores MULTI-SZ, el argumento <Separators> debe ser “NULL”.
El patrón devuelto son las ubicaciones codificadas de archivos que deben existir en el equipo de origen. Si la especificación es correcta en el valor del Registro, pero no existe el archivo, no se incluirá en la lista resultante.
Sintaxis: ExtractMultipleFiles(Separadores,SugerenciasDeRutaDeAcceso)
Parámetro ¿Obligatorio? Valor Separadores
Sí
Una lista de los posibles separadores que pueden cumplir con 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 los valores del Registro MULTI-SZ.
SugerenciasDeRutaDeAcceso
Sí
Una lista de rutas de acceso adicionales, separadas por signos de punto y coma (;), en las que 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 una variable de entorno %Path%, la función encuentra Notepad.exe en %windir% y devuelve "c:\Windows [Notepad.exe]". Puedes especificar “NULL”.
ExtractDirectory
La función ExtractDirectory devuelve un patrón que es la ubicación codificada de un directorio que debe existir en el equipo de origen. Si la especificación es correcta en el valor del Registro, pero no existe el directorio, esta función devuelve “NULL”. Si procesa un valor del Registro que es un valor MULTI-SZ, solo se procesa el primer segmento.
Sintaxis: ExtractDirectory(Separadores,NivelesParaRecortar,SufijoDePatrón)
Parámetro ¿Obligatorio? Valor Separadores
No
Una lista de los posibles separadores que pueden cumplir con 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. Debes especificar “NULL” al procesar los valores MULTI-SZ del Registro.
NivelesParaRecortar
Sí
La cantidad de niveles para eliminar del final de la especificación del directorio. Usa esta función para extraer un directorio raíz cuando exista un valor del Registro que indique ese directorio raíz en una ubicación conocida.
SufijoDePatrón
Sí
El patrón para 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 que se escriba en el equipo de destino. Por cada elemento <contentModify> puede haber varios elementos <objectSet>. Este elemento devuelve el contenido nuevo del objeto que se procesa.
Número de repeticiones: ilimitado
Elementos principales: <rules>
Elementos secundarios necesarios: <objectSet>
Funciones auxiliares: puedes usar las siguientes funciones Funciones <contentModify> con este elemento: ConvertToDWORD, ConvertToString, ConvertToBinary, KeepExisting, OffsetValue, SetValueByTable, MergeMultiSzContent y MergeDelimitedContent.
Sintaxis:
<contentModify script=“InvocaciónDeScript”>
</contentModify>
Parámetro | ¿Obligatorio? | Valor |
---|---|---|
script |
Sí |
Un script seguido de cualquier cantidad de argumentos de cadena separados por comas y entre paréntesis. Por ejemplo, Se llama al script por cada objeto enumerado por los conjuntos de objetos de la regla de inclusión. El script de filtrado devuelve un valor booleano. Si el valor de retorno es “TRUE”, se migrará el objeto. Si es “FALSE”, no se migrará. |
Funciones <contentModify>
Las siguientes funciones modifican el contenido de los objetos a medida que se migran. Se llama a estas funciones por cada objeto que enumera el elemento principal <ObjectSet>.
ConvertToDWORD
La función ConvertToDWORD convierte el contenido de los valores del Registro que enumera el elemento principal <ObjectSet> a un DWORD. Por ejemplo, ConvertToDWORD convertirá la cadena “1” al 0x00000001 de DWORD. Si se produce un error de conversión, se aplicará el valor de ValorPredeterminadoAnteError.
Sintaxis: ConvertToDWORD(ValorPredeterminadoAnteError)
Parámetro ¿Obligatorio? Valor ValorPredeterminadoAnteError
No
El valor que se escribirá en el nombre del valor si se produce un error en la conversión. Puedes especificar “NULL”. En ese caso, se escribirá “0” si hay un error en la conversión.
ConvertToString
La función ConvertToString convierte el contenido de los valores del Registro que coinciden con el elemento principal <ObjectSet> a una cadena. Por ejemplo, convertirá el valor 0x00000001 de DWORD al string “1”. Si se produce un error de conversión, se aplicará el valor de ValorPredeterminadoAnteError.
Sintaxis: ConvertToString(ValorPredeterminadoAnteError)
Parámetro ¿Obligatorio? Valor ValorPredeterminadoAnteError
No
El valor que se escribirá en el nombre del valor si se produce un error en la conversión. Puedes especificar “NULL”. En ese caso, se escribirá “0” si hay 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 principal <ObjectSet> a un tipo binario.
Sintaxis: ConvertToBinary ()
OffsetValue
La función OffsetValue suma o resta Valor del valor del objeto migrado y después vuelve a escribir el resultado en el valor del Registro del equipo de destino. Por ejemplo, si el objeto migrado es un DWORD con un valor de 14 y el Valor es “-2”, el valor del Registro será 12 en el equipo de destino.
Sintaxis: OffsetValue(Valor)
Parámetro ¿Obligatorio? Valor Valor
Sí
La representación de cadena de un valor numérico. Puede ser positivo o negativo. Por ejemplo,
OffsetValue(2)
.SetValueByTable
La función SetValueByTable iguala el valor del equipo de origen con la tabla de origen. Si existe el valor, se aplicará el valor equivalente de la tabla de destino. Si no existe el valor o si no hay un valor equivalente en la tabla de destino, se aplicará el valor ValorPredeterminadoAnteError.
Sintaxis: SetValueByTable(TablaDeOrigen,TablaDeDestino,ValorPredeterminadoAnteError)
Parámetro ¿Obligatorio? Valor TablaDeOrigen
Sí
Una lista de valores, separados por comas, que son posibles para los valores de origen del Registro.
TablaDeDestino
No
Una lista de valores traducidos separados por comas.
ValorPredeterminadoAnteError
No
El valor que se aplicará en el equipo de destino en alguno de los siguientes casos: 1) el valor del equipo de origen no coincide con TablaDeOrigen o 2) TablaDeDestino no tiene valor equivalente.
Si ValorPredeterminadoAnteError es “NULL”, no se modificará el valor en el equipo de destino.
KeepExisting
Puedes usar la función KeepExisting cuando haya conflictos en el equipo de destino. Esta función mantiene (no sobrescribe) los atributos especificados del objeto que se encuentra en el equipo de destino.
Sintaxis: KeepExisting(“CadenaDeOpción”,“CadenaDeOpción”,“CadenaDeOpción”,…)
Parámetro ¿Obligatorio? Valor CadenaDeOpción
Sí
CadenaDeOpción puede ser Security, TimeFields o FileAttrib:Letra. Puedes especificar uno de cada tipo de CadenasDeOpción. No especifiques varias CadenaDeOpción con el mismo valor. Si lo haces, se mantendrá la opción más a la derecha de ese tipo. Por ejemplo, no especifiques (“FileAttrib:H”, “FileAttrib:R”), porque solo se evaluarán los atributos “Read-only”. En su lugar, especifica (“FileAttrib:HR”) y se mantendrán en el equipo de destino tanto los atributos “Hidden” como los “Read-only”.
- Security. 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:Letra. Mantiene el valor de atributo del objeto de destino, ya sea “On” u “OFF”, en el conjunto de atributos de archivo especificado. Este parámetro es solo para archivos. Los siguientes valores no distinguen mayúsculas de minúsculas, pero USMT omitirá los valores no válidos o repetidos, o si existe un espacio después de “FileAttrib:”. Puedes especificar cualquier combinación de los siguientes atributos:
- A = Archivo
- C = Comprimido
- E = Cifrado
- H = Oculto
- I = No indizado por contenido
- O = Sin conexión
- R = Solo lectura
- S = Sistema
- T = Temporal
- A = Archivo
- Security. Mantiene el descriptor de seguridad del objeto de destino, si existe.
MergeMultiSzContent
La función MergeMultiSzContent combina el contenido MULTI-SZ de los valores del Registro enumerados por el elemento principal <ObjectSet> con el contenido de los valores del Registro equivalentes que ya existen en el equipo de destino.
Instruction
yString
quitan o agregan contenido al MULTI-SZ resultante. Se eliminarán los elementos duplicados.Sintaxis: MergeMultiSzContent (Instrucción,Cadena,Instrucción,Cadena,…)
Parámetro ¿Obligatorio? Valor Instrucción
Sí
Puede ser uno de los siguientes valores:
- Add. Agrega la cadena correspondiente al MULTI-SZ resultante si aún no se encuentra allí.
- Remove. Quita la cadena correspondiente del MULTI-SZ resultante.
Cadena
Sí
La cadena que se agregará o se quitará.
- Add. Agrega la cadena correspondiente al MULTI-SZ resultante si aún no se encuentra allí.
MergeDelimitedContent
La función MergeDelimitedContent combina el contenido MULTI-SZ de los valores del Registro enumerados por el elemento principal <ObjectSet> con el contenido de los valores del Registro equivalentes 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 “Delimitadores”. Se eliminarán los elementos duplicados.
Sintaxis: MergeDelimitedContent(Delimitadores,Instrucción,Cadena,…)
Parámetro ¿Obligatorio? Valor Delimitadores
Sí
Un carácter único que se usará para separar el contenido del objeto que se procesa. El contenido se considerará una lista de elementos separada por el valor Delimitadores.
Por ejemplo, “.” separará la cadena en función del punto.
Instrucción
Sí
Puede ser una de las siguientes:
- Add. Agrega Cadena al MULTI-SZ resultante si aún no se encuentra allí.
- Remove. Quita Cadena del MULTI-SZ resultante.
Cadena
Sí
La cadena que se agregará o se quitará.
- Add. Agrega Cadena al MULTI-SZ resultante si aún no se encuentra allí.
<description>
El elemento <description> define una descripción del componente pero no afecta a la migración.
Número de repeticiones: cero o una
Elementos principales: <component>
Elementos secundarios: ninguno
Sintaxis:
<description>DescripciónDelComponente</description>
Parámetro | ¿Obligatorio? | Valor |
---|---|---|
DescripciónDelComponente |
Sí |
La descripción del componente. |
En la siguiente muestra de código, se muestra cómo el elemento <description> define la descripción “My custom component”:
<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 del equipo de origen. El elemento se evalúa solo cuando la herramienta LoadState se ejecuta en el equipo de destino. Es decir, la herramienta ScanState omite este elemento.
Importante
Usa esta opción con mucho cuidado, ya que eliminará objetos del equipo de destino.
Por cada elemento <destinationCleanup> puede haber varios elementos <objectSet>. Este elemento suele usarse cuando falta una clave del Registro en el equipo de origen y quieres asegurarte de que se migró un componente. En este caso, puedes eliminar todas las claves del Registro del componente antes de migrar las claves del Registro de origen. De este modo, podrás asegurarte de que si falta una clave en el equipo de origen, también faltará en el equipo de destino.
Número de repeticiones: ilimitado
Elementos principales: <rules>
Elementos secundarios: <objectSet> (Ten en cuenta que el equipo de destino eliminará todos los elementos secundarios).
Sintaxis:
<destinationCleanup filter=InvocaciónDeScript>
</destinationCleanup>
Parámetro | ¿Obligatorio? | Valor |
---|---|---|
filter |
Sí |
Un script seguido de cualquier cantidad de argumentos de cadena separados por comas y entre paréntesis. Por ejemplo, Se llama al script por cada objeto enumerado por los conjuntos de objetos de la regla de inclusión. El script de filtrado devuelve un valor booleano. Si el valor de retorno es “TRUE”, se migrará el objeto. Si es “FALSE”, no se migrará. |
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>
<detect>
Si bien todavía se admite el elemento <detect>, no recomendamos usarlo, ya que es posible que este elemento quede desusado en versiones futuras de USMT. En ese caso, tendrás que reescribir tus scripts. Como alternativa, te recomendamos que uses el elemento <detection>.
Puedes usar el elemento <detect> para determinar si el componente está presente en el sistema. Si todos los elementos secundarios <detect> dentro de un elemento <detect> dan como resultado “TRUE”, el elemento <detect> da como resultado “TRUE”. Si algún elemento secundario <detect> da como resultado “FALSE”, el elemento principal <detect> da como resultado “FALSE”. Si no existe la sección de elementos <detect>, USMT supone que el componente está presente.
Por cada elemento <detect> puede haber varios elementos secundarios <condition> u <objectSet>, que se unirán de modo lógico con el operador “OR”. Si al menos un elemento <condition> u <objectSet> da como resultado “TRUE”, el elemento <detect> da como resultado “TRUE”.
Número de repeticiones: ilimitado
Elementos principales: <detects>, <namedElements>
Elementos secundarios necesarios: <condition>
Elementos secundarios opcionales: <objectSet>
Sintaxis:
<detect name=“Id” context="User|System|UserAndSystem">
</detect>
Parámetro | ¿Obligatorio? | Valor |
---|---|---|
nombre |
Sí, cuando <detect> es secundario de <namedElements> Sí, cuando <detect> es secundario de <detects> |
Cuando se especifica Id, no se procesa ningún elemento secundario. En cambio, se procesan todos los elementos <detect> restantes con el mismo nombre que estén indicados dentro del elemento <namedElements>. |
context |
No El valor predeterminado es “UserAndSystem” |
Define el ámbito de este parámetro, es decir, si este componente se debe procesar en el contexto del usuario específico, en todo el sistema operativo, o en ambos. El ámbito más amplio posible se establece con el elemento <component>. Por ejemplo, si un elemento <component> tiene un contexto de “User” y un elemento <rules> tiene un contexto de “UserAndSystem”, el elemento <rules> se comportará como si tuviera el contexto de “User”. Si el elemento <rules> tiene un contexto de “System”, se comportará como si el elemento <rules> no existiera.
|
Para obtener ejemplos, consulta los ejemplos de <detection>.
<detects>
Si bien todavía se admite el elemento <detects>, no recomendamos usarlo, ya que es posible que este elemento quede desusado en versiones futuras de USMT. Si esto sucede, tendrás que reescribir tus scripts. Como alternativa, si el elemento principal es <role> o <namedElements>, te recomendamos que uses el elemento <detection> y, si el elemento principal es <rules>, te recomendamos que uses el elemento <conditions>. Con <detection>, podrás formular instrucciones booleanas complejas de forma más clara.
El elemento <detects> es un contenedor de uno o varios elementos <detect>. Si todos los elementos secundarios <detect> dentro de un elemento <detects> dan como resultado “TRUE”, <detects> da como resultado “TRUE”. Si todos los elementos secundarios <detect> dan como resultado “FALSE”, <detects> da como resultado “FALSE”. Si no quieres escribir los elementos <detects> en un componente, puedes crear el elemento <detects> en el elemento <namedElements> y después consultarlo. Si no existe la sección de elementos <detects>, USMT supone que el componente está presente. Los resultados de cada elemento <detects> se unen con el operador “OR” para formar la regla usada para detectar el elemento principal.
Sintaxis:
<detects name=“Id” context="User|System|UserAndSystem">
</detects>
Número de repeticiones: ilimitado
Elementos principales: <role>, <rules>, <namedElements>
Elementos secundarios necesarios: <detect>
Parámetro | ¿Obligatorio? | Valor |
---|---|---|
nombre |
Sí, cuando <detects> es secundario de <namedElements> Sí, cuando <detects> es secundario de <role> o <rules> |
Cuando se especifica Id, no se procesan elementos secundarios <detect>. En cambio, se procesan todos los elementos <detects> restantes con el mismo nombre que estén indicados dentro del elemento <namedElements>. |
context |
No El valor predeterminado es “UserAndSystem” |
Define el ámbito de este parámetro, es decir, si este componente se debe procesar en el contexto del usuario específico, en todo el sistema operativo, o en ambos. El ámbito más amplio posible se establece con el elemento <component>. Por ejemplo, si un elemento <component> tiene un contexto de “User” y un elemento <rules> tiene un contexto de “UserAndSystem”, el elemento <rules> se comportará como si tuviera el contexto de “User”. Si el elemento <rules> tiene un contexto de “System”, se comportará como si el elemento <rules> no existiera.
Se omite el parámetro de contexto <detects> en los elementos que se encuentran dentro de elementos <rules>. |
El siguiente ejemplo pertenece al archivo MigApp.xml:
<detects>
<detect>
<condition>MigXmlHelper.DoesFileVersionMatch("%Lotus123InstPath%\123w.exe","ProductVersion","9.*")</condition>
</detect>
<detect>
<condition>MigXmlHelper.DoesFileVersionMatch("%SmartSuiteInstPath%\smartctr.exe","ProductVersion","99.*")</condition>
</detect>
</detects>
<detection>
El elemento <detection> es un contenedor de un elemento <conditions>. El resultado de los elementos secundarios <condition>, ubicados debajo del elemento <conditions>, determina el resultado de este elemento. Por ejemplo, si todos los elementos secundarios <conditions> dentro de un elemento <detection> dan como resultado “TRUE”, el elemento <detection> da como resultado “TRUE”. Si algún elemento secundario <conditions> da como resultado “FALSE”, el elemento <detection> da como resultado “FALSE”.
Además, los resultados de cada sección <detection> dentro del elemento <role> se unen con el operador “OR” para formar la regla de detección del elemento principal. Es decir, si una de las secciones <detection> da como resultado “TRUE”, se procesará el elemento <role>. De lo contrario, no se procesará el elemento <role>.
Usa el elemento <detection> en el elemento <namedElements> si no quieres escribirlo en un componente. Después, incluye una sección <detection> coincidente del elemento <role> para controlar si se migra el componente. Si no existe la sección <detection> de un componente, USMT supone que el componente está presente.
Número de repeticiones: ilimitado
Elementos principales: <role>, <namedElements>
Elementos secundarios: <conditions>
Sintaxis:
<detection name=“Id” context="User|System|UserAndSystem">
</detection>
Parámetro | ¿Obligatorio? | Valor |
---|---|---|
nombre |
|
Si está indicado, se omite el contenido del elemento <detection> y se evalúa el contenido del elemento <detection> con el mismo nombre que el indicado en el elemento <namedElements>. |
context |
No, el valor predeterminado es “UserAndSystem” |
Define el ámbito de este parámetro, es decir, si este componente se debe procesar en el contexto del usuario específico, en todo el sistema operativo, o en ambos.
|
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 <component>.
Número de repeticiones: una vez por cada componente
Elementos principales: <component>
Elementos secundarios: ninguno
Sintaxis:
<displayName _locID=“Id”>NombreDelComponente</displayName>
Parámetro | ¿Obligatorio? | Valor |
---|---|---|
locID |
No |
Este parámetro es para uso interno de USMT. No uses este parámetro. |
NombreDelComponente |
Sí |
El nombre del componente. |
Por ejemplo:
<displayName>Command Prompt settings</displayName>
<environment>
El elemento <environment> es un contenedor de elementos <variable> en el que puedes definir variables que usarás en el archivo .xml. Todas las variables de entorno definidas de este modo serán privadas. Es decir, solo estarán disponibles para los elementos secundarios correspondientes y para el componente en el que se definieron. Para obtener dos escenarios de ejemplo, consulta Ejemplos.
Número de repeticiones: ilimitado
Elementos principales: <role>, <component>, <namedElements>
Elementos secundarios necesarios: <variable>
Elementos secundarios opcionales: <conditions>
Sintaxis:
<environment name="ID" context="User|System|UserAndSystem">
</environment>
Parámetro | ¿Obligatorio? | Valor |
---|---|---|
nombre |
Sí, cuando <environment> es secundario de <namedElements> Sí, cuando <environment> es secundario de <role> o <component> |
Cuando se indica que es secundario de los elementos <role> o <component>, si se indica Id, USMT omite el contenido del elemento <environment>, y se procesa el contenido del elemento <environment> con el mismo nombre indicado en <namedElements>. |
context |
No El valor predeterminado es “UserAndSystem” |
Define el ámbito de este parámetro, es decir, si este componente se debe procesar en el contexto del usuario específico, en todo el sistema operativo, o en ambos. El ámbito más amplio posible se establece con el elemento <component>. Por ejemplo, si un elemento <component> tiene un contexto de “User” y un elemento <rules> tiene un contexto de “UserAndSystem”, el elemento <rules> se comportará como si tuviera el contexto de “User”. Si el elemento <rules> tiene un contexto de “System”, se comportará como si <rules> no existiera.
|
Escenario de ejemplo 1
En este escenario, quieres generar la ubicación de objetos en tiempo de ejecución en función de la configuración del equipo de destino. Por ejemplo, debes hacer esto si una aplicación escribe datos en el directorio donde está instalada, y los usuarios pueden instalar la aplicación en cualquier ubicación del equipo. Si la aplicación escribe un valor del Registro hklm\software\companyname\install [path] y después actualiza este valor con la ubicación en la que está instalada la aplicación, el único modo 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>
Después, puedes usar una regla include, como se muestra a continuación. Puedes usar alguna de las funciones Funciones <script> para realizar tareas similares.
<include>
<objectSet>
<pattern type="File">%INSTALLPATH%\ [*.xyz]</pattern>
</objectSet>
</include>
Después, también puedes filtrar valores del Registro que contienen datos que necesitas. En el siguiente ejemplo, se extrae la primera cadena (antes del deparador “,”) 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, quieres migrar cinco archivos denominados File1.txt, File2.txt, etc., desde %SYSTEMDRIVE%\data\userdata\dir1\dir2\. Para hacerlo, la siguiente regla <include> debe estar incluida 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, puedes crear una variable para la ubicación, como se muestra a continuación:
<environment>
<variable name="DATAPATH">
<text>%SYSTEMDRIVE%\data\userdata\dir1\dir2 </text>
</variable>
</environment>
Después, puedes especificar la variable en una regla <include>, como se muestra 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>
<exclude>
El elemento <exclude> determina qué objetos no se migrarán, salvo que exista un elemento <include> más específico que migre un objeto. Si existe un elemento <include> y un elemento <exclude> para el mismo objeto, este se incluirá. Por cada elemento <exclude> puede haber varios elementos <objectSet> secundarios.
Número de repeticiones: ilimitado
Elementos principales: <rules>
Elementos secundarios: <objectSet>
Funciones auxiliares: puedes usar las siguientes funciones de filtro Funciones de filtro <include> y <exclude> con este elemento: CompareStringContent, IgnoreIrrelevantLinks, AnswerNo, NeverRestore y SameRegContent.
Sintaxis:
<exclude filter=“InvocaciónDeScript”>
</exclude>
Parámetro | ¿Obligatorio? | Valor |
---|---|---|
filter |
No El valor predeterminado es “No” |
Un script seguido de cualquier cantidad de argumentos de cadena separados por comas y entre paréntesis. Por ejemplo, Se llama al script por cada objeto enumerado por los conjuntos de objetos de la regla de inclusión. El script de filtrado devuelve un valor booleano. Si el valor de retorno es “TRUE”, se migrará el objeto. Si es “FALSE”, no se migrará. |
El siguiente ejemplo pertenece al archivo MigUser.xml:
<exclude>
<objectSet>
<pattern type="File">%CSIDL_MYMUSIC%\* [*]</pattern>
<pattern type="File">%CSIDL_MYPICTURES%\* [*]</pattern>
<pattern type="File">%CSIDL_MYVIDEO%\* [*]</pattern>
</objectSet>
</exclude>
<excludeAttributes>
Puedes usar el elemento <excludeAttributes> para determinar qué parámetros asociados con un objeto no se migrarán. Si existen conflictos entre los elementos <includeAttributes> y <excludeAttributes>, el patrón más específico determina los patrones que no se migrarán. Si un objeto no tiene un elemento <includeAttributes> ni <excludeAttributes>, se migrarán todos sus parámetros.
Número de repeticiones: ilimitado
Elementos principales: <rules>
Elementos secundarios: <objectSet>
Sintaxis:
<excludeAttributes attributes="Security|TimeFields|Security,TimeFields">
</excludeAttributes>
Parámetro | ¿Obligatorio? | Valor |
---|---|---|
attributes |
Sí |
Especifica los atributos que se excluirán. Puedes especificar alguno de los siguientes, o ambos, separados con comillas. Por ejemplo:
|
Ejemplo:
<migration urlid="https://www.microsoft.com/migration/1.0/migxmlext/miguser">
<!-- This component migrates My Video files -->
<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>
<extensions>
El elemento <extensions> es un contenedor de uno o varios elementos <extension>.
Número de repeticiones: cero o una
Elementos principales: <component>
Elementos secundarios necesarios: <extension>
Sintaxis:
<extensions>
</extensions>
<extension>
Puedes usar el elemento <extension> para especificar documentos de una extensión específica.
Número de repeticiones: ilimitado
Elementos principales: <extensions>
Elementos secundarios: ninguno
Sintaxis:
<extension>ExtensiónDeArchivo</extension>
Parámetro | ¿Obligatorio? | Valor |
---|---|---|
ExtensiónDeArchivo |
Sí |
Una extensión de nombre de archivo |
Por ejemplo, si quieres migrar todos los archivos *.doc del equipo de origen, especificar el siguiente código en el elemento <component>:
<extensions>
<extension>doc</extension>
<extensions>
supone lo mismo que especificar el siguiente código en el elemento <rules>:
<include>
<objectSet>
<script>MigXmlHelper.GenerateDrivePatterns ("* [*.doc]", "Fixed")</script>
</objectSet>
</include>
Para obtener otro ejemplo de cómo usar el elemento <extension>, consulta el ejemplo de <excludeAttributes>.
<externalProcess>
Puedes usar el elemento <externalProcess> para ejecutar una línea de comandos durante el proceso de migración. Por ejemplo, tal vez quieras ejecutar un comando una vez que finaliza el proceso de LoadState.
Número de repeticiones: ilimitado
Elementos principales: <rules>
Elementos secundarios necesarios: <commandLine>
Sintaxis:
<externalProcess when="pre-scan|scan-success|post-scan|pre-apply|apply-success|post-apply">
</externalProcess>
Parámetro | ¿Obligatorio? | Valor |
---|---|---|
when |
Sí |
Indica cuándo debe ejecutarse una línea de comandos. Este valor puede ser uno de los siguientes:
|
Para obtener otro ejemplo de cómo usar el elemento <externalProcess>, consulta el ejemplo de <excludeAttributes>.
<icon>
Este elemento es interno de USMT. No lo uses.
<include>
El elemento <include> determina qué migrar, salvo que exista una regla <exclude> más específica. Puedes especificar que un script sea más específico para extender la definición de lo que quieres recopilar. Por cada elemento <include> puede haber varios elementos <objectSet>.
Número de repeticiones: ilimitado
Elementos principales: <rules>
Elemento secundario necesario: <objectSet>
Funciones auxiliares: puedes usar las siguientes funciones de filtro Funciones de filtro <include> y <exclude> con este elemento: CompareStringContent, IgnoreIrrelevantLinks, AnswerNo y NeverRestore.
Sintaxis:
<include filter=“InvocaciónDeScript”>
</include>
Parámetro | ¿Obligatorio? | Valor |
---|---|---|
filter |
No. Si no se especifica este parámetro, se procesarán todos los patrones dentro del elemento secundario <ObjectSet>. |
Un script seguido de cualquier cantidad de argumentos de cadena separados por comas y entre paréntesis. Por ejemplo, Se llama al script por cada objeto enumerado por los conjuntos de objetos de la regla <include>. El script de filtrado devuelve un valor booleano. Si el valor de retorno es “TRUE”, se migrará el objeto. Si es “FALSE”, no se migrará. |
El siguiente ejemplo pertenece al archivo MigUser.xml:
<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>
Funciones de filtro <include> y <exclude>
Las siguientes funciones devuelven un valor booleano. Puedes usarlas para migrar ciertos objetos en función de cuándo se cumplen ciertas condiciones.
AnswerNo
Este filtro siempre devuelve “FALSE”.
Sintaxis: AnswerNo ()
CompareStringContent
Sintaxis: CompareStringContent(“ContenidoDeCadena”,“TipoDeComparación”)
Parámetro ¿Obligatorio? Valor ContenidoDeCadena
Sí
La cadena con la que se va a comparar.
TipoDeComparación
Sí
Una cadena. Usa uno de los siguientes valores:
- Equal (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
.
- Equal (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
IgnoreIrrelevantLinks
Este filtro encuentra los archivos .lnk que indican un objeto que no es válido en el equipo de destino. Ten en cuenta que este filtrado se realiza en el equipo de destino, de modo que todos los archivos .lnk se guardarán en el almacén durante el proceso de ScanState. Después, cuando ejecutes la herramienta LoadState, estos archivos se filtrarán.
Sintaxis: IgnoreIrrelevantLinks ()
Por ejemplo:
<include filter='MigXmlHelper.IgnoreIrrelevantLinks()'> <objectSet> <pattern type="File">%CSIDL_COMMON_VIDEO%\* [*]</pattern> </objectSet> </include>
NeverRestore
Puedes usar esta función para recopilar los objetos especificados del equipo de origen pero no migrarlos al equipo de destino. Cuando ejecutas la herramienta ScanState, esta función da como resultado “TRUE”. Cuando ejecutas la herramienta LoadState, esta función da como resultado “FALSE”. Tal vez quieras usar esta función cuando decidas comprobar el valor de un objeto del equipo de destino, pero sin migrarlo a este.
Sintaxis: NeverRestore()
En el ejemplo siguiente, HKCU\Control Panel\International [Locale] se incluirá en el almacén, pero no se migrará al equipo de destino:
<include filter="MigXmlHelper.NeverRestore()"> <objectSet> <pattern type="Registry">HKCU\Control Panel\International [Locale]</pattern> </objectSet> </include>
<includeAttributes>
Puedes usar el elemento <includeAttributes> para determinar si determinados parámetros asociados con un objeto se migrarán junto con el objeto. Si existen conflictos entre los elementos <includeAttributes> y <excludeAttributes>, el patrón más específico determina los parámetros que se migrarán. Si un objeto no tiene un elemento <includeAttributes> ni <excludeAttributes>, se migrarán todos sus parámetros.
Número de repeticiones: ilimitado
Elementos principales: <rules>
Elementos secundarios: <objectSet>
Sintaxis:
<includeAttributes attributes="Security|TimeFields|Security,TimeFields">
</includeAttributes>
Parámetro | ¿Obligatorio? | Valor |
---|---|---|
attributes |
Sí |
Especifica los atributos que se incluirán con el objeto migrado. Puedes especificar alguno de los siguientes, o ambos, separados con comillas. Por ejemplo:
|
Para obtener otro ejemplo de cómo usar el elemento <includeAttributes>, consulta el ejemplo de <excludeAttributes>.
<library>
Este elemento es interno de USMT. No lo uses.
<location>
El elemento <location> define la ubicación del elemento <object>.
Número de repeticiones: una por cada <object>
Elementos principales: <object>
Elementos secundarios: <script>
Sintaxis:
<location type=“IdDeTipo”>UbicaciónDelObjeto</location>
Parámetro | ¿Obligatorio? | Valor |
---|---|---|
type |
Sí |
IdDeTipo puede ser “File” o “Registry”. |
UbicaciónDelObjeto |
Sí |
La ubicación del componente. |
El siguiente ejemplo pertenece al archivo MigApp.xml:
<addObjects>
<object>
<location type="Registry">%HklmWowSoftware%\Microsoft\Office\12.0\Common\Migration\Office [UpgradeVersion]</location>
<attributes>DWORD</attributes>
<bytes>0B000000</bytes>
</object>
<object>
<location type="Registry">%HklmWowSoftware%\Microsoft\Office\12.0\Common\Migration\Office [Lang]</location>
<attributes>DWORD</attributes>
<bytes>00000000</bytes>
</object>
</addObjects>
<locationModify>
Puedes usar el elemento <locationModify> para cambiar la ubicación y el nombre de un objeto antes de que se migre al equipo de destino. El elemento <locationModify> solo se procesa cuando la herramienta LoadState se ejecuta en el equipo de destino. Es decir, la herramienta ScanState omite este elemento. El elemento <locationModify> creará la carpeta adecuada en el equipo de destino si todavía no existe.
Número de repeticiones: ilimitado
Elementos principales: <rules>
Elemento secundario necesario: <objectSet>
Funciones auxiliares: puedes usar las siguientes funciones Funciones <locationModify> con este elemento: ExactMove, RelativeMove y Move.
Sintaxis:
<locationModify script=“InvocaciónDeScript”>
</locationModify>
Parámetro | ¿Obligatorio? | Valor |
---|---|---|
script |
Sí |
Un script seguido de cualquier cantidad de argumentos de cadena separados por comas y entre paréntesis. Por ejemplo, Se llama al script por cada objeto enumerado por los conjuntos de objetos de la regla de inclusión. El script de filtrado devuelve un valor booleano. Si el valor de retorno es “TRUE”, se migrará el objeto. Si es “FALSE”, no se migrará. |
El siguiente ejemplo pertenece al archivo MigApp.xml:
<locationModify script="MigXmlHelper.RelativeMove('%CSIDL_APPDATA%\Microsoft\Office','%CSIDL_APPDATA%')">
<objectSet>
<pattern type="File">%CSIDL_APPDATA%\Microsoft\Office\ [Access10.pip]</pattern>
</objectSet>
</locationModify>
Funciones <locationModify>
Las siguientes funciones cambian la ubicación de los objetos con el elemento <locationModify> a medida que se migran. Se llama a estas funciones por cada objeto que enumera el elemento principal <ObjectSet>. El elemento <locationModify> creará la carpeta adecuada en el equipo de destino si todavía no existe.
ExactMove
La función ExactMove mueve todos los objetos que coinciden con el elemento principal <ObjectSet> en la UbicaciónCodificadaDeObjeto dada. Puedes usar esta función cuando quieras mover un solo 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 escribirán en el nodo sin subdirectorios. Si la ubicación de destino es una hoja, el motor de migración migrará todos los objetos de origen coincidentes a la misma ubicación. Si se produce una colisión, se aplicarán los algoritmos de colisión normales.
Sintaxis: ExactMove(UbicaciónCodificadaDeObjeto)
Parámetro ¿Obligatorio? Valor UbicaciónCodificadaDeObjeto
Sí
La Especificación de ubicaciones 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>
Move
La función Move mueve objetos a una ubicación diferente del equipo de destino. Además, esta función crea los subdirectorios que se encontraban sobre el valor CSIDL más extenso en el nombre del objeto de origen.
Sintaxis: Move(RaízDeDestino)
Parámetro ¿Obligatorio? Valor RaízDeDestino
Sí
La ubicación a la que se moverán los objetos de origen. Si es necesario, esta función creará los subdirectorios que se encontraban sobre el valor CSIDL más extenso en el nombre del objeto de origen.
RelativeMove
Puedes usar la función RelativeMove para recopilar y mover datos. Ten en cuenta que puedes usar variables de entorno en las raíces de origen y de destino, pero es posible que se definan de otro modo en los equipos de origen y de destino.
Sintaxis: RelativeMove(RaízDeOrigen,RaízDeDestino)
Parámetro ¿Obligatorio? Valor RaízDeOrigen
Sí
La ubicación desde la que se moverán los objetos de origen. No se moverán los objetos de origen que enumera el elemento principal <ObjectSet> y no se encuentran en esta ubicación.
RaízDeDestino
Sí
La ubicación a la que se moverán los objetos de origen en el equipo de destino. Si es necesario, esta función creará los subdirectorios que se encontraban sobre RaízDeOrigen.
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 interno de USMT. No lo uses.
<manufacturer>
El elemento <manufacturer> define el fabricante del componente, pero no afecta la migración.
Número de repeticiones: cero o una
Elementos principales: <component>
Elementos secundarios: ninguno
Sintaxis:
<manufacturer>Nombre</manufacturer>
Parámetro | ¿Obligatorio? | Valor |
---|---|---|
Nombre |
Sí |
El nombre del fabricante del componente. |
<merge>
El elemento <merge> determina lo que sucederá cuando se produce una colisión. Se genera una colisión cuando un objeto que se migra ya existe en el equipo de destino. Si no especificas este elemento, el comportamiento predeterminado del registro hará que el objeto de origen sobrescriba el objeto de destino. En los archivos, el comportamiento predeterminado hará que se cambie el nombre del archivo de origen a “OriginalFileName(1).OriginalExtension”. Este elemento solo especifica lo que se debe hacer cuando se genera una colisión. No se incluyen los objetos. Por lo tanto, para que se migren los objetos que quieres, debes especificar reglas <include> junto con el elemento <merge>. Cuando se detecte una colisión al procesar un objeto, USMT seleccionará la regla de combinación más específica y la aplicará para resolver el conflicto. Por ejemplo, si tienes una regla <merge> C:\* [*] establecida en <sourcePriority>, y una regla <merge> C:\subfolder\* [*] establecida en <destinationPriority>, USMT usará la regla <destinationPriority> porque es más específica.
Para obtener un ejemplo de este elemento, consulta el tema sobre el funcionamiento de <merge> cuando hay conflictos en el equipo de destino.
Número de repeticiones: ilimitado
Elementos principales: <rules>
Elemento secundario necesario: <objectSet>
Funciones auxiliares: puedes usar las siguientes funciones Funciones <merge> con este elemento: SourcePriority, DestinationPriority, FindFilePlaceByPattern, LeafPattern, NewestVersion, HigherValue() y LowerValue().
Sintaxis:
<merge script=“InvocaciónDeScript”>
</merge>
Parámetro | ¿Obligatorio? | Valor |
---|---|---|
script |
Sí |
Un script seguido de cualquier cantidad de argumentos de cadena separados por comas y entre paréntesis. Por ejemplo, Se llama al script por cada objeto enumerado por los conjuntos de objetos de la regla <include>. El script de filtrado devuelve un valor booleano. Si el valor de retorno es “TRUE”, se migrará el objeto. Si es “FALSE”, no se migrará. |
El siguiente ejemplo pertenece al archivo MigUser.xml:
<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 <merge>
Estas funciones controlan el modo de resolver las colisiones.
DestinationPriority
Especifica que se mantenga el objeto que se encuentra en el equipo de destino y que no se migre el objeto del equipo de origen.
Por ejemplo:
<merge script="MigXmlHelper.DestinationPriority()"> <objectSet> <pattern type="Registry">HKCU\Software\Microsoft\Office\9.0\PhotoDraw\ [MyPictures]</pattern> <pattern type="Registry">HKCU\Software\Microsoft\Office\9.0\PhotoDraw\Settings\ [PicturesPath]</pattern> <pattern type="Registry">HKCU\Software\Microsoft\Office\9.0\PhotoDraw\Settings\ [AdditionalPlugInPath]</pattern> </objectSet> </merge>
FindFilePlaceByPattern
La función FindFilePlaceByPattern guarda los archivos con un contador incremental cuando se produce una colisión. Es una cadena que contiene una instrucción de cada uno de los siguientes tipos: <F>, <E> y <N>, en cualquier orden.
Sintaxis: FindFilePlaceByPattern(PatrónDeArchivo )
Parámetro ¿Obligatorio? Valor PatrónDeArchivo
Sí
- <F> se reemplazará con el nombre de archivo original.
- <N> se reemplazará con un contador incremental hasta que no se generen más colisiones con los objetos del equipo de destino.
- <E> se reemplazará con la extensión de nombre de archivo original.
Por ejemplo,
<F> (<N>).<E>
cambiará el archivo de origen MyDocument.doc a MyDocument (1).doc en el equipo de destino.- <F> se reemplazará con el nombre de archivo original.
NewestVersion
La función NewestVersion resuelve los conflictos en el equipo de destino en función de la versión del archivo.
Sintaxis: NewestVersion(EtiquetaDeVersión)
Parámetro ¿Obligatorio? Valor EtiquetaDeVersión
Sí
El campo de versión que se comprobará. Puede ser “FileVersion” o “ProductVersion”. El archivo con la última versión de EtiquetaDeVersión determina los conflictos que se van a resolver 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”, se conservará el archivo de destino.
HigherValue()
Puedes usar esta función para combinar valores del Registro. Los valores del Registro se evalúan como valores numéricos; el que posea el mayor valor determinará qué valores del Registro se van a combinar.
LowerValue()
Puedes usar esta función para combinar valores del Registro. Los valores del Registro se evalúan como valores numéricos; el que posea el menor valor determinará qué valores del Registro se van a combinar.
SourcePriority
Especifica que se migre el objeto que se encuentra en el equipo de origen y que se elimine el objeto que se encuentra en el equipo de destino.
Por ejemplo:
<merge script="MigXmlHelper.SourcePriority()"> <objectSet> <pattern type="Registry">%HklmWowSoftware%\Microsoft\Office\12.0\Common\Migration\Publisher [UpgradeVersion]</pattern> <pattern type="Registry">%HklmWowSoftware%\Microsoft\Office\11.0\Common\Migration\Publisher [UpgradeVersion]</pattern> <pattern type="Registry">%HklmWowSoftware%\Microsoft\Office\10.0\Common\Migration\Publisher [UpgradeVersion]</pattern> </objectSet> </merge>
<migration>
El elemento <migration> es el único elemento de raíz de un archivo .xml de migración y es un elemento necesario. Cada archivo .xml debe tener un atributo urlid de migración exclusivo. El atributo urlid de cada archivo que especifiques en la línea de comandos debe ser único. Esto se debe a que USMT usa el atributo urlid para definir los componentes dentro del archivo. Debes especificar lo siguiente en el comienzo de cada archivo: <CustomFileName> es el nombre del archivo; por ejemplo, “CustomApp”.
Número de repeticiones: una
Elementos principales: ninguno
Elementos secundarios necesarios: <component>
Elementos secundarios opcionales: <library>, <namedElements>
Sintaxis:
<migration urlid=“*urlid/*Name”>
</migration>
Parámetro | ¿Obligatorio? | Valor |
---|---|---|
urlid |
Sí |
urlid es un identificador de cadenas que identifica este archivo .xml de forma exclusiva. Este parámetro debe ser un nombre sin signo de dos puntos según se define en la especificación de espacios de nombres XML. Cada archivo .xml de migración debe tener un atributo urlid exclusivo. Si dos archivos .xml de migración tienen el mismo atributo urlid, no se procesará el segundo archivo .xml especificado en la línea de comandos. Para obtener más información sobre los espacios de nombres XML, consulta el tema sobre el uso de espacios de nombres XML. |
Nombre |
No |
Si bien no es necesario, te recomendamos que uses el nombre del archivo .xml. |
El siguiente ejemplo pertenece al archivo MigApp.xml:
<migration urlid="https://www.microsoft.com/migration/1.0/migxmlext/migapp">
</migration>
MigXMLHelper.FileProperties
Esta función auxiliar de filtro puede usarse para filtrar la migración de los archivos en función del tamaño del archivo y los atributos de fecha.
Función auxiliar | MigXMLHelper.FileProperties (property, operator, valueToCompare) |
---|---|
Propiedad |
filesize, dateCreated, dateModified, dateAccessed |
Operador |
range, neq, lte, lt, eq, gte, gt |
valueToCompare |
El valor que se compara. Por ejemplo: Fecha: “2008/05/15-2005/05/17”, “2008/05/15” Tamaño: un número que termina con B, KB, MB o GB. “5GB”, “1KB-1MB” |
<component context="System" type="Application">
<displayName>File_size</displayName>
<role role="Data">
<rules>
<include filter='MigXmlHelper.FileProperties("dateAccessed","range","2008/05/15-2008/05/17")'>
<objectSet>
<pattern type="File">%SYSTEMDRIVE%\DOCS\* [*]</pattern>
</objectSet>
</include>
</rules>
</role>
</component>
<namedElements>
Puedes usar el elemento <namedElements> para definir elementos con nombre. Puedes usar estos elementos en cualquier componente en todo el archivo .xml. Para obtener un ejemplo de cómo usar este elemento, consulta el archivo MigApp.xml.
Sintaxis:
<namedElements>
</namedElements>
Número de repeticiones: ilimitado
Elementos principales: <migration>
Elementos secundarios: <environment>, <rules>, <conditions>, <detection>, <detects>, <detect>
Para obtener un ejemplo de este elemento, consulta el archivo MigApp.xml.
<object>
El elemento <object> representa un archivo o una clave del Registro.
Número de repeticiones: ilimitado
Elementos principales: <addObjects>
Elementos secundarios necesarios: <location>, <attributes>
Elementos secundarios opcionales: <bytes>
Sintaxis:
<object>
</object>
El siguiente ejemplo pertenece al archivo MigApp.xml:
<addObjects>
<object>
<location type="Registry">%HklmWowSoftware%\Microsoft\Office\12.0\Common\Migration\Office [UpgradeVersion]</location>
<attributes>DWORD</attributes>
<bytes>0B000000</bytes>
</object>
<object>
<location type="Registry">%HklmWowSoftware%\Microsoft\Office\12.0\Common\Migration\Office [Lang]</location>
<attributes>DWORD</attributes>
<bytes>00000000</bytes>
</object>
</addObjects>
<objectSet>
El elemento <objectSet> contiene una lista de los patrones de objetos, como rutas de acceso a archivos y ubicaciones del Registro, entre otros. Todos los elementos secundarios <conditions> se evaluarán en primer lugar. Si todos los elementos <conditions> devuelven “FALSE”, el elemento <objectSet> se evaluará en un conjunto vacío. Por cada elemento principal, solo puede haber varios elementos <objectSet>.
Número de repeticiones: ilimitado
Elementos principales: <variable>, <content>, <include>, <exclude>, <merge>, <contentModify>, <locationModify>, <destinationCleanup>, <includeAttributes>, <excludeAttributes>, <unconditionalExclude>, <detect>
Elementos secundarios necesarios: <script> o <pattern>
Elementos secundarios opcionales: <content>, <conditions>, <condition>
Sintaxis:
<objectSet>
</objectSet>
El siguiente ejemplo pertenece al archivo MigUser.xml:
<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 interno de USMT. No lo uses.
<paths>
Este elemento es interno de USMT. No lo uses.
<pattern>
Puedes usar este elemento para especificar varios objetos. Puedes especificar varios elementos <pattern> por cada elemento <objectSet> y se combinarán. Si especificas archivos, tal vez prefieras usar GenerateDrivePatterns con <script>. GenerateDrivePatterns es, básicamente, igual que la regla <pattern>, pero 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 principales: <objectSet>
Elementos secundarios: ninguno, pero Ruta de acceso[objeto] debe ser válido.
Sintaxis:
<pattern type=“IdDeTipo”>Ruta de acceso[objeto]</pattern>
Parámetro | ¿Obligatorio? | Valor |
---|---|---|
type |
Sí |
IdDeTipo puede ser “Registry”, “File” o “Ini”. Si IdDeTipo es “Ini”, no puede haber un espacio entre Ruta de acceso y objeto. Por ejemplo, esto es correcto cuando “type” es igual a “Ini”: <pattern type="Ini">%WinAmp5InstPath%\Winamp.ini|WinAmp[keeponscreen]</pattern> |
Ruta de acceso [objeto] |
Sí |
Un registro o un patrón de ruta de acceso a archivos válidos, seguidos de un espacio como mínimo y, a continuación, corchetes [] que contienen el objeto que se migrará.
|
Por ejemplo:
Para migrar una única clave del Registro:
<pattern type="Registry">HKLM\Software\Microsoft\Windows\CurrentVersion\Internet Settings\Cache [Persistent]</pattern>
Para migrar la carpeta EngineeringDrafts y las subcarpetas de la unidad C:
<pattern type="File">C:\EngineeringDrafts\* [*]</pattern>
Para migrar solo la carpeta EngineeringDrafts, sin ninguna subcarpeta, de la unidad C:
<pattern type="File"> C:\EngineeringDrafts\ [*]</pattern>
Para migrar el archivo Sample.doc de C:\EngineeringDrafts:
<pattern type="File"> C:\EngineeringDrafts\ [Sample.doc]</pattern>
Para migrar el archivo Sample.doc del lugar en el que se encuentra en la unidad C:, usa el patrón de la siguiente manera. Si existen varios archivos con el mismo nombre en la unidad C:, se migrarán todos ellos.
<pattern type="File"> C:\* [Sample.doc] </pattern>
Para obtener ejemplos de cómo usar este elemento, consulta Excluir archivos y configuraciones, Redistribuir archivos y configuraciones, Incluir archivos y configuraciones y Ejemplos de XML personalizado.
<processing>
Puedes usar este elemento para ejecutar un script durante un momento específico en el proceso de migración. No se esperan valores de retorno de los script que especifiques; si los hay, se omitirán.
Número de repeticiones: ilimitado
Elementos principales: <rules>
Elemento secundario necesario: <script>
Sintaxis:
<processing when="pre-scan|scan-success|post-scan|pre-apply|apply-success|post-apply">
</processing>
Parámetro | ¿Obligatorio? | Valor |
---|---|---|
when |
Sí |
Indica cuándo debe ejecutarse el script. Este valor puede ser uno de los siguientes:
|
<plugin>
Este elemento es interno de USMT. No lo uses.
<role>
El elemento <role> es necesario en un archivo .xml personalizado. Al especificar el elemento <role>, puedes crear un componente concreto. El componente se definirá según los parámetros especificados en el nivel de <component> y el rol que especificaste aquí.
Número de repeticiones: cada <component> puede tener uno, dos o tres elementos <role> secundarios.
Elementos principales: <component>, <role>
Elementos secundarios necesarios: <rules>
Elementos secundarios opcionales: <environment>, <detection>, <component>, <role>, <detects>, <plugin>
Sintaxis:
<role role="Container|Binaries|Settings|Data">
</role>
Parámetro | ¿Obligatorio? | Valor |
---|---|---|
role |
Sí |
Define el rol del componente. “Role” puede ser uno de los siguientes valores:
Puedes realizar una de estas acciones:
|
El siguiente ejemplo se extrajo del archivo MigUser.xml. Para obtener más ejemplos, consulta el archivo MigApp.xml:
<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>
<rules>
El elemento <rules> es necesario en un archivo .xml personalizado. Este elemento contiene reglas que se ejecutarán durante la migración si se selecciona el elemento principal <component>, salvo que el elemento secundario <conditions>, si existe, dé como resultado “FALSE”. Por cada elemento <rules> puede haber varios elementos <rules> secundarios.
Número de repeticiones: ilimitado
Elementos principales: <role>, <rules>, <namedElements>
Elementos secundarios necesarios: <include>
Elementos secundarios opcionales: <rules>, <exclude>, <unconditionalExclude>,<merge>, <contentModify>, <locationModify>, <destinationCleanup>, <addObjects>, <externalProcess>, <processing>, <includeAttributes>, <excludeAttributes>, <conditions>, <detects>
Sintaxis:
<rules name=“Id” context="User|System|UserAndSystem">
</rules>
Parámetro | ¿Obligatorio? | Valor |
---|---|---|
nombre |
Sí, cuando <rules> es secundario de <namedElements> Sí, cuando <rules> es secundario de cualquier otro elemento |
Cuando se especifica Id, no se procesa ningún elemento secundario. En cambio, se procesan todos los elementos <rules> restantes con el mismo nombre que estén indicados dentro de <namedElements>. |
context |
No El valor predeterminado es “UserAndSystem” |
Define el ámbito de este parámetro, es decir, si este componente se debe procesar en el contexto del usuario específico, en todo el sistema operativo, o en ambos. El ámbito más amplio posible se establece con el elemento <component>. Por ejemplo, si un elemento <component> tiene un contexto de “User” y un elemento <rules> tiene un contexto de “UserAndSystem”, el elemento <rules> se comportará como si tuviera el contexto de “User”. Si <rules> tiene un contexto de “System”, se comportará como si <rules> no existiera.
|
El siguiente ejemplo pertenece al archivo MigUser.xml:
<component type="Documents" context="User">
<displayName _locID="miguser.mymusic">My Music</displayName>
<paths>
<path type="File">%CSIDL_MYMUSIC%</path>
</paths>
<role role="Data">
<detects>
<detect>
<condition>MigXmlHelper.DoesObjectExist("File","%CSIDL_MYMUSIC%")</condition>
</detect>
</detects>
<rules>
<include filter='MigXmlHelper.IgnoreIrrelevantLinks()'>
<objectSet>
<pattern type="File">%CSIDL_MYMUSIC%\* [*]</pattern>
</objectSet>
</include>
<merge script="MigXmlHelper.DestinationPriority()">
<objectSet>
<pattern type="File">%CSIDL_MYMUSIC%\ [desktop.ini]</pattern>
</objectSet>
</merge>
</rules>
</role>
</component>
<script>
El valor de retorno que se necesita para <script> depende del elemento principal.
Número de repeticiones: una por <variable>, ilimitadas para <objectSet> y <processing>
Elementos principales: <objectSet>, <variable>, <processing>
Elementos secundarios: ninguno
Sintaxis y funciones auxiliares
Sintaxis general: <script>ScriptConArgumentos</script>
Puedes usar Funciones <script> cuando <script> está dentro de <variable>.
Sintaxis: <script>MigXmlHelper.GetStringContent(“TipoDeObjeto”,“PatrónDeUbicaciónCodificado”, “ExpandirContenido”)</script>
Ejemplo:
<script>MigXMLHelper.GetStringContent("Registry","HKLM\Software\MyApp\Installer [EXEPATH]")</script>
Puedes usar Funciones <script> cuando <script> está dentro de <objectSet>.
Sintaxis: <script>MigXmlHelper.GenerateUserPatterns(“TipoDeObjeto”,“PatrónDeUbicaciónCodificado”,“ProcesarUsuarioActual”)</script>
Ejemplo:
<script>MigXmlHelper.GenerateUserPatterns ("File","%USERPROFILE%\* [*.doc]", "FALSE")</script>
Puedes usar Funciones <script> cuando <script> está dentro de <objectSet>.
Sintaxis: <script>MigXmlHelper.GenerateDrivePatterns(“SegmentoDePatrón”,“TipoDeUnidad”)</script>
Ejemplo:
<script>MigXmlHelper.GenerateDrivePatterns("* [sample.doc]", "Fixed")</script>
Puedes usar los Funciones <script> con elementos <script> que se encuentran dentro de elementos <processing>: AskForLogoff, ConvertToShortFileName, KillExplorer, RemoveEmptyDirectories, RestartExplorer, RegisterFonts, StartService, StopService y SyncSCM.
Sintaxis: <script>MigXmlHelper.ScriptDeEjecución</script>
Ejemplo:
<script>MigXmlHelper.KillExplorer()</script>
Parámetro | ¿Obligatorio? | Valor |
---|---|---|
ScriptConArgumentos |
Sí |
Un script seguido de cualquier cantidad de argumentos de cadena separados por comas y entre paréntesis. Por ejemplo, Se llama al script por cada objeto enumerado por los conjuntos de objetos de la regla <include>. El script de filtrado devuelve un valor booleano. Si el valor de retorno es “TRUE”, se migrará el objeto. Si es “FALSE”, no se migrará. El valor de retorno que se necesita para <script> depende del elemento principal.
|
Ejemplos:
Para migrar el archivo Sample.doc de cualquier unidad en el equipo de origen, usa <script> como se muestra a continuación. Si existen varios archivos con el mismo nombre, se migrarán todos ellos.
<script>MigXmlHelper.GenerateDrivePatterns("* [sample.doc]", "Fixed")</script>
Para obtener ejemplos de cómo usar este elemento, consulta Excluir archivos y configuraciones, Redistribuir archivos y configuraciones, Redistribuir archivos y configuraciones y Ejemplos de XML personalizado.
Funciones <script>
Puedes usar las siguientes funciones con el elemento <script>:
Funciones de generación de cadenas y patrones
Scripts de ejecución simple
Funciones de generación de cadenas y patrones
Estas funciones devuelven una cadena o un patrón.
GetStringContent
Puedes usar GetStringContent con elementos <script> que están dentro de elementos <variable>. Si es posible, esta función devuelve la representación de cadena del objeto dado. De lo contrario, devuelve “NULL”. En objetos de archivo, esta función siempre devuelve “NULL”.
Sintaxis: GetStringContent(“TipoDeObjeto”,“PatrónDeUbicaciónCodificado”, “ExpandirContenido”)
Parámetro ¿Obligatorio? Valor TipoDeObjeto
Sí
El tipo de objeto. Puede ser “Registry” o “Ini” (para un archivo .ini).
PatrónDeUbicaciónCodificado
Sí
- Si el tipo de objeto es Registry, PatrónDeUbicaciónCodificado debe ser una ruta de acceso del Registro válida. Por ejemplo, HKLM\SOFTWARE\MyKey[].
- Si el tipo de objeto es Ini, PatrónDeUbicaciónCodificado debe tener el siguiente formato:
IniFilePath|SectionName[SettingName]
ExpandirContenido
No, el valor predeterminado es “TRUE”
Puede ser “TRUE” o “FALSE”. Si es “FALSE”, la ubicación dada no se expandirá antes de devolverse.
Por ejemplo:
<variable name="MSNMessengerInstPath"> <script>MigXmlHelper.GetStringContent("Registry","%HklmWowSoftware%\Microsoft\MSNMessenger [InstallationDirectory]")</script> </variable>
- Si el tipo de objeto es Registry, PatrónDeUbicaciónCodificado debe ser una ruta de acceso del Registro válida. Por ejemplo, HKLM\SOFTWARE\MyKey[].
GenerateDrivePatterns
La función GenerateDrivePatterns realiza una iteración en todas las unidades disponibles y selecciona las que coinciden con el tipo de unidad solicitada. Después, concatena las unidades seleccionadas con la parte final de SegmentoDePatrón para formar un patrón de archivo codificado completo. Por ejemplo, si SegmentoDePatrón es
Path [file.txt]
y TipoDeUnidad esFixed
, la función generaráC:\Path [file.txt]
y otros patrones si existen otras unidades fijas además de C:. No puedes especificar variables de entorno con esta función. Puedes usar GenerateDrivePatterns con elementos <script> que están en <objectSet> dentro de <include>/<exclude>.Sintaxis: GenerateDrivePatterns(“SegmentoDePatrón”,“TipoDeUnidad”)
Parámetro ¿Obligatorio? Valor SegmentoDePatrón
Sí
El sufijo de un patrón codificado. Se concatenará con una especificación de unidad, como "c:\", para formar un Especificación de ubicaciones completo. Por ejemplo, “* [*.doc]”. SegmentoDePatrón no puede ser una variable de entorno.
TipoDeUnidad
Sí
El tipo de unidad para la que se generan los patrones. Puede ser uno de los siguientes valores:
- Fixed
- CDROM
- Removable
- Remote
Consulta el último componente en el archivo MigUser.xml para obtener un ejemplo de este elemento.
- Fixed
GenerateUserPatterns
La función procesa una iteración en todos los usuarios que se migran, a excepción del usuario que se procesa actualmente (si <ProcesarUsuarioActual> 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:\Documents and Settings), al llamar a
GenerateUserPattens('File','%userprofile% [*.doc]','TRUE')
, la función auxiliar generará los tres valores siguientes:“C:\Documents and Settings\A\* [*.doc]”
“C:\Documents and Settings\B\* [*.doc]”
“C:\Documents and Settings\C\* [*.doc]”
Sintaxis: GenerateUserPatterns(“TipoDeObjeto”,“PatrónDeUbicaciónCodificado”,“ProcesarUsuarioActual”)
Parámetro ¿Obligatorio? Valor TipoDeObjeto
Sí
Define el tipo de objeto. Puede ser “File” o “Registry”.
PatrónDeUbicaciónCodificado
Sí
El Especificación de ubicaciones. Se permiten variables de entorno.
ProcesarUsuarioActual
Sí
Puede ser “TRUE” o “FALSE”. Indica si deben generarse los patrones del usuario actual.
Ejemplo:
Si se llama a GenerateUserPattens('File','%userprofile% [*.doc]','FALSE') mientras USMT procesa al usuario A, esta función solo generará patrones para los usuarios B y C. Puedes usar esta función auxiliar para crear reglar complejas. Por ejemplo, puedes migrar todos los archivos .doc del equipo de origen (pero si no se migra el usuario X, no migres ningún archivo .doc del perfil del usuario X).
Este es un código de ejemplo de este escenario. El primer elemento <rules> migra todos los archivos .doc en el equipo de origen, a excepción de los que están en C:\Documents and Settings. El segundo elemento <rules> migra todos los archivos .doc de C:\Documents and Settings, a excepción de los archivos .doc en los perfiles de los otros usuarios. Como el segundo elemento <rules> se procesará en cada contexto de usuario migrado, el resultado final va a ser el comportamiento deseado. El resultado final es el que esperábamos.
<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
Esta función auxiliar invoca al buscador de documentos para que busque en el sistema todos los archivos que pueden migrarse. Puede invocarse tanto en el contexto de “System” como en el de “User” para centrar la búsqueda.
Parámetro | ¿Obligatorio? | Valor |
---|---|---|
ScanProgramFiles |
No, el valor predeterminado es “FALSE” |
Puede ser “TRUE” o “FALSE”. El parámetro ScanProgramFiles determina si el buscador de documentos analiza o no el directorio Archivos de programa para recopilar extensiones de archivos registradas de las aplicaciones conocidas. Por ejemplo, cuando se establece en “TRUE”, detecta y migra archivos .jpg del directorio Photoshop (si .jpg es una extensión de archivo registrada en Photoshop). |
IncludePatterns |
No, el valor predeterminado es “TRUE” |
Puede ser “TRUE” o “FALSE”. “TRUE” generará patrones de inclusión y puede agregarse en el elemento <include>. “FALSE” generará patrones de exclusión y puede agregarse en el elemento <exclude>. |
SystemDrive |
No, el valor predeterminado es “FALSE” |
Puede ser “TRUE” o “FALSE”. Si es “TRUE”, restringe todos los patrones de 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>
Scripts de ejecución simple
Los siguientes scripts no devuelven ningún valor. Puedes usar los siguientes errores con elementos <script> que están dentro de elementos <processing>:
AskForLogoff(). Le pide al usuario que cierre sesión al finalizar la migración. Por ejemplo:
<processing when="apply-success"> <script>MigXmlHelper.AskForLogoff()</script> </processing>
ConvertToShortFileName(UbicaciónCodificadaDelRegistro). Si UbicaciónCodificadaDelRegistro es la ruta de acceso completa a un archivo existente, esta función convertirá el archivo a su nombre corto de archivo y después actualizará el valor del Registro.
KillExplorer(). Detiene Explorer.exe en el contexto del usuario actual. Esto permite obtener acceso a ciertas claves y archivos que se mantienen abiertos mientras se ejecuta Explorer.exe. Por ejemplo:
<processing when="pre-apply"> <script>MigXmlHelper.KillExplorer()</script> </processing>
RegisterFonts(UbicaciónCodificadaDeArchivo). Registra la fuente especificada o todas las fuentes en el directorio dado. Por ejemplo:
<processing when="apply-success"> <script>MigXmlHelper.RegisterFonts("%CSIDL_COMMON_FONTS%")</script> </processing>
**RemoveEmptyDirectories (PatrónCodificadoDeDirectorio).**Elimina los directorios vacíos que coinciden con PatrónCodificadoDeDirectorio 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 (NombreDelServicio, ParamOpcional1, ParamOpcional2,…). Inicia el servicio identificado por NombreDelServicio. NombreDelServicio es una subclave en HKLM\System\CurrentControlSet\Services que contiene datos del servicio dado. Los parámetros opcionales (si los hay) se pasarán a la API de StartService. Para obtener más información, consulta este sitio web de Microsoft.
StopService (NombreDelServicio). Detiene el servicio que identifica NombreDelServicio. NombreDelServicio es la subclave en HKLM\System\CurrentControlSet\Services que contiene los datos del servicio dado.
SyncSCM(ServiceShortName). Lee el valor de tipo de inicio del Registro (HKLM\System\CurrentControlSet\Services\ServiceShortName [Start]) después de que sea modificado por el motor de migración y después sincroniza el Administrador de control de servicios (SCM) con el valor nuevo.
<text>
Puedes usar el elemento <text> para establecer un valor para las variables de entorno que se encuentren en uno de los archivos .xml de migración.
Número de repeticiones: una por cada elemento <variable>.
Elementos principales: <variable>
Elementos secundarios: ninguno.
Sintaxis:
<text>TextoNormal</text>
Parámetro | Valor |
---|---|
TextoNormal |
Se interpreta como texto normal. |
Por ejemplo:
<variable name="QuickTime5or6DataSys">
<text>%CSIDL_COMMON_APPDATA%\QuickTime</text>
</variable>
<unconditionalExclude>
El elemento <unconditionalExclude> excluye de la migración los archivos y los valores del Registro especificados, independientemente de las otras reglas de inclusión de cualquiera de los archivos .xml de migración o del archivo Config.xml. Los objetos indicados aquí no se migrarán, porque este elemento tiene prioridad sobre cualquier otra regla. Por ejemplo, incluso si hay reglas <include> explícitas para incluir archivos .mp3, si usas esta opción para especificar que se excluyan, no se migrarán.
Usa este elemento si quieres excluir todos los archivos .mp3 del equipo de origen. Si estás haciendo una copia de seguridad de C:\UserData con otro método, también puedes excluir toda la carpeta de la migración. Sin embargo, debes usar este elemento con precaución, porque si una aplicación necesita un archivo que estés excluyendo, es posible que la aplicación no funcione correctamente en el equipo de destino.
Número de repeticiones: ilimitado
Elementos principales: <rules>
Elementos secundarios: <objectSet>
Sintaxis:
<unconditionalExclude></unconditionalExclude>
El siguiente archivo .xml excluye todos los archivos .mp3 de la migración. Para obtener más ejemplos sobre cómo usar este elemento, consulta Excluir archivos y configuraciones.
<migration urlid="https://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 <environment>. Por cada elemento <variable> debe haber un elemento <objectSet>, <script> o <text> El contenido del elemento <variable> le asigna un valor de texto a la variable de entorno. Este elemento tiene las tres funciones siguientes:
Si el elemento <variable> contiene un elemento <text>, el valor del elemento variable será el valor del elemento <text>.
Si el elemento <variable> contiene un elemento <script> y la invocación del script genera una cadena no nula, el valor del elemento <variable> será el resultado de la invocación del script.
Si el elemento <variable> contiene un elemento <objectSet> y la evaluación del elemento <objectSet> genera, como mínimo, un patrón de objeto, el valor del primer objeto que coincida con el patrón de objeto resultante será el valor del elemento variable.
Número de repeticiones: ilimitado
Elementos principales: <environment>
Elementos secundarios necesarios: <text>, <script> u <objectSet>
Sintaxis:
<variable name=“Id” remap=TRUE|FALSE>
</variable>
Parámetro | ¿Obligatorio? | Valor |
---|---|---|
nombre |
Sí |
Id es un valor de cadena. Es el nombre que se usa para hacer referencia a la variable de entorno. Te recomendamos que Id comience con el nombre del componente para evitar colisiones de espacios de nombres. Por ejemplo, si el nombre del componente es “MyComponent” y la variable que quieres es la ruta de acceso de instalación del componente, puedes especificar |
remap |
No, el valor predeterminado es “FALSE” |
Especifica si se va a evaluar esta variable de entorno como una variable de entorno de asignación. Los objetos que se encuentran en una ruta de acceso por debajo de este valor de variable de entorno se mueven automáticamente a la ubicación que indica la variable de entorno en el equipo de destino. |
El siguiente ejemplo pertenece al archivo MigApp.xml:
<environment>
<variable name="HklmWowSoftware">
<text>HKLM\Software</text>
</variable>
<variable name="WinZip8or9or10Exe">
<script>MigXmlHelper.GetStringContent("Registry","%HklmWowSoftware%\Microsoft\Windows\CurrentVersion\App Paths\winzip32.exe []")</script>
</variable>
</environment>
<version>
El elemento <version> define la versión del componente, pero no afecta a la migración.
Número de repeticiones: cero o una
Elementos principales: <component>
Elementos secundarios: ninguno
Sintaxis:
<version>VersiónDelComponente</version>
Parámetro | ¿Obligatorio? | Valor |
---|---|---|
VersiónDelComponente |
Sí |
La 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 lo uses.
Apéndice
Especificación de ubicaciones
Especificación de ubicaciones codificadas. La ubicación codificada usada en todas las funciones auxiliares es una representación de cadena inequívoca del nombre de un objeto. Consta de la parte del nodo, que puede ir seguida de la hoja entre corchetes. Esto marca una clara diferencia entre los nodos y las hojas.
Por ejemplo, especifica el archivo C:\Windows\Notepad.exe de este modo:
c:\Windows[Notepad.exe]
. Del mismo modo, especifica el directorio C:\Windows\System32 de esta manera:c:\Windows\System32
. (Observa que no hay ninguna construcción []).La representación del Registro es muy parecida. 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 Registro HKLM\SOFTWARE\MyKey será
HKLM\SOFTWARE\MyKey[]
.Especificación de patrones de ubicación. La manera de especificar un patrón de ubicación y una ubicación en sí son parecidas. La excepción es que tanto la parte del nodo como la de la hoja aceptan patrones. Sin embargo, un patrón del nodo no se extiende hasta la hoja.
Por ejemplo, el patrón
c:\Windows\*
coincidirá con el directorio Windows y todos los subdirectorios. Pero no coincidirá con ninguno de los archivos en esos directorios. Para que los archivos también coincidan, debes especificarc:\Windows\*[*]
.
Funciones internas de USMT
Las siguientes funciones son solo para uso interno de USMT. No las uses en un archivo .xml.
AntiAlias
ConvertScreenSaver
ConvertShowIEOnDesktop
ConvertToOfficeLangID
MigrateActiveDesktop
MigrateAppearanceUPM
MigrateDisplayCS
MigrateDisplaySS
MigrateIEAutoSearch
MigrateMouseUPM
MigrateSoundSysTray
MigrateTaskBarSS
SetPstPathInMapiStruc
Etiquetas de versión válidas
Puedes usar las siguientes etiquetas de versión 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”