Biblioteca de elementos XML
En este artículo se describen los elementos XML y las funciones auxiliares que se pueden usar para crear archivos de migración.xml para usarlos con la Herramienta de migración de estado de usuario (USMT). En este artículo se asume un conocimiento básico de XML.
Además de los elementos XML y las funciones auxiliares, en este artículo:
- Describe cómo especificar patrones de ubicaciones y ubicaciones codificadas.
- Las funciones que son solo para USO interno de USMT.
- Etiquetas de versión que se pueden usar con funciones auxiliares.
Elementos y funciones auxiliares
En la tabla siguiente se describen los elementos XML y las funciones auxiliares que se pueden usar con USMT.
<addObjects>
El <elemento addObjects> emula la existencia de uno o varios objetos en el equipo de origen. Los elementos de objeto> secundarios< proporcionan los detalles de los objetos emulados. Si el contenido es un <elemento de script> , el resultado de la invocación es una matriz de objetos.
Número de repeticiones: ilimitado
Elementos primarios:<rules>
Elementos secundarios necesarios:<object> Además, <la ubicación> y <el atributo> deben especificarse como elementos secundarios de este <elemento de objeto> .
Elementos secundarios opcionales:<condiciones>, <condición>, <script>
Sintaxis:
<addObjects>
</addObjects>
El ejemplo siguiente es del MigApp.xml
archivo :
<addObjects>
<object>
<location type="Registry">%HklmWowSoftware%\Microsoft\Office\16.0\Common\Migration\Office [UpgradeVersion]</location>
<attributes>DWORD</attributes>
<bytes>0B000000</bytes>
</object>
<object>
<location type="Registry">%HklmWowSoftware%\Microsoft\Office\16.0\Common\Migration\Office [Lang]</location>
<attributes>DWORD</attributes>
<bytes>00000000</bytes>
</object>
</addObjects>
<Atributos>
El <elemento attributes> define los atributos de una clave o archivo del Registro.
Número de repeticiones: una vez para cada <objeto>
Elementos primarios:<object>
Elementos secundarios: none
Sintaxis:
<attributes>Content</attributes>
Ajuste | ¿Es obligatorio? | Valor |
---|---|---|
Contenido | Sí | El contenido depende del tipo de objeto especificado.
|
El ejemplo siguiente es del MigApp.xml
archivo :
<object>
<location type="Registry">%HklmWowSoftware%\Microsoft\Office\16.0\Common\Migration\Office [Lang]</location>
<attributes>DWORD</attributes>
<bytes>00000000</bytes>
</object>
<Bytes>
El <elemento bytes> solo se puede especificar para los archivos porque, si <la ubicación> corresponde a una clave del Registro o a un directorio, <se omiten los bytes> .
Número de repeticiones: cero o uno
Elementos primarios:<object>
Elementos secundarios: none
Sintaxis:
<bytes string="Yes|No" expand="Yes|No">Content</bytes>
Ajuste | ¿Es obligatorio? | Valor |
---|---|---|
string | No, el valor predeterminado es No. | Determina si el contenido debe interpretarse como una cadena o como bytes. |
expand | No (valor predeterminado = Sí | Cuando el parámetro expand es Sí, el contenido del <elemento bytes> se expande primero en el contexto del equipo de origen y, a continuación, se interpreta. |
Contenido | Sí | Depende del valor de la cadena.
|
El ejemplo siguiente es del MigApp.xml
archivo :
<object>
<location type="Registry">%HklmWowSoftware%\Microsoft\Office\16.0\Common\Migration\Office [Lang]</location>
<attributes>DWORD</attributes>
<bytes>00000000</bytes>
</object>
<commandLine>
El <elemento commandLine> se puede usar para iniciar o detener un servicio o una aplicación antes o después de ejecutar las herramientas ScanState y LoadState .
Número de repeticiones: ilimitado
Elementos primarios:<externalProcess>
Elementos secundarios: none
Sintaxis:
<commandLine>CommandLineString</commandLine>
Ajuste | ¿Es obligatorio? | Valor |
---|---|---|
CommandLineString | Sí | Línea de comandos válida. |
<componente>
El <elemento de componente> es necesario en un archivo de.xml personalizado. Este elemento define la construcción más básica de un archivo de migración.xml . Por ejemplo, en el MigApp.xml
archivo, Microsoft Office 2016 es un componente que contiene otro componente, Microsoft Office Access 2016. Los elementos secundarios se pueden usar para definir el componente.
Un componente se puede anidar dentro de otro componente; es decir, el elemento de< componente> puede ser un elemento secundario del <elemento role> dentro del elemento de< componente> en dos casos:
- Cuando el elemento del componente> primario< es un contenedor
- Si el elemento de componente> secundario< tiene el mismo rol que el elemento del componente> primario<.
Número de repeticiones: Ilimitado
Elementos primarios:<migración>, <rol>
Elementos secundarios necesarios:<role>, <displayName>
Elementos secundarios opcionales:<fabricante>, <versión>, <descripción>, <rutas de acceso>, <icono>, <entorno>, <extensiones>
Sintaxis:
<component type="System|Application|Device|Documents" context="User|System|UserAndSystem" defaultSupported="TRUE|FALSE|YES|NO"
hidden="Yes|No">
</component>
Ajuste | ¿Es obligatorio? | Valor |
---|---|---|
tipo | Sí | Los siguientes elementos se pueden usar para agrupar la configuración y definir el tipo del componente.
|
contexto | No Default = UserAndSystem |
Define el ámbito de este parámetro; es decir, si se va a procesar este componente en el contexto del usuario específico, en todo el sistema operativo o en ambos. El mayor ámbito posible lo establece el elemento de< componente>. Por ejemplo, si un <elemento de componente> tiene un contexto de User y un <elemento rules> tenía un contexto de UserAndSystem, el <elemento rules> actuaría como si tuviera un contexto de User. Si un <elemento rules> tiene un contexto de System, actuaría como si el <elemento rules> no estuviera allí.
|
defaultSupported | No (valor predeterminado = TRUE) |
Puede ser true, falso, sí o no. Si este parámetro es FALSE (o NO), el componente no se migra a menos que haya un componente equivalente en el equipo de destino. Cuando type="System" y defaultSupported="FALSE", la configuración no se migra a menos que haya un componente equivalente en los archivos .xml especificados en la LoadState.exe línea de comandos. Por ejemplo, el archivo predeterminado MigSys.xml contiene componentes con type="System" y defaultSupported="FALSE". Si se especifica este archivo en la ScanState.exe línea de comandos, el archivo también debe especificarse en la LoadState.exe línea de comandos para la configuración que se va a migrar. El archivo debe especificarse en ambas líneas de comandos porque la herramienta LoadState debe detectar un componente equivalente. Es decir, el componente debe tener el mismo urlid de migración del archivo .xml y un nombre para mostrar idéntico o la herramienta LoadState no migra esa configuración del almacén. Esta configuración es útil porque se puede usar una tienda para equipos de destino que sean la misma versión o diferente de Windows que el equipo de origen. |
escondido | Este parámetro es solo para uso interno de USMT. |
Para obtener un ejemplo, consulte cualquiera de los archivos de.xml de migración predeterminados.
<condición>
Aunque el <elemento condition> de los <elementos detect>, <objectSet> y <addObjects> sigue siendo compatible, Microsoft recomienda dejar de usar el <elemento condition> porque podría estar en desuso en versiones futuras de USMT. Si el <elemento condition> está en desuso, requeriría una reescritura de los scripts que usen el <elemento condition> . En su lugar, si es necesario usar una condición dentro de los <elementos objectSet> y <addObjects>, Microsoft recomienda usar el elemento conditions> más eficaz<. El <elemento conditions> permite la formulación de instrucciones booleanas complejas.
El <elemento condition> tiene un resultado booleano. Este elemento se puede usar para especificar las condiciones en las que se evalúa el elemento primario. Si alguna de las condiciones actuales devuelve FALSE, no se evalúa el elemento primario.
Número de repeticiones: ilimitado.
Elementos primarios:<conditions>, <detect>, <objectSet>, <addObjects>
Elementos secundarios: none
Funciones auxiliares: Las siguientes <funciones de condición> se pueden usar con este elemento:
DoesOSMatch
,IsNative64Bit()
, ,IsOSLaterThan
,IsOSEarlierThan
DoesObjectExist
,DoesFileVersionMatch
,IsFileVersionAbove
,IsSystemContext
IsFileVersionBelow
,DoesStringContentEqual
,DoesStringContentContain
,IsSameObject
,IsSameContent
yIsSameStringContent
.
Sintaxis:
<condition negation="Yes|No">ScriptName</condition>
Ajuste | ¿Es obligatorio? | Valor |
---|---|---|
negación | No Valor predeterminado = No |
"Sí" invierte el valor True/False de la condición. |
ScriptName | Sí | Script que se define en esta sección de migración. |
Por ejemplo, en el ejemplo de código siguiente, los <elementos de condición>, A y B, se unen mediante el operador AND porque están en secciones de condiciones> independientes<:
<detection>
<conditions>
<condition>A</condition>
</conditions>
<conditions operation="AND">
<condition>B</condition>
</conditions>
</detection>
Sin embargo, en el ejemplo de código siguiente, los <elementos de condición> , A y B, se unen por el operador OR porque están en la misma <sección de condiciones> .
<detection>
<conditions>
<condition>A</condition>
<condition>B</condition>
</conditions>
</detection>
<funciones de condición>
Las <funciones de condición> devuelven un valor booleano. Estos elementos se pueden usar en <condiciones addObjects> .
Funciones de versión del sistema operativo
DoesOSMatch
Todas las coincidencias no distinguen mayúsculas de minúsculas.
Sintaxis:
DoesOSMatch("OSType","OSVersion")
Ajuste ¿Es obligatorio? Valor OSType Sí El único valor válido para esta configuración es NT. Sin embargo, esta configuración debe establecerse para que las funciones de <condición> funcionen correctamente. OSVersion Sí La versión principal, la versión secundaria, el número de compilación y la versión de diskette del servicio corregida separadas por puntos. Por ejemplo, 5.0.2600.Service Pack 1
. La especificación parcial de la versión también se puede especificar con un patrón como5.0.*
.Por ejemplo:
<condition>MigXmlHelper.DoesOSMatch("NT","\*")</condition>
IsNative64Bit
La función IsNative64Bit devuelve TRUE si el proceso de migración se ejecuta como un proceso nativo de 64 bits; es decir, un proceso que se ejecuta en un sistema de 64 bits sin Windows en Windows (WOW). De lo contrario, devuelve FALSE.
IsOSLaterThan
Todas las comparaciones no distinguen mayúsculas de minúsculas.
Sintaxis:
IsOSLaterThan("OSType","OSVersion")
Ajuste ¿Es obligatorio? Valor OSType Sí Puede ser 9x o NT. Si OSType no coincide con el tipo del sistema operativo actual, devuelve FALSE. Por ejemplo, si el sistema operativo actual está basado en Windows NT y OSType es "9x", el resultado es FALSE. OSVersion Sí La versión principal, la versión secundaria, el número de compilación y la versión de diskette del servicio corregida separadas por puntos. Por ejemplo, 5.0.2600.Service Pack 1
. También se puede especificar la especificación parcial de la versión, pero no se permite ningún patrón, como5.0
.
La función IsOSLaterThan devuelve TRUE si el sistema operativo actual es posterior o igual que OSVersion.Por ejemplo:
<condition negation="Yes">MigXmlHelper.IsOSLaterThan("NT","6.0")</condition>
IsOSEarlierThan
Todas las comparaciones no distinguen mayúsculas de minúsculas.
Sintaxis:
IsOSEarlierThan("OSType","OSVersion")
Ajuste ¿Es obligatorio? Valor OSType Sí Puede ser 9x o NT. Si OSType no coincide con el tipo del sistema operativo actual, devuelve FALSE. Por ejemplo, si el sistema operativo actual está basado en Windows NT y OSType es "9x" , el resultado es FALSE. OSVersion Sí La versión principal, la versión secundaria, el número de compilación y la versión de diskette del servicio corregida separadas por puntos. Por ejemplo, 5.0.2600.Service Pack 1
. También se puede especificar la especificación parcial de la versión, pero no se permite ningún patrón, como5.0
.
La función IsOSEarlierThan devuelve TRUE si el sistema operativo actual es anterior a OSVersion.
Funciones de contenido de objetos
DoesObjectExist
La función DoesObjectExist devuelve TRUE si existe algún objeto que coincida con el patrón de ubicación. De lo contrario, devuelve FALSE. El patrón de ubicación se expande antes de intentar la enumeración.
Sintaxis:
DoesObjectExist("ObjectType","EncodedLocationPattern")
Ajuste ¿Es obligatorio? Valor ObjectType Sí Define el tipo de objeto. Puede ser Archivo o Registro. EncodedLocationPattern Sí Patrón de ubicación. Se permiten variables de entorno. Para obtener un ejemplo de este elemento, vea el
MigApp.xml
archivo .DoesFileVersionMatch
La comprobación de patrones no distingue mayúsculas de minúsculas.
Sintaxis:
DoesFileVersionMatch("EncodedFileLocation","VersionTag","VersionValue")
Ajuste ¿Es obligatorio? Valor EncodedFileLocation Sí Patrón de ubicación para el archivo que está comprobado. Se permiten variables de entorno. VersionTag Sí Valor de etiqueta de versión que se comprueba. VersionValue Sí Patrón de cadena. Por ejemplo, "Microsoft*". Por ejemplo:
<condition>MigXmlHelper.DoesFileVersionMatch("%MSNMessengerInstPath%\\msnmsgr.exe","ProductVersion","6.\*")</condition> <condition>MigXmlHelper.DoesFileVersionMatch("%MSNMessengerInstPath%\\msnmsgr.exe","ProductVersion","7.\*")</condition>
IsFileVersionAbove
La función IsFileVersionAbove devuelve TRUE si la versión del archivo es mayor que VersionValue.
Sintaxis:
IsFileVersionAbove("EncodedFileLocation","VersionTag","VersionValue")
Ajuste ¿Es obligatorio? Valor EncodedFileLocation Sí Patrón de ubicación para el archivo que está comprobado. Se permiten variables de entorno. VersionTag Sí Valor de etiqueta de versión que se comprueba. VersionValue Sí Valor con el que se va a comparar. No se puede especificar un patrón. IsFileVersionBelow
Sintaxis:
IsFileVersionBelow("EncodedFileLocation","VersionTag","VersionValue")
Ajuste ¿Es obligatorio? Valor EncodedFileLocation Sí Patrón de ubicación para el archivo que está comprobado. Se permiten variables de entorno. VersionTag Sí Valor de etiqueta de versión que se comprueba. VersionValue Sí Valor con el que se va a comparar. No se puede especificar un patrón. IsSystemContext
La función IsSystemContext devuelve TRUE si el contexto actual es "System". De lo contrario, devuelve FALSE.
Sintaxis:
IsSystemContext()
DoesStringContentEqual
La función DoesStringContentEqual devuelve TRUE si la representación de cadena del objeto especificado es idéntica a
StringContent
.Sintaxis:
DoesStringContentEqual("ObjectType","EncodedLocation","StringContent")
Ajuste ¿Es obligatorio? Valor ObjectType Sí Define el tipo de objeto. Puede ser Archivo o Registro. EncodedLocationPattern Sí Ubicación codificada del objeto que se examina. Se pueden especificar variables de entorno. StringContent Sí Cadena con la que se comprueba. Por ejemplo:
<condition negation="Yes">MigXmlHelper.DoesStringContentEqual("File","%USERNAME%","")</condition>
DoesStringContentContain
La función DoesStringContentContain devuelve TRUE si hay al menos una aparición de StrToFind en la representación de cadena del objeto.
Sintaxis:
DoesStringContentContain("ObjectType","EncodedLocation","StrToFind")
Ajuste ¿Es obligatorio? Valor ObjectType Sí Define el tipo de objeto. Puede ser Archivo o Registro. EncodedLocationPattern Sí Ubicación codificada del objeto que se examina. Se pueden especificar variables de entorno. StrToFind Sí Cadena que se busca dentro del contenido del objeto especificado. IsSameObject
La función IsSameObject devuelve TRUE si las ubicaciones codificadas dadas se resuelven en el mismo objeto físico. De lo contrario, devuelve FALSE.
Sintaxis:
IsSameObject("ObjectType","EncodedLocation1","EncodedLocation2")
Ajuste ¿Es obligatorio? Valor ObjectType Sí Define el tipo de objeto. Puede ser Archivo o Registro. EncodedLocation1 Sí Ubicación codificada para el primer objeto. Se pueden especificar variables de entorno. EncodedLocation2 Sí Ubicación codificada para el segundo objeto. Se pueden especificar variables de entorno. Por ejemplo:
<objectSet> <condition negation="Yes">MigXmlHelper.IsSameObject("File","%CSIDL_FAVORITES%","%CSIDL_COMMON_FAVORITES%")</condition> <pattern type="File">%CSIDL_FAVORITES%\* [*]</pattern> </objectSet>
IsSameContent
La función IsSameContent devuelve TRUE si los objetos especificados tienen el mismo contenido. De lo contrario, devuelve FALSE. El contenido se compara byte byte.
Sintaxis:
IsSameContent("ObjectType1","EncodedLocation1","ObjectType2","EncodedLocation2")
Ajuste ¿Es obligatorio? Valor ObjectType1 Sí Define el tipo del primer objeto. Puede ser Archivo o Registro. EncodedLocation1 Sí Ubicación codificada para el primer objeto. Se pueden especificar variables de entorno. ObjectType2 Sí Define el tipo del segundo objeto. Puede ser Archivo o Registro. EncodedLocation2 Sí Ubicación codificada para el segundo objeto. Se pueden especificar variables de entorno. IsSameStringContent
La función IsSameStringContent devuelve TRUE si los objetos especificados tienen el mismo contenido. De lo contrario, devuelve FALSE. El contenido se interpreta como una cadena.
Sintaxis:
IsSameStringContent("ObjectType1","EncodedLocation1","ObjectType2","EncodedLocation2")
Ajuste ¿Es obligatorio? Valor ObjectType1 Sí Define el tipo del primer objeto. Puede ser Archivo o Registro. EncodedLocation1 Sí Ubicación codificada para el primer objeto. Se pueden especificar variables de entorno. ObjectType2 Sí Define el tipo del segundo objeto. Puede ser Archivo o Registro. EncodedLocation2 Sí Ubicación codificada para el segundo objeto. Se pueden especificar variables de entorno.
<condiciones>
El <elemento conditions> devuelve un resultado booleano que se usa para especificar las condiciones en las que se evalúa el elemento primario. USMT evalúa los elementos secundarios y, a continuación, combina sus resultados mediante los operadores AND o OR según el parámetro de operación.
Número de repeticiones: Ilimitado dentro de otro <elemento de condiciones> . Limitado a una aparición en <la detección>, <reglas>, <addObjects> y <objectSet>
Elementos primarios:<condiciones>, <detección>, <entorno>, <reglas>, <addObjects> y <objectSet>
Elementos secundarios:<condiciones>, <condición>
Sintaxis:
<conditions operation="AND|OR">
</conditions>
Ajuste | ¿Es obligatorio? | Valor |
---|---|---|
operación | No, default = AND | Define la operación booleana que se realiza en los resultados obtenidos de los elementos secundarios. |
El ejemplo siguiente es del MigApp.xml
archivo :
<environment name="GlobalEnv">
<conditions>
<condition negation="Yes">MigXmlHelper.IsNative64Bit()</condition>
</conditions>
<variable name="HklmWowSoftware">
<text>HKLM\Software</text>
</variable>
</environment>
<contenido>
El <elemento de contenido> se puede usar para especificar una lista de patrones de objeto para obtener un conjunto de objetos del equipo de origen. Se evalúa cada <objectSet> dentro de un <elemento de contenido> . Para cada lista de patrones de objetos resultante, los objetos que coinciden con él se enumeran y el parámetro de filtro filtra su contenido. La matriz de cadenas resultante es la salida del elemento de< contenido>. El script de filtro devuelve una matriz de ubicaciones. El elemento objectSet> primario< puede contener varios elementos de contenido> secundario<.
Número de repeticiones: ilimitado
Elementos primarios:<objectSet>
Elementos secundarios:<objectSet>
Funciones auxiliares: Las siguientes <funciones de contenido> se pueden usar con este elemento:
ExtractSingleFile
,ExtractMultipleFiles
yExtractDirectory
.
Sintaxis:
<content filter="ScriptInvocation">
</content>
Ajuste | ¿Es obligatorio? | Valor |
---|---|---|
filter | Sí | Script seguido de cualquier número de argumentos de cadena separados por una coma y entre paréntesis. Por ejemplo, MyScripts.AScript ("Arg1","Arg2") .Se llama al script para cada objeto enumerado por los conjuntos de objetos de la <regla de inclusión> . El script de filtro devuelve un valor booleano. Si el valor devuelto es TRUE, se migra el objeto. Si es FALSE, no se migra. |
<funciones de contenido>
Las siguientes funciones generan patrones del contenido de un objeto. Se llama a estas funciones para cada objeto que enumera el elemento ObjectSet> primario<.
ExtractSingleFile
Si el valor del Registro es MULTI-SZ, solo se procesa el primer segmento. El patrón devuelto es la ubicación codificada para un archivo que debe existir en el sistema. Si la especificación es correcta en el valor del Registro, pero el archivo no existe, esta función devuelve NULL.
Sintaxis:
ExtractSingleFile(Separators,PathHints)
Ajuste ¿Es obligatorio? Valor Separadores Sí Lista de posibles separadores que podrían seguir la especificación del archivo en este nombre de valor del Registro. Por ejemplo, si el contenido es "C:\Windows\Notepad.exe,-2", el separador es una coma. Se puede especificar NULL. PathHints Sí Una lista de rutas de acceso adicionales, separadas por dos puntos ( ;
), donde la función busca un archivo que coincida con el contenido actual. Por ejemplo, si el contenido es "Notepad.exe" y la ruta de acceso es la variable de entorno %Path% , la función busca Notepad.exe en%windir%
y devuelve "c:\Windows [Notepad.exe]". Se puede especificar NULL.Por ejemplo:
<content filter="MigXmlHelper.ExtractSingleFile(',','%system%')">
y
<content filter="MigXmlHelper.ExtractSingleFile(NULL,'%CSIDL_COMMON_FONTS%')">
ExtractMultipleFiles
La función ExtractMultipleFiles devuelve varios patrones, uno para cada archivo que se encuentra en el contenido del valor del Registro especificado. Si el valor del Registro es MULTI-SZ, el separador MULTI-SZ se considera un separador de forma predeterminada. por lo tanto, para MULTI-SZ, el <argumento Separators> debe ser NULL.
Los patrones devueltos son las ubicaciones codificadas para los archivos que deben existir en el equipo de origen. Si la especificación es correcta en el valor del Registro, pero el archivo no existe, no se incluye en la lista resultante.
Sintaxis:
ExtractMultipleFiles(Separators,PathHints)
Ajuste ¿Es obligatorio? Valor Separadores Sí Lista de posibles separadores que podrían seguir la especificación del archivo en este nombre de valor del Registro. Por ejemplo, si el contenido es "C:\Windows\Notepad.exe,-2", el separador es una coma. Este parámetro debe ser NULL al procesar valores del Registro MULTI-SZ . PathHints Sí Una lista de rutas de acceso adicionales, separadas por dos puntos ( ;
), donde la función busca un archivo que coincida con el contenido actual. Por ejemplo, si el contenido es "Notepad.exe" y la ruta de acceso es la variable de entorno %Path% , la función busca Notepad.exe en%windir%
y devuelve "c:\Windows [Notepad.exe]". Se puede especificar NULL.ExtractDirectory
La función ExtractDirectory devuelve un patrón que es la ubicación codificada para un directorio que debe existir en el equipo de origen. Si la especificación es correcta en el valor del Registro, pero el directorio no existe, esta función devuelve NULL. Si está procesando un valor del Registro que es una SZ MÚLTIPLE, solo se procesa el primer segmento.
Sintaxis:
ExtractDirectory(Separators,LevelsToTrim,PatternSuffix)
Ajuste ¿Es obligatorio? Valor Separadores No Lista de posibles separadores que podrían seguir la especificación del archivo en este nombre de valor del Registro. Por ejemplo, si el contenido es "C:\Windows\Notepad.exe,-2", el separador es una coma. SE debe especificar NULL al procesar valores del Registro MULTI-SZ . LevelsToTrim Sí Número de niveles que se van a eliminar del final de la especificación del directorio. Use esta función para extraer un directorio raíz cuando haya un valor del Registro que apunte dentro de ese directorio raíz en una ubicación conocida. PatternSuffix Sí Patrón que se va a agregar a la especificación del directorio. Por ejemplo, * [*]
.Por ejemplo:
<objectSet> <content filter='MigXmlHelper.ExtractDirectory (NULL, "1")'> <objectSet> <pattern type="Registry">%HklmWowSoftware%\Classes\Software\RealNetworks\Preferences\DT_Common []</pattern> </objectSet> </content> </objectSet>
<contentModify>
El <elemento contentModify> modifica el contenido de un objeto antes de escribir el objeto en el equipo de destino. Para cada <elemento contentModify> , puede haber varios <elementos objectSet> . Este elemento devuelve el nuevo contenido del objeto que se está procesando.
Número de repeticiones: Ilimitado
Elementos primarios:<rules>
Elementos secundarios necesarios:<objectSet>
Funciones auxiliares: las siguientes <funciones contentModify> se pueden usar con este elemento: ConvertToDWORD, ConvertToString, ConvertToBinary, KeepExisting, OffsetValue, SetValueByTable, MergeMultiSzContent y MergeDelimitedContent.
Sintaxis:
<contentModify script="ScriptInvocation">
</contentModify>
Ajuste | ¿Es obligatorio? | Valor |
---|---|---|
Guión | Sí | Script seguido de cualquier número de argumentos de cadena separados por una coma y entre paréntesis. Por ejemplo MyScripts.AScript ("Arg1","Arg2"). Se llama al script para cada objeto enumerado por los conjuntos de objetos de la regla de inclusión. El script de filtro devuelve un valor booleano. Si el valor devuelto es TRUE, se migra el objeto. Si es FALSE, no se migra. |
<contentModify> (funciones)
Las siguientes funciones cambian el contenido de los objetos a medida que se migran. Se llama a estas funciones para cada objeto que enumera el elemento ObjectSet> primario<.
ConvertToDWORD
La función ConvertToDWORD convierte el contenido de los valores del Registro enumerados por el elemento ObjectSet> primario< en un DWORD. Por ejemplo, ConvertToDWORD convierte la cadena
"1"
en DWORD0x00000001
. Si se produce un error en la conversión, se aplica el valor de DefaultValueOnError .Sintaxis:
ConvertToDWORD(DefaultValueOnError)
Ajuste ¿Es obligatorio? Valor DefaultValueOnError No Valor que se escribe en el nombre del valor si se produce un error en la conversión. Se puede especificar NULL y 0
se escribe si se produce un error en la conversión.ConvertToString
La función ConvertToString convierte el contenido de los valores del Registro que coinciden con el elemento ObjectSet> primario< en una cadena. Por ejemplo, convierte DWORD
0x00000001
en la cadena "1". Si se produce un error en la conversión, se aplica el valor de DefaultValueOnError .Sintaxis:
ConvertToString(DefaultValueOnError)
Ajuste ¿Es obligatorio? Valor DefaultValueOnError No Valor que se escribe en el nombre del valor si se produce un error en la conversión. Se puede especificar NULL y 0
se escribe si se produce un error en la conversión.Por ejemplo:
<contentModify script="MigXmlHelper.ConvertToString('1')"> <objectSet> <pattern type="Registry">HKCU\Control Panel\Desktop [ScreenSaveUsePassword]</pattern> </objectSet> </contentModify>
ConvertToBinary
La función ConvertToBinary convierte el contenido de los valores del Registro que coinciden con el elemento ObjectSet> primario< en un tipo binario.
Sintaxis:
ConvertToBinary ()
OffsetValue
La función OffsetValue agrega o resta Value del valor del objeto migrado y, a continuación, escribe el resultado de nuevo en el valor del Registro en el equipo de destino. Por ejemplo, si el objeto migrado es un DWORD con un valor de
14
y el valor es "-2", el valor del Registro estará12
en el equipo de destino.Sintaxis:
OffsetValue(Value)
Ajuste ¿Es obligatorio? Valor Valor Sí Representación de cadena de un valor numérico. Puede ser positivo o negativo. Por ejemplo, OffsetValue(2)
.SetValueByTable
La función SetValueByTable coincide con el valor del equipo de origen con la tabla de origen. Si el valor está allí, se aplica el valor equivalente de la tabla de destino. Si el valor no está allí o si la tabla de destino no tiene ningún valor equivalente, se aplica DefaultValueOnError .
Sintaxis:
SetValueByTable(SourceTable,DestinationTable,DefaultValueOnError)
Ajuste ¿Es obligatorio? Valor SourceTable Sí Lista de valores separados por comas que son posibles para los valores del Registro de origen. DestinationTable No Lista de valores traducidos separados por comas. DefaultValueOnError No Valor que se aplica al equipo de destino si se trata de uno de los valores - El valor del equipo de origen no coincide con SourceTable.
- DestinationTable no tiene ningún valor equivalente.
Si DefaultValueOnError es NULL, el valor no cambia en el equipo de destino.Mantener existente
La función KeepExisting se puede usar cuando hay conflictos en el equipo de destino. Esta función mantiene (no sobrescribe) los atributos especificados para el objeto que se encuentra en el equipo de destino.
Sintaxis:
KeepExisting("OptionString","OptionString","OptionString",…)
Ajuste ¿Es obligatorio? Valor OptionString Sí OptionString puede ser Seguridad, TimeFields o FileAttrib:Letter. Se puede especificar uno de cada tipo de OptionStrings . No especifique varias optionstrings con el mismo valor. Si se especifican varias OptionStrings con el mismo valor, se mantiene la opción más a la derecha de ese tipo. Por ejemplo, no especifique ("FileAttrib:H", "FileAttrib:R") porque solo se evalúa Solo lectura. En su lugar, especifique ("FileAttrib:HR") y los atributos Hidden y Read-only se mantienen en el equipo de destino. - Seguridad: mantiene el descriptor de seguridad del objeto de destino si existe.
- TimeFields: mantiene las marcas de tiempo del objeto de destino. Este parámetro es solo para archivos.
-
FileAttrib:<Carta>: mantiene el valor de atributo del objeto de destino, YA sea ON o OFF, para el conjunto especificado de atributos de archivo. Este parámetro es solo para archivos. Los siguientes no distinguen mayúsculas de minúsculas, pero USMT omitirá los valores que no son válidos, se repiten o si hay un espacio después de FileAttrib:. Se puede especificar cualquier combinación de los atributos siguientes:
- A = Archivo
- C = comprimido
- E = Cifrado
- H = Oculto
- I = No contenido indizado
- O = Sin conexión
- R = Read-Only
- S = Sistema
- T = Temporal
MergeMultiSzContent
La función MergeMultiSzContent combina el contenido MULTI-SZ de los valores del Registro enumerados por el elemento ObjectSet> primario< con el contenido de los valores equivalentes del Registro que ya existen en el equipo de destino.
Instruction
yString
quite o agregue contenido a la red MULTI-SZ resultante. Se quitan los elementos duplicados.Sintaxis:
MergeMultiSzContent (Instruction,String,Instruction,String,…)
Ajuste ¿Es obligatorio? Valor Instrucción Sí Puede ser uno de los siguientes valores: - Agregar. Agrega la cadena correspondiente a la red MULTI-SZ resultante si aún no está allí.
- Quitar. Quita la cadena correspondiente de la SZ MÚLTIPLE resultante.
Cadena Sí Cadena que se va a agregar o quitar. MergeDelimitedContent
La función MergeDelimitedContent combina el contenido de los valores del Registro enumerados por el elemento ObjectSet> primario< con el contenido de los valores equivalentes del Registro que ya existen en el equipo de destino. El contenido se considera una lista de elementos separados por uno de los caracteres del parámetro Delimiters. Se quitan los elementos duplicados.
Sintaxis:
MergeDelimitedContent(Delimiters,Instruction,String,…)
Ajuste ¿Es obligatorio? Valor Delimitadores Sí Carácter único que se usa para separar el contenido del objeto que se está procesando. El contenido se considera una lista de elementos separados por los delimitadores.
Por ejemplo,"."
separa la cadena en función de un punto.Instrucción Sí Puede ser uno de los siguientes valores: - Agregar: agrega string a la red MULTI-SZ resultante si aún no está allí.
- Quitar: quita string de la SZ MÚLTIPLE resultante.
Cadena Sí Cadena que se va a agregar o quitar.
<descripción>
El <elemento description> define una descripción para el componente, pero no afecta a la migración.
Número de repeticiones: cero o uno
Elementos primarios:<componente>
Elementos secundarios: none
Sintaxis:
<description>ComponentDescription</description>
Ajuste | ¿Es obligatorio? | Valor |
---|---|---|
ComponentDescription | Sí | Descripción del componente. |
En el ejemplo de código siguiente se muestra cómo el <elemento description> define la descripción "Mi componente personalizado":
<description>My custom component<description>
<destinationCleanup>
El <elemento destinationCleanup> elimina objetos, como archivos y claves del Registro, del equipo de destino antes de aplicar los objetos desde el equipo de origen. Este elemento solo se evalúa cuando se ejecuta la herramienta LoadState en el equipo de destino. Es decir, la herramienta ScanState omite este elemento.
Importante
Use esta opción con extrema precaución porque eliminará objetos del equipo de destino.
Para cada <elemento destinationCleanup> , puede haber varios <elementos objectSet> . Un uso común para este elemento es si falta una clave del Registro en el equipo de origen, pero el componente todavía debe migrarse. En este caso, todas las claves del Registro del componente se pueden eliminar antes de migrar las claves del Registro de origen. La eliminación de todas las claves del Registro del componente garantiza que, si falta una clave en el equipo de origen, también faltará en el equipo de destino.
Número de repeticiones: Ilimitado
Elementos primarios:<rules>
Elementos secundarios:<objectSet> (El equipo de destino elimina todos los elementos secundarios).
Sintaxis:
<destinationCleanup filter=ScriptInvocation>
</destinationCleanup>
Ajuste | ¿Es obligatorio? | Valor |
---|---|---|
filter | Sí | Script seguido de cualquier número de argumentos de cadena separados por una coma y entre paréntesis. Por ejemplo, MyScripts.AScript ("Arg1","Arg2") .Se llama al script para cada objeto enumerado por los conjuntos de objetos de la regla de inclusión. El script de filtro devuelve un valor booleano. Si el valor devuelto es TRUE, se migra el objeto. Si es FALSE, no se migra. |
Por ejemplo:
<destinationCleanup>
<objectSet>
<pattern type="Registry">HKCU\Software\Lotus\123\99.0\DDE Preferences\* [*]</pattern>
<pattern type="Registry">HKCU\Software\Lotus\123\99.0\Find Preferences\* [*]</pattern>
</objectSet>
</destinationCleanup>
<detectar>
Aunque el <elemento de detección> sigue siendo compatible, Microsoft recomienda dejar de usar el <elemento de detección> porque podría estar en desuso en futuras versiones de USMT. Si el <elemento de detección> está en desuso, requeriría una reescritura de los scripts que usen el <elemento de detección> . En su lugar, Microsoft recomienda usar el elemento de< detección>. El <elemento de detección> permite instrucciones booleanas complejas más claramente formuladas
El <elemento detect> se puede usar para determinar si el componente está presente en un sistema. Si todos los elementos secundarios <de detección> dentro de un <elemento de detección> se resuelven en TRUE, el <elemento de detección> se resuelve en TRUE. Si algún elemento de detección> secundario< se resuelve en FALSE, su elemento primario <de detección> se resuelve en FALSE. Si no hay ninguna <sección de elemento de detección> , USMT supone que el componente está presente.
Para cada <elemento de detección> puede haber varios elementos objectSet> o<condición> secundarios<, que están unidos lógicamente por un operador OR. Si al menos un <elemento condition> o <objectSet> se evalúa como TRUE, el <elemento de detección> se evalúa como TRUE.
Número de repeticiones: ilimitado
Elementos primarios:<detects>, <namedElements>
Elementos secundarios necesarios:<condición>
Elementos secundarios opcionales:<objectSet>
Sintaxis:
<detect name="ID" context="User|System|UserAndSystem">
</detect>
Ajuste | ¿Es obligatorio? | Valor |
---|---|---|
name | Sí, cuando <detectar> es un elemento secundario para <namedElements> No, cuando <detectar> es un elemento secundario que <se detecta> |
Cuando se especifica id ., no se procesan los elementos secundarios. En su lugar, se procesan los demás <elementos de detección> con el mismo nombre que se declaran dentro del <elemento namedElements> . |
contexto | No (valor predeterminado = UserAndSystem) |
Define el ámbito de este parámetro, que es si se va a procesar este componente en el contexto del usuario específico, en todo el sistema operativo o en ambos. El mayor ámbito posible lo establece el elemento de componente. Por ejemplo, si un <elemento de componente> tiene un contexto de User y un <elemento rules> tenía un contexto de UserAndSystem, el <elemento rules> actuaría como si tuviera un contexto de User. Si el <elemento rules> tuviera un contexto de System, actuaría como si el <elemento rules> no estuviera allí.
|
Para obtener ejemplos, consulte los ejemplos de detección<>.
<Detecta>
Aunque el <elemento detects> sigue siendo compatible, Microsoft recomienda dejar de usar el <elemento detects porque podría estar en desuso> en futuras versiones de USMT. Si el <elemento detects está en desuso> , requeriría una reescritura de los scripts que usen el <elemento detects> . En su lugar, Microsoft recomienda usar el <elemento de detección> si el elemento primario es <role> o <namedElements>, o usar el <elemento conditions> si el elemento primario es <rules>. El <elemento de detección> permite instrucciones booleanas complejas más claramente formuladas y el <elemento conditions> permite la formulación de instrucciones booleanas complejas.
El <elemento detects> es un contenedor para uno o varios <elementos de detección> . Si todos los elementos secundarios detectan<> elementos dentro de un <elemento que se resuelve en TRUE, detecta que se resuelve en>TRUE.>< Si alguno de los elementos de detección> secundarios<>se resuelve en FALSE,< detecta que se resuelve en FALSE. Para evitar que el <elemento detecte> que se va a escribir dentro de un componente, cree el <elemento detects> en el <elemento namedElements> y, a continuación, haga referencia a él. Si no hay ninguna <sección de elemento de detección> , USMT supone que el componente está presente. El operador OR une los resultados de cada <elemento de> detección para formar la regla que se usa para detectar el elemento primario.
Sintaxis:
<detects name="ID" context="User|System|UserAndSystem">
</detects>
Número de repeticiones: Ilimitado.
Elementos primarios:<role>, <rules>, <namedElements>
Elementos secundarios necesarios:<detect>
Ajuste | ¿Es obligatorio? | Valor |
---|---|---|
name | Sí, cuando <detecta> es un elemento secundario para <namedElements> No, cuando <detecta> que es un elemento secundario para el< rol> o <las reglas> |
Cuando se especifica id., no se procesan elementos de detección> secundarios<. En su lugar, cualquier otro <detecta elementos> con el mismo nombre que se declaran dentro del <elemento namedElements> que se procesan. |
contexto | No (valor predeterminado = UserAndSystem) |
Define el ámbito de este parámetro: si se va a procesar este componente en el contexto del usuario específico, en todo el sistema operativo o en ambos. El mayor ámbito posible lo establece el elemento> de< componente. Por ejemplo, si un <elemento de componente> tiene un contexto de User y un <elemento rules> tenía un contexto de UserAndSystem, el <elemento rules> actuaría como si tuviera un contexto de User. Si el <elemento rules> tuviera un contexto de System, actuaría como si el <elemento rules> no estuviera allí.
El parámetro de contexto se omite para <detectar elementos> que están dentro de <elementos de reglas> . |
El ejemplo siguiente es del MigApp.xml
archivo .
<detects>
<detect>
<condition>MigXmlHelper.DoesFileVersionMatch("%Lotus123InstPath%\123w.exe","ProductVersion","9.*")</condition>
</detect>
<detect>
<condition>MigXmlHelper.DoesFileVersionMatch("%SmartSuiteInstPath%\smartctr.exe","ProductVersion","99.*")</condition>
</detect>
</detects>
<detección>
El <elemento de detección> es un contenedor para un <elemento de condiciones> . El resultado de los elementos de condición> secundarios<, situados debajo del <elemento conditions>, determina el resultado de este elemento. Por ejemplo, si todos los elementos de condiciones secundarias<> dentro del <elemento de detección> se resuelven en TRUE, el <elemento de detección> se resuelve en TRUE. Si alguno de los elementos de condiciones secundarias<> se resuelve en FALSE, el <elemento de detección> se resuelve en FALSE.
Además, el operador OR une los resultados de cada <sección de detección> dentro del <elemento role> para formar la regla de detección del elemento primario. Es decir, si una de las <secciones de detección> se resuelve en TRUE, se procesa el <elemento de rol>. De lo contrario, el <elemento role> no se procesa.
Use el <elemento de detección> en el <elemento namedElements> para no escribir en un componente. A continuación, incluya una sección de detección> coincidente< en el <elemento role> para controlar si se migra el componente. Si no hay una <sección de detección> para un componente, USMT supone que el componente está presente.
Número de repeticiones: Ilimitado.
Elementos primarios:<role>, <namedElements>
Elementos secundarios:<condiciones>
Sintaxis:
<detection name="ID" context="User|System|UserAndSystem">
</detection>
Ajuste | ¿Es obligatorio? | Valor |
---|---|---|
name |
|
Si se declara, se omite el <contenido del elemento de detección> y se evalúa el <contenido del elemento de detección> con el mismo nombre que se declara en el <elemento namedElements> . |
contexto | No, default = UserAndSystem | Define el ámbito de este parámetro: si se va a procesar este componente en el contexto del usuario específico, en todo el sistema operativo o en ambos.
|
Por ejemplo:
<detection name="AdobePhotoshopCS">
<conditions>
<condition>MigXmlHelper.DoesObjectExist("Registry","HKCU\Software\Adobe\Photoshop\8.0")</condition>
<condition>MigXmlHelper.DoesFileVersionMatch("%PhotoshopSuite8Path%\Photoshop.exe","FileVersion","8.*")</condition>
</conditions>
</detection>
y
<role role="Settings">
<detection>
<conditions>
<condition>MigXmlHelper.DoesFileVersionMatch("%QuickTime5Exe%","ProductVersion","QuickTime 5.*")</condition>
<condition>MigXmlHelper.DoesFileVersionMatch("%QuickTime5Exe%","ProductVersion","QuickTime 6.*")</condition>
</conditions>
</detection>
<displayName>
El <elemento displayName> es un campo obligatorio dentro de cada <elemento de componente> .
Número de repeticiones: una vez para cada componente
Elementos primarios:<componente>
Elementos secundarios: none
Sintaxis:
<displayName _locID="ID">ComponentName</displayName>
Ajuste | ¿Es obligatorio? | Valor |
---|---|---|
locID | No | Este parámetro es para uso interno de USMT. No use este parámetro. |
ComponentName | Sí | Nombre del componente. |
Por ejemplo:
<displayName>Command Prompt settings</displayName>
<medio ambiente>
El <elemento environment> es un contenedor de <elementos variables> en el que se pueden definir variables para su uso en un archivo .xml . Todas las variables de entorno definidas de esta manera son privadas. Es decir, solo están disponibles para sus componentes secundarios y el componente en el que se definieron. Para ver dos escenarios de ejemplo, vea Ejemplos.
Número de repeticiones: ilimitado
Elementos primarios:<role>, <component>, <namedElements>
Elementos secundarios necesarios:<variable>
Elementos secundarios opcionales:<condiciones>
Sintaxis:
<environment name="ID" context="User|System|UserAndSystem">
</environment>
Ajuste | ¿Es obligatorio? | Valor |
---|---|---|
name | Sí, cuando <el entorno> es un elemento secundario de <namedElements> No, cuando <el entorno> es un elemento secundario del <rol> o <componente> |
Cuando se declara como elemento secundario de los <elementos role> o <component>, si se declara ID, USMT omite el contenido del elemento environment<> y se procesa el<> contenido del elemento environment con el mismo nombre declarado en el <elemento namedElements>. |
contexto | No (valor predeterminado = UserAndSystem) |
Define el ámbito de este parámetro: si se va a procesar este componente en el contexto del usuario específico, en todo el sistema operativo o en ambos. El mayor ámbito posible lo establece el elemento de< componente>. Por ejemplo, si un <elemento de componente> tiene un contexto de User y un <elemento rules> tenía un contexto de UserAndSystem, el <elemento rules> actuaría como si tuviera un contexto de User. Si el <elemento rules> tuviera un contexto de System, actuaría como si <las reglas> no estuvieran allí.
|
Ejemplos
Escenario de ejemplo 1
En este escenario, genere la ubicación de los objetos en tiempo de ejecución en función de la configuración del equipo de destino. Por ejemplo, si una aplicación escribe datos en el directorio donde está instalada la aplicación y los usuarios pueden instalar la aplicación en cualquier lugar del equipo. Si la aplicación escribe un valor hklm\software\companyname\install [path\]
del Registro y, a continuación, actualiza este valor con la ubicación donde está instalada la aplicación, la única manera de migrar correctamente los datos necesarios es definir una variable de entorno. Por ejemplo:
<environment>
<variable name="INSTALLPATH">
<script>MigXmlHelper.GetStringContent("Registry","\software\companyname\install [path]")</script>
</variable>
</environment>
A continuación, se puede usar una regla de inclusión como se indica a continuación. Cualquiera de las funciones de< script> se puede usar para realizar tareas similares.
<include>
<objectSet>
<pattern type="File">%INSTALLPATH%\ [*.xyz]</pattern>
</objectSet>
</include>
En segundo lugar, los valores del Registro se pueden filtrar para contener los datos necesarios. En el ejemplo siguiente se extrae la primera cadena (antes del separador ",
") en el valor del Registro Hklm\software\companyname\application\ [Path\]
.
<environment>
<variable name="APPPATH">
<objectSet>
<content filter='MigXmlHelper.ExtractDirectory (",", "1")'>
<objectSet>
<pattern type="Registry">Hklm\software\companyname\application\ [Path]</pattern>
</objectSet>
</content>
</objectSet>
</variable>
</environment>
Escenario de ejemplo 2
En este escenario, es necesario migrar cinco archivos denominados File1.txt
, File2.txt
, etc., desde %SYSTEMDRIVE%\data\userdata\dir1\dir2\
. Para migrar estos archivos, la siguiente <regla de inclusión> debe estar en un archivo .xml :
<include>
<objectSet>
<pattern type="File">%SYSTEMDRIVE%\data\userdata\dir1\dir2 [File1.txt]</pattern>
<pattern type="File">%SYSTEMDRIVE%\data\userdata\dir1\dir2 [File2.txt]</pattern>
<pattern type="File">%SYSTEMDRIVE%\data\userdata\dir1\dir2 [File3.txt]</pattern>
<pattern type="File">%SYSTEMDRIVE%\data\userdata\dir1\dir2 [File4.txt]</pattern>
<pattern type="File">%SYSTEMDRIVE%\data\userdata\dir1\dir2 [File5.txt]</pattern>
</objectSet>
</include>
En lugar de escribir la ruta de acceso cinco veces, cree una variable para la ubicación de la siguiente manera:
<environment>
<variable name="DATAPATH">
<text>%SYSTEMDRIVE%\data\userdata\dir1\dir2 </text>
</variable>
</environment>
A continuación, especifique la variable en una regla de inclusión<> como se indica a continuación:
<include>
<objectSet>
<pattern type="File">%DATAPATH% [File1.txt]</pattern>
<pattern type="File">%DATAPATH% [File2.txt]</pattern>
<pattern type="File">%DATAPATH% [File3.txt]</pattern>
<pattern type="File">%DATAPATH% [File4.txt]</pattern>
<pattern type="File">%DATAPATH% [File5.txt]</pattern>
</objectSet>
</include>
<excluye>
El <elemento exclude> determina qué objetos no se migran, a menos que haya un elemento include> más específico< que migre un objeto. Si hay un <elemento include> y <exclude> para el mismo objeto, se incluye el objeto . Para cada <elemento exclude>, puede haber varios elementos objectSet> secundarios<.
Número de repeticiones: Ilimitado
Elementos primarios:<rules>
Elementos secundarios:<objectSet>
Funciones auxiliares: Las siguientes <funciones de filtro de exclusión> se pueden usar con este elemento:
CompareStringContent
,IgnoreIrrelevantLinks
,AnswerNo
,NeverRestore
ySameRegContent
.
Sintaxis:
<exclude filter="ScriptInvocation">
</exclude>
Ajuste | ¿Es obligatorio? | Valor |
---|---|---|
filter | No (valor predeterminado = No) |
Script seguido de cualquier número de argumentos de cadena separados por una coma y entre paréntesis. Por ejemplo, MyScripts.AScript ("Arg1","Arg2") .Se llama al script para cada objeto enumerado por los conjuntos de objetos de la regla de inclusión. El script de filtro devuelve un valor booleano. Si el valor devuelto es TRUE, se migra el objeto. Si es FALSE, no se migra. |
Por ejemplo, desde el MigUser.xml
archivo:
<exclude>
<objectSet>
<pattern type="File">%CSIDL_MYMUSIC%\* [*]</pattern>
<pattern type="File">%CSIDL_MYPICTURES%\* [*]</pattern>
<pattern type="File">%CSIDL_MYVIDEO%\* [*]</pattern>
</objectSet>
</exclude>
<excludeAttributes>
El <elemento excludeAttributes> se puede usar para determinar qué parámetros asociados a un objeto no se migran. Si hay conflictos entre los <elementos includeAttributes> y <excludeAttributes> , el patrón más específico determina los patrones que no se migran. Si un objeto no tiene un <elemento includeAttributes> o <excludeAttributes> , se migran todos sus parámetros.
Número de repeticiones: Ilimitado
Elementos primarios:<rules>
Elementos secundarios:<objectSet>
Sintaxis:
<excludeAttributes attributes="Security|TimeFields|Security,TimeFields">
</excludeAttributes>
Ajuste | ¿Es obligatorio? | Valor |
---|---|---|
Atributos | Sí | Especifica los atributos que se van a excluir. Se puede especificar una de las siguientes opciones o ambas. Si especifica ambos, deben separarse entre comillas. Por ejemplo, "Security","TimeFields" :
|
Por ejemplo:
<migration urlid="http://www.microsoft.com/migration/1.0/migxmlext/miguser">
<!-- This component migrates the files in the Video folder -->
<component type="System" context="System">
<displayName>System Data</displayName>
<role role="Data">
<rules>
<!-- Include all of the text files, which are immediately in the drive where the operating system is installed -->
<include>
<objectSet>
<pattern type="File">%SYSTEMDRIVE%\ [*.txt]</pattern>
</objectSet>
</include>
<!-- Exclude the time stamps from the text file starting with the letter a -->
<excludeAttributes attributes="TimeFields">
<objectSet>
<pattern type="File">%SYSTEMDRIVE%\ [a*.txt]</pattern>
</objectSet>
</excludeAttributes>
<!-- include the time stamps from the text file aa.txt -->
<includeAttributes attributes="TimeFields">
<objectSet>
<pattern type="File">%SYSTEMDRIVE%\ [aa.txt]</pattern>
</objectSet>
</includeAttributes>
<!-- Logoff the user after LoadState successfully completed. -->
<externalProcess when="post-apply">
<commandLine>
logoff
</commandLine>
</externalProcess>
</rules>
</role>
<!-- Migrate
all doc files from the system
all power point files
all visio design files
all my c++ program files -->
<extensions>
<extension>DOC</extension>
<extension>PPT</extension>
<extension>VXD</extension>
<extension>PST</extension>
<extension>CPP</extension>
</extensions>
</component>
</migration>
<Extensiones>
El <elemento extensions> es un contenedor para uno o varios <elementos de extensión> .
Número de repeticiones: cero o uno
Elementos primarios:<componente>
Elementos secundarios necesarios:<extensión>
Sintaxis:
<extensions>
</extensions>
<extensión>
El <elemento de extensión> se puede usar para especificar documentos de una extensión específica.
Número de repeticiones: ilimitado
Elementos primarios:<extensiones>
Elementos secundarios: none
Sintaxis:
<extension>FilenameExtension</extension>
Ajuste | ¿Es obligatorio? | Valor |
---|---|---|
FilenameExtension | Sí | Extensión de nombre de archivo. |
Por ejemplo, para migrar todos los archivos *.doc del equipo de origen, especifique el código siguiente en el <elemento component> :
<extensions>
<extension>doc</extension>
<extensions>
es lo mismo que especificar el código siguiente debajo del <elemento rules> :
<include>
<objectSet>
<script>MigXmlHelper.GenerateDrivePatterns ("* [*.doc]", "Fixed")</script>
</objectSet>
</include>
Para obtener otro ejemplo de cómo usar el <elemento de extensión>, vea el ejemplo de< excludeAttributes>.
<externalProcess>
El <elemento externalProcess> se puede usar para ejecutar una línea de comandos durante el proceso de migración. Por ejemplo, es posible que una ejecución de un comando tenga que ejecutarse una vez completado el proceso LoadState .
Número de repeticiones: Ilimitado
Elementos primarios:<rules>
Elementos secundarios necesarios:<commandLine>
Sintaxis:
<externalProcess when="pre-scan|scan-success|post-scan|pre-apply|apply-success|post-apply">
</externalProcess>
Ajuste | ¿Es obligatorio? | Valor |
---|---|---|
cuando | Sí | Indica cuándo se debe ejecutar la línea de comandos. Este valor puede ser uno de los siguientes valores:
|
Para obtener un ejemplo de cómo usar el <elemento externalProcess>, vea el ejemplo de< excludeAttributes>.
<icon>
Este elemento es un elemento USMT interno. No use este elemento.
<include>
El <elemento include> determina qué migrar, a menos que haya una regla de exclusión> más específica<. Se puede especificar un script para que sea más específico para ampliar la definición de lo que quiere recopilar. Para cada <elemento include> , puede haber varios <elementos objectSet> .
Número de repeticiones: Ilimitado
Elementos primarios:<rules>
Elemento secundario obligatorio:<objectSet>
Funciones auxiliares: Las siguientes <funciones de filtro de inclusión> se pueden usar con este elemento:
CompareStringContent
,IgnoreIrrelevantLinks
,AnswerNo
yNeverRestore
.
Sintaxis:
<include filter="ScriptInvocation">
</include>
Ajuste | ¿Es obligatorio? | Valor |
---|---|---|
filter | No. Si no se especifica este parámetro, se procesan todos los patrones que se encuentran dentro del elemento objectSet> secundario<. |
Script seguido de cualquier número de argumentos de cadena separados por una coma y entre paréntesis. Por ejemplo, MyScripts.AScript ("Arg1","Arg2") .Se llama al script para cada objeto enumerado por los conjuntos de objetos de la <regla de inclusión> . El script de filtro devuelve un valor booleano. Si el valor devuelto es TRUE, se migra el objeto. Si es FALSE, no se migra. |
El ejemplo siguiente es del MigUser.xml
archivo :
<component type="Documents" context="User">
<displayName _locID="miguser.myvideo">My Video</displayName>
<paths>
<path type="File">%CSIDL_MYVIDEO%</path>
</paths>
<role role="Data">
<detects>
<detect>
<condition>MigXmlHelper.DoesObjectExist("File","%CSIDL_MYVIDEO%")</condition>
</detect>
</detects>
<rules>
<include filter='MigXmlHelper.IgnoreIrrelevantLinks()'>
<objectSet>
<pattern type="File">%CSIDL_MYVIDEO%\* [*]</pattern>
</objectSet>
</include>
<merge script="MigXmlHelper.DestinationPriority()">
<objectSet>
<pattern type="File">%CSIDL_MYVIDEO% [desktop.ini]</pattern>
</objectSet>
</merge>
</rules>
</role>
</component>
<incluir> y <excluir> funciones de filtro
Las siguientes funciones devuelven un valor booleano. Se pueden usar para migrar determinados objetos en función de cuándo se cumplen ciertas condiciones.
AnswerNo
Este filtro siempre devuelve FALSE.
Sintaxis:
AnswerNo ()
CompareStringContent
Sintaxis:
CompareStringContent("StringContent","CompareType")
Ajuste ¿Es obligatorio? Valor StringContent Sí Cadena con la que se va a comprobar. CompareType Sí Cadena. Use uno de los valores siguientes: -
Igual (no distingue mayúsculas de minúsculas). La función devuelve TRUE si la representación de cadena del objeto actual que procesa el motor de migración es idéntica a
StringContent
. -
NULLo cualquier otro valor. La función devuelve TRUE si la representación de cadena del objeto actual que procesa el motor de migración no coincide con
StringContent
.
-
Igual (no distingue mayúsculas de minúsculas). La función devuelve TRUE si la representación de cadena del objeto actual que procesa el motor de migración es idéntica a
IgnoreIrrelevantLinks
Este filtro muestra los archivos .lnk que apuntan a un objeto que no es válido en el equipo de destino. El filtrado tiene lugar en el equipo de destino, por lo que todos los archivos .lnk se guardan en el almacén durante ScanState. A continuación, se filtran cuando se ejecuta la herramienta LoadState .
Sintaxis:
IgnoreIrrelevantLinks ()
Por ejemplo:
<include filter='MigXmlHelper.IgnoreIrrelevantLinks()'> <objectSet> <pattern type="File">%CSIDL_COMMON_VIDEO%\* [*]</pattern> </objectSet> </include>
NeverRestore
Esta función se puede usar para recopilar los objetos especificados del equipo de origen, pero luego no migrar los objetos al equipo de destino. Cuando se ejecuta con la herramienta ScanState , esta función se evalúa como TRUE. Cuando se ejecuta con la herramienta LoadState , esta función se evalúa como FALSE. Esta función puede usarse para comprobar el valor de un objeto en el equipo de destino, pero no hay ninguna intención de migrar el objeto al destino.
Sintaxis:
NeverRestore()
En el ejemplo siguiente, HKCU\Panel de control\International [Locale] se incluye en el almacén, pero no se migra al equipo de destino:
<include filter="MigXmlHelper.NeverRestore()"> <objectSet> <pattern type="Registry">HKCU\Control Panel\International [Locale]</pattern> </objectSet> </include>
<includeAttributes>
El <elemento includeAttributes> se puede usar para determinar si determinados parámetros asociados a un objeto se migran junto con el propio objeto. Si hay conflictos entre los <elementos includeAttributes> y <excludeAttributes> , el patrón más específico determina qué parámetros se migran. Si un objeto no tiene un <elemento includeAttributes> o <excludeAttributes> , se migran todos sus parámetros.
Número de repeticiones: ilimitado
Elementos primarios:<rules>
Elementos secundarios:<objectSet>
Sintaxis:
<includeAttributes attributes="Security|TimeFields|Security,TimeFields">
</includeAttributes>
Ajuste | ¿Es obligatorio? | Valor |
---|---|---|
Atributos | Sí | Especifica los atributos que se van a incluir con un objeto migrado. Se puede especificar una de las siguientes opciones o ambas. Si especifica ambos, deben separarse entre comillas. Por ejemplo, "Security","TimeFields" :
|
Para obtener un ejemplo de cómo usar el <elemento includeAttributes>, vea el ejemplo de< excludeAttributes>.
<biblioteca>
Este elemento es un elemento USMT interno. No use este elemento.
<ubicación>
El <elemento location> define la ubicación del elemento object<>.
Número de repeticiones: una vez para cada <objeto>
Elementos primarios:<object>
Elementos secundarios:<script>
Sintaxis:
<location type="typeID">ObjectLocation</location>
Ajuste | ¿Es obligatorio? | Valor |
---|---|---|
tipo | Sí | typeID puede ser Registro o Archivo. |
ObjectLocation | Sí | Ubicación del objeto. |
El ejemplo siguiente es del MigApp.xml
archivo :
<addObjects>
<object>
<location type="Registry">%HklmWowSoftware%\Microsoft\Office\16.0\Common\Migration\Office [UpgradeVersion]</location>
<attributes>DWORD</attributes>
<bytes>0B000000</bytes>
</object>
<object>
<location type="Registry">%HklmWowSoftware%\Microsoft\Office\16.0\Common\Migration\Office [Lang]</location>
<attributes>DWORD</attributes>
<bytes>00000000</bytes>
</object>
</addObjects>
<locationModify>
El <elemento locationModify> se puede usar para cambiar la ubicación y el nombre de un objeto antes de migrar el objeto al equipo de destino. El <elemento locationModify> solo se procesa cuando la herramienta LoadState se ejecuta en el equipo de destino. En otras palabras, la herramienta ScanState omite este elemento. El <elemento locationModify> crea la carpeta adecuada en el equipo de destino si aún no existe.
Número de repeticiones: Ilimitado
Elementos primarios:<rules>
Elemento secundario obligatorio:<objectSet>
Funciones auxiliares: Las siguientes <funciones locationModify> se pueden usar con este elemento:
ExactMove
,RelativeMove
yMove
.
Sintaxis:
<locationModify script="ScriptInvocation">
</locationModify>
Ajuste | ¿Es obligatorio? | Valor |
---|---|---|
Guión | Sí | Script seguido de cualquier número de argumentos de cadena separados por una coma y entre paréntesis. Por ejemplo, MyScripts.AScript ("Arg1","Arg2") .Se llama al script para cada objeto enumerado por los conjuntos de objetos de la regla de inclusión. El script de filtro devuelve un valor booleano. Si el valor devuelto es TRUE, se migra el objeto. Si es FALSE, no se migra. |
El ejemplo siguiente es del MigApp.xml
archivo :
<locationModify script="MigXmlHelper.RelativeMove('%CSIDL_APPDATA%\Microsoft\Office','%CSIDL_APPDATA%')">
<objectSet>
<pattern type="File">%CSIDL_APPDATA%\Microsoft\Office\ [Access10.pip]</pattern>
</objectSet>
</locationModify>
<locationModify> (funciones)
Las siguientes funciones cambian la ubicación de los objetos a medida que se migran cuando se usa el <elemento locationModify> . Se llama a estas funciones para cada objeto que enumera el elemento objectSet> primario<. El <elemento locationModify> crea la carpeta adecuada en el equipo de destino si aún no existe.
ExactMove
La función ExactMove mueve todos los objetos que coinciden con el elemento objectSet> primario< al objeto ObjectEncodedLocation especificado. Esta función se puede usar para mover un único archivo a una ubicación diferente en el equipo de destino. Si la ubicación de destino es un nodo, todos los objetos de origen coincidentes se escriben en el nodo sin subdirectorios. Si la ubicación de destino es una hoja, el motor de migración migra todos los objetos de origen coincidentes a la misma ubicación. Si se produce una colisión, se aplican los algoritmos de colisión normales.
Sintaxis:
ExactMove(ObjectEncodedLocation)
Ajuste ¿Es obligatorio? Valor ObjectEncodedLocation Sí Ubicación de destino de todos los objetos de origen. Por ejemplo:
<locationModify script="MigXmlHelper.ExactMove('HKCU\Keyboard Layout\Toggle [HotKey]')"> <objectSet> <pattern type="Registry">HKCU\Keyboard Layout\Toggle []</pattern> </objectSet> </locationModify>
Mover
La función Move mueve objetos a una ubicación diferente en el equipo de destino. Además, esta función crea subdirectorios que estaban por encima del CSIDL más largo en el nombre del objeto de origen.
Sintaxis:
Move(DestinationRoot)
Ajuste ¿Es obligatorio? Valor DestinationRoot Sí Ubicación donde se mueven los objetos de origen. Si es necesario, esta función crea los subdirectorios que estaban por encima del CSIDL más largo en el nombre del objeto de origen. RelativeMove
La función RelativeMove se puede usar para recopilar y mover datos. Las variables de entorno se pueden usar en las raíces de origen y destino, pero pueden definirse de forma diferente en los equipos de origen y de destino.
Sintaxis:
RelativeMove(SourceRoot,DestinationRoot)
Ajuste ¿Es obligatorio? Valor SourceRoot Sí Ubicación desde la que se mueven los objetos. No se mueven los objetos de origen enumerados por el elemento objectSet> primario< que no están en esta ubicación. DestinationRoot Sí Ubicación a la que se mueven los objetos de origen en el equipo de destino. Si es necesario, esta función crea los subdirectorios que estaban por encima de SourceRoot.
Por ejemplo:
<include>
<objectSet>
<pattern type="File">%CSIDL_COMMON_FAVORITES%\* [*]</pattern>
<objectSet>
</include>
<locationModify script="MigXmlHelper.RelativeMove('%CSIDL_COMMON_FAVORITES%','%CSIDL_COMMON_FAVORITES%')">
<objectSet>
<pattern type="File">%CSIDL_COMMON_FAVORITES%\* [*]</pattern>
</objectSet>
</locationModify>
<_locDefinition>
Este elemento es un elemento USMT interno. No use este elemento.
<fabricante>
El <elemento manufacturer> define el fabricante del componente, pero no afecta a la migración.
Número de repeticiones: cero o uno
Elementos primarios:<componente>
Elementos secundarios: none
Sintaxis:
<manufacturer>Name</manufacturer>
Ajuste | ¿Es obligatorio? | Valor |
---|---|---|
Nombre | Sí | Nombre del fabricante del componente. |
<fusionar>
El <elemento merge> determina lo que ocurre cuando se produce una colisión. Una colisión se produce cuando un objeto que se migra ya está presente en el equipo de destino. Si no se especifica este elemento, el comportamiento predeterminado del registro es que el objeto de origen sobrescriba el objeto de destino. El comportamiento predeterminado de los archivos es que se cambie el nombre del archivo de origen a OriginalFileName(1).OriginalExtension
. Este elemento especifica solo lo que se debe hacer cuando se produce una colisión. No incluye objetos. Por lo tanto, para que los objetos se migren, <se deben especificar reglas de inclusión> junto con el <elemento merge> . Cuando se procesa un objeto y se detecta una colisión, USMT selecciona la regla de combinación más específica. A continuación, aplica la regla para resolver el conflicto. Por ejemplo, si una <regla de combinación> se establece en <sourcePriority> y una <regla de combinación> se establece <en destinationPriority>, USMT usaría la <regla destinationPriority> porque es la más específica.C:\subfolder\* [*]
C:\* [*]
Para obtener un ejemplo de este elemento, vea Conflictos y prioridad.
Número de repeticiones: Ilimitado
Elementos primarios:<rules>
Elemento secundario obligatorio:<objectSet>
Funciones auxiliares: Las siguientes <funciones de combinación> se pueden usar con este elemento:
SourcePriority
,DestinationPriority
, ,FindFilePlaceByPattern
LeafPattern
,NewestVersion
,HigherValue()
yLowerValue()
.
Sintaxis:
<merge script="ScriptInvocation">
</merge>
Ajuste | ¿Es obligatorio? | Valor |
---|---|---|
Guión | Sí | Script seguido de cualquier número de argumentos de cadena separados por una coma y entre paréntesis. Por ejemplo, MyScripts.AScript ("Arg1","Arg2") .Se llama al script para cada objeto enumerado por los conjuntos de objetos de la <regla de inclusión> . El script de filtro devuelve un valor booleano. Si el valor devuelto es TRUE, se migra el objeto. Si es FALSE, no se migra. |
El ejemplo siguiente es del MigUser.xml
archivo :
<rules>
<include filter='MigXmlHelper.IgnoreIrrelevantLinks()'>
<objectSet>
<pattern type="File">%CSIDL_MYVIDEO%\* [*]</pattern>
</objectSet>
</include>
<merge script="MigXmlHelper.DestinationPriority()">
<objectSet>
<pattern type="File">%CSIDL_MYVIDEO% [desktop.ini]</pattern>
</objectSet>
</merge>
</rules>
<funciones de combinación>
Estas funciones controlan cómo se resuelven las colisiones.
DestinationPriority
Especifica que se mantenga el objeto que se encuentra en el equipo de destino y no se migre el objeto desde el equipo de origen.
Por ejemplo:
<merge script="MigXmlHelper.DestinationPriority()"> <objectSet> <pattern type="Registry">HKCU\Software\Microsoft\Office\16.0\PhotoDraw\ [MyPictures]</pattern> <pattern type="Registry">HKCU\Software\Microsoft\Office\16.0\PhotoDraw\Settings\ [PicturesPath]</pattern> <pattern type="Registry">HKCU\Software\Microsoft\Office\16.0\PhotoDraw\Settings\ [AdditionalPlugInPath]</pattern> </objectSet> </merge>
FindFilePlaceByPattern
La función FindFilePlaceByPattern guarda los archivos con un contador de incremento cuando se produce una colisión. Es una cadena que contiene una de cada construcción: <F>, <E>, <N> en cualquier orden.
Sintaxis:
FindFilePlaceByPattern(FilePattern)
Ajuste ¿Es obligatorio? Valor FilePattern Sí - <F> se reemplaza por el nombre de archivo original.
- <N> se reemplaza por un contador de incremento hasta que no hay ninguna colisión con los objetos en el equipo de destino.
- <E> se reemplaza por la extensión de nombre de archivo original.
Por ejemplo,<F> (<N>).<E>
cambia el archivoMyDocument.doc
de origen enMyDocument (1).doc
en el equipo de destino.NewestVersion
La función NewestVersion resuelve conflictos en el equipo de destino en función de la versión del archivo.
Sintaxis:
NewestVersion(VersionTag)
Ajuste ¿Es obligatorio? Valor VersionTag Sí Campo de versión que está activado. Este campo puede ser FileVersion
oProductVersion
. El archivo con la versión versionTag más alta determina qué conflictos se resuelven en función de la versión del archivo. Por ejemplo, siMyfile.txt
contiene FileVersion 1 y el mismo archivo en el equipo de destino contiene FileVersion 2, el archivo en destino permanece.HigherValue()
Esta función se puede usar para combinar valores del Registro. Los valores del Registro se evalúan como valores numéricos y el que tiene el valor superior determina qué valores del Registro se combinan.
LowerValue()
Esta función se puede usar para combinar valores del Registro. Los valores del Registro se evalúan como valores numéricos y el que tiene el valor inferior determina qué valores del Registro se combinan.
SourcePriority
Especifica que se migrará el objeto desde el equipo de origen y se eliminará el objeto que se encuentra en el equipo de destino.
Por ejemplo:
<merge script="MigXmlHelper.SourcePriority()"> <objectSet> <pattern type="Registry">%HklmWowSoftware%\Microsoft\Office\14.0\Common\Migration\Publisher [UpgradeVersion]</pattern> <pattern type="Registry">%HklmWowSoftware%\Microsoft\Office\15.0\Common\Migration\Publisher [UpgradeVersion]</pattern> <pattern type="Registry">%HklmWowSoftware%\Microsoft\Office\16.0\Common\Migration\Publisher [UpgradeVersion]</pattern> </objectSet> </merge>
<migración>
El <elemento de migración> es el elemento raíz único de un archivo de.xml de migración y es necesario. Cada archivo.xml debe tener un urlid de migración único. El urlid de cada archivo especificado en la línea de comandos debe ser único. Los urlids deben ser únicos porque USMT usa el urlid para definir los componentes del archivo.
Número de repeticiones: una
Elementos primarios: none
Elementos secundarios necesarios:<component>
Elementos secundarios opcionales:<library>, <namedElements>
Sintaxis:
<migration urlid="*UrlID/*Name">
</migration>
Ajuste | ¿Es obligatorio? | Valor |
---|---|---|
urlid | Sí | UrlID es un identificador de cadena que identifica de forma única este archivo de.xml . Este parámetro debe ser un nombre sin dos puntos tal y como se define en la especificación Espacios de nombres XML. Cada archivo de.xml de migración debe tener un urlid único. Si dos archivos de.xml de migración tienen el mismo urlid, el segundo archivo .xml especificado en la línea de comandos no se procesa. Para obtener más información sobre los espacios de nombres XML, consulte Uso de espacios de nombres XML. |
Nombre | No | Aunque no es necesario, se recomienda usar el nombre del archivo .xml . |
El ejemplo siguiente es del MigApp.xml
archivo :
<migration urlid="http://www.microsoft.com/migration/1.0/migxmlext/migapp">
</migration>
MigXMLHelper.FileProperties
Esta función auxiliar de filtro se puede usar para filtrar la migración de archivos en función del tamaño de archivo y los atributos de fecha.
Función auxiliar | MigXMLHelper.FileProperties (propiedad, operador, valueToCompare) |
---|---|
Propiedad | filesize, dateCreated, dateModified, dateAccessed |
Operador | range, neq, lte, lt, eq, gte, gt |
valueToCompare | Valor que se está comparando. Por ejemplo: Fecha: "2023/05/15-2020/05/17", "2023/05/15" Tamaño: un número con B, KB, MB o GB al final. "5GB", "1KB-1MB" |
<component context="System" type="Application">
<displayName>File_size</displayName>
<role role="Data">
<rules>
<include filter='MigXmlHelper.FileProperties("dateAccessed","range","2023/05/15-2020/05/17")'>
<objectSet>
<pattern type="File">%SYSTEMDRIVE%\DOCS\* [*]</pattern>
</objectSet>
</include>
</rules>
</role>
</component>
<namedElements>
El <elemento namedElements> se puede usar para definir elementos con nombre. Estos elementos se pueden usar en cualquier componente a lo largo del archivo .xml . Para obtener un ejemplo de cómo usar este elemento, vea el MigApp.xml
archivo .
Sintaxis:
<namedElements>
</namedElements>
Número de repeticiones: Ilimitado
Elementos primarios:<migración>
Elementos secundarios:<entorno>, <reglas>, <condiciones>, <detección>, detección,< detección>, <detección>
Para obtener un ejemplo de este elemento, vea el MigApp.xml
archivo .
<objeto>
El <elemento object> representa un archivo o una clave del Registro.
Número de repeticiones: Ilimitado
Elementos primarios:<addObjects>
Elementos secundarios necesarios:<ubicación>, <atributos>
Elementos secundarios opcionales:<bytes>
Sintaxis:
<object>
</object>
El ejemplo siguiente es del MigApp.xml
archivo :
<addObjects>
<object>
<location type="Registry">%HklmWowSoftware%\Microsoft\Office\16.0\Common\Migration\Office [UpgradeVersion]</location>
<attributes>DWORD</attributes>
<bytes>0B000000</bytes>
</object>
<object>
<location type="Registry">%HklmWowSoftware%\Microsoft\Office\16.0\Common\Migration\Office [Lang]</location>
<attributes>DWORD</attributes>
<bytes>00000000</bytes>
</object>
</addObjects>
<objectSet>
El <elemento objectSet> contiene una lista de patrones de objeto; por ejemplo, rutas de acceso de archivo, ubicaciones del Registro, etc. Los elementos de condiciones> secundarias< se evalúan primero. Si todos los elementos de condiciones> secundarias< devuelven FALSE, el <elemento objectSet> se evalúa como un conjunto vacío. Para cada elemento primario, solo puede haber varios <elementos objectSet> .
Número de repeticiones: Ilimitado
Elementos primarios:<variable>, <content>, <include>, <exclude>, <merge>, <contentModify>, <locationModify>, <destinationCleanup>, <includeAttributes>, <excludeAttributes>, <unconditionalExclude>, <detect>
Elementos secundarios opcionales:<contenido>, <condiciones>, <condición>
Sintaxis:
<objectSet>
</objectSet>
El ejemplo siguiente es del MigUser.xml
archivo :
<component type="Documents" context="User">
<displayName _locID="miguser.mymusic">My Music</displayName>
<paths>
<path type="File">%CSIDL_MYMUSIC%</path>
</paths>
<role role="Data">
<detects>
<detect>
<condition>MigXmlHelper.DoesObjectExist("File","%CSIDL_MYMUSIC%")</condition>
</detect>
</detects>
<rules>
<include filter='MigXmlHelper.IgnoreIrrelevantLinks()'>
<objectSet>
<pattern type="File">%CSIDL_MYMUSIC%\* [*]</pattern>
</objectSet>
</include>
<merge script="MigXmlHelper.DestinationPriority()">
<objectSet>
<pattern type="File">%CSIDL_MYMUSIC%\ [desktop.ini]</pattern>
</objectSet>
</merge>
</rules>
</role>
</component>
<path>
Este elemento es un elemento USMT interno. No use este elemento.
<Caminos>
Este elemento es un elemento USMT interno. No use este elemento.
<patrón>
Este elemento se puede usar para especificar varios objetos. Se pueden usar varios <elementos de patrón> para cada <elemento objectSet> y se combinan. Si especifica archivos, Microsoft recomienda usar GenerateDrivePatterns
con <script> en su lugar.
GenerateDrivePatterns
es básicamente lo mismo que una <regla de patrón> , sin la especificación de la letra de unidad. Por ejemplo, las dos líneas de código siguientes son similares:
<pattern type="File">C:\Folder\* [Sample.doc]</pattern>
<script>MigXmlHelper.GenerateDrivePatterns("\Folder\* [Sample.doc]","Fixed"</script>
Número de repeticiones: Ilimitado
Elementos primarios:<objectSet>
Elementos secundarios: ninguno excepto Path [object] debe ser válido.
Sintaxis:
<pattern type="typeID">Path [object]</pattern>
Ajuste | ¿Es obligatorio? | Valor |
---|---|---|
tipo | Sí |
typeID puede ser Registry, File o Ini. Si typeId es Ini, no se permite un espacio entre Path y el objeto . Por ejemplo, el siguiente formato es correcto cuando type="Ini": <pattern type="Ini">%WinAmp5InstPath%\Winamp.ini|WinAmp[keeponscreen]</pattern> |
Ruta de acceso [objeto] | Sí | Un patrón de ruta de acceso de archivo o registro válido, seguido de al menos un espacio, seguido de corchetes [] que contienen el objeto que se va a migrar.
|
Por ejemplo:
Para migrar una sola clave del Registro:
<pattern type="Registry">HKLM\Software\Microsoft\Windows\CurrentVersion\Internet Settings\Cache [Persistent]</pattern>
Para migrar la
C:\EngineeringDrafts
carpeta y las subcarpetas de la unidad C::<pattern type="File">C:\EngineeringDrafts\* [*]</pattern>
Para migrar solo la
C:\EngineeringDrafts
carpeta, excepto las subcarpetas, desde la unidad C::Para migrar el
Sample.doc
archivo desdeC:\EngineeringDrafts
:<pattern type="File"> C:\EngineeringDrafts\ [Sample.doc]</pattern>
Para migrar el
Sample.doc
archivo desde donde existe en la unidad C: use el patrón de la siguiente manera. Si existen varios archivos con el mismo nombre en la unidad C:, se migran todos estos archivos.<pattern type="File"> C:\* [Sample.doc] </pattern>
Para obtener más ejemplos de cómo usar este elemento, vea Excluir archivos y configuraciones, Volver a enrutar archivos y configuraciones, Incluir archivos y configuraciones y Ejemplos XML personalizados.
<Tratamiento>
Este elemento se puede usar para ejecutar un script durante un punto específico dentro del proceso de migración. No se esperan valores devueltos de los scripts especificados. Si hay valores devueltos, se omiten.
Número de repeticiones: ilimitado
Elementos primarios:<rules>
Elemento secundario necesario:<script>
Sintaxis:
<processing when="pre-scan|scan-success|post-scan|pre-apply|apply-success|post-apply">
</processing>
Ajuste | ¿Es obligatorio? | Valor |
---|---|---|
cuando | Sí | Indica cuándo se debe ejecutar el script. Este valor puede ser uno de los siguientes valores:
|
<complemento>
Este elemento es un elemento USMT interno. No use este elemento.
<rol>
El <elemento role> es necesario en un archivo de.xml personalizado. Cuando se especifica el <elemento role> , se puede crear un componente concreto. El componente se define mediante los parámetros especificados en el nivel de <componente> y con el rol que se especifica aquí.
Número de repeticiones: Cada <componente> puede tener uno, dos o tres elementos de rol> secundarios<.
Elementos primarios:<componente>, <rol>
Elementos secundarios necesarios:<rules>
Elementos secundarios opcionales:<entorno>, <detección>, <componente>, <rol>, <detección>, <complemento>
Sintaxis:
<role role="Container|Binaries|Settings|Data">
</role>
Ajuste | ¿Es obligatorio? | Valor |
---|---|---|
rol | Sí | Define el rol para el componente. El rol puede ser uno de los siguientes:
|
El ejemplo siguiente es del MigUser.xml
archivo . Para obtener más ejemplos, vea el MigApp.xml
archivo:
<component type="System" context="User">
<displayName _locID="miguser.startmenu">Start Menu</displayName>
<paths>
<path type="File">%CSIDL_STARTMENU%</path>
</paths>
<role role="Settings">
<detects>
<detect>
<condition>MigXmlHelper.DoesObjectExist("File","%CSIDL_STARTMENU%")</condition>
</detect>
</detects>
<rules>
<include filter='MigXmlHelper.IgnoreIrrelevantLinks()'>
<objectSet>
<pattern type="File">%CSIDL_STARTMENU%\* [*]</pattern>
</objectSet>
</include>
<merge script="MigXmlHelper.DestinationPriority()">
<objectSet>
<pattern type="File">%CSIDL_STARTMENU% [desktop.ini]</pattern>
<pattern type="File">%CSIDL_STARTMENU%\* [*]</pattern>
</objectSet>
</merge>
</rules>
</role>
</component>
<reglas>
El <elemento rules> es necesario en un archivo de.xml personalizado. Este elemento contiene reglas que se ejecutan durante la migración si el elemento del componente> primario< está seleccionado, a menos que el elemento de condiciones> secundario<, si está presente, se evalúe como FALSE. Para cada <elemento rules>, puede haber varios elementos de reglas> secundarias<.
Número de repeticiones: ilimitado
Elementos primarios:<role>, <rules>, <namedElements>
Elementos secundarios necesarios:<include>
Elementos secundarios opcionales:<rules>, <exclude>, <unconditionalExclude,merge><>, <contentModify>, <locationModify>, <destinationCleanup>, <addObjects>, <externalProcess>, <processing>, <includeAttributes>, <excludeAttributes>, condiciones, <detecta>
Sintaxis:
<rules name="ID" context="User|System|UserAndSystem">
</rules>
Ajuste | ¿Es obligatorio? | Valor |
---|---|---|
name | Sí, cuando <las reglas> son un elemento secundario para <namedElements> No, cuando <las reglas> son secundarias para cualquier otro elemento |
Cuando se especifica id ., no se procesan los elementos secundarios. En su lugar, se procesan los demás <elementos de reglas> con el mismo nombre que se declaran dentro de <namedElements> . |
contexto | No (valor predeterminado = UserAndSystem) |
Define el ámbito de este parámetro: si se va a procesar este componente en el contexto del usuario específico, en todo el sistema operativo o en ambos. El mayor ámbito posible lo establece el elemento de componente. Por ejemplo, si un <elemento de componente> tiene un contexto de User y un <elemento rules> tenía un contexto de UserAndSystem, el <elemento rules> actuaría como si tuviera un contexto de User. Si <las reglas> tuvieran un contexto de Sistema, actuaría como si <las reglas> no estuvieran allí.
|
El ejemplo siguiente es del MigUser.xml
archivo :
<component type="Documents" context="User">
<displayName _locID="miguser.mymusic">My Music</displayName>
<paths>
<path type="File">%CSIDL_MYMUSIC%</path>
</paths>
<role role="Data">
<detects>
<detect>
<condition>MigXmlHelper.DoesObjectExist("File","%CSIDL_MYMUSIC%")</condition>
</detect>
</detects>
<rules>
<include filter='MigXmlHelper.IgnoreIrrelevantLinks()'>
<objectSet>
<pattern type="File">%CSIDL_MYMUSIC%\* [*]</pattern>
</objectSet>
</include>
<merge script="MigXmlHelper.DestinationPriority()">
<objectSet>
<pattern type="File">%CSIDL_MYMUSIC%\ [desktop.ini]</pattern>
</objectSet>
</merge>
</rules>
</role>
</component>
<Guión>
El valor devuelto que requiere <el script> depende del elemento primario.
Número de repeticiones: Una vez para variable<>, ilimitado para <objectSet> y <procesamiento>
Elementos primarios:<objectSet>, <variable>, <procesamiento>
Elementos secundarios: none
Sintaxis y funciones auxiliares:
Sintaxis general:
<script>ScriptWithArguments</script>
GetStringContent se puede usar cuando <el script> está dentro de la< variable> .
Sintaxis:
<script>MigXmlHelper.GetStringContent("ObjectType","EncodedLocationPattern", "ExpandContent")</script>
Ejemplo:
<script>MigXMLHelper.GetStringContent("Registry","HKLM\Software\MyApp\Installer [EXEPATH]")</script>
GenerateUserPatterns se puede usar cuando <el script> está dentro de< objectSet>.
Sintaxis:
<script>MigXmlHelper.GenerateUserPatterns("ObjectType","EncodedLocationPattern","ProcessCurrentUser")</script>
Ejemplo:
<script>MigXmlHelper.GenerateUserPatterns ("File","%USERPROFILE%\* [*.doc]", "FALSE")</script>
GenerateDrivePatterns se puede usar cuando <el script> está dentro de< objectSet>.
Sintaxis:
<script>MigXmlHelper.GenerateDrivePatterns("PatternSegment","DriveType")</script>
Ejemplo:
<script>MigXmlHelper.GenerateDrivePatterns("* [sample.doc]", "Fixed")</script>
Los scripts de ejecución simple se pueden usar con <elementos de script> que están dentro de <los elementos de procesamiento> : AskForLogoff, ConvertToShortFileName, KillExplorer, RemoveEmptyDirectories, RestartExplorer, RegisterFonts, StartService, StopService, SyncSCM.
Sintaxis:
<script>MigXmlHelper.ExecutingScript</script>
Ejemplo:
<script>MigXmlHelper.KillExplorer()</script>
Ajuste | ¿Es obligatorio? | Valor |
---|---|---|
ScriptWithArguments | Sí | Script seguido de cualquier número de argumentos de cadena separados por una coma y entre paréntesis. Por ejemplo, MyScripts.AScript ("Arg1","Arg2") .Se llama al script para cada objeto enumerado por los conjuntos de objetos de la <regla de inclusión> . El script de filtro devuelve un valor booleano. Si el valor devuelto es TRUE, se migra el objeto. Si es FALSE, no se migra. El valor devuelto que requiere <el script> depende del elemento primario.
|
Ejemplos:
Para migrar el archivo Sample.doc desde cualquier unidad del equipo de origen, use <el script> como se indica a continuación. Si existen varios archivos con el mismo nombre, se migran todos estos archivos.
<script>MigXmlHelper.GenerateDrivePatterns("* [sample.doc]", "Fixed")</script>
Para obtener más ejemplos de cómo usar este elemento, vea Excluir archivos y configuraciones, Volver a enrutar archivos y configuraciones y Ejemplos XML personalizados.
<funciones de script>
Las siguientes funciones se pueden usar con el <elemento script>
Funciones de generación de cadenas y patrones
Estas funciones devuelven una cadena o un patrón.
GetStringContent
GetStringContent se puede usar con elementos de <script> que están dentro de <elementos variables> . Si es posible, esta función devuelve la representación de cadena del objeto especificado. De lo contrario, devuelve NULL. En el caso de los objetos de archivo, esta función siempre devuelve NULL.
Sintaxis:
GetStringContent("ObjectType","EncodedLocationPattern", "ExpandContent")
Ajuste ¿Es obligatorio? Valor ObjectType Sí Tipo de objeto. Puede ser Registry o Ini (para un archivo .ini ). EncodedLocationPattern Sí - Si el tipo de objeto es Registry, EncodedLocationPattern debe ser una ruta de acceso del Registro válida. Por ejemplo,
HKLM\SOFTWARE\MyKey[]
. - Si el tipo de objeto es Ini, EncodedLocationPattern debe tener el formato siguiente:
IniFilePath|SectionName[SettingName]
ExpandContent No (default=TRUE) Puede ser TRUE o FALSE. Si es FALSE, la ubicación especificada no se expande antes de devolverla. Por ejemplo:
<variable name="MSNMessengerInstPath"> <script>MigXmlHelper.GetStringContent("Registry","%HklmWowSoftware%\Microsoft\MSNMessenger [InstallationDirectory]")</script> </variable>
- Si el tipo de objeto es Registry, EncodedLocationPattern debe ser una ruta de acceso del Registro válida. Por ejemplo,
GenerateDrivePatterns
La
GenerateDrivePatterns
función recorre en iteración todas las unidades disponibles y selecciona las que coinciden con el tipo de unidad solicitado. A continuación, concatena las unidades seleccionadas con la parte final de PatternSegment para formar un patrón de archivo codificado completo. Por ejemplo, si PatternSegment esPath [file.txt]
y DriveType esFixed
, la función genera y otros patrones si hay unidades fijas distintasC:\Path [file.txt]
de C:. Las variables de entorno no se pueden especificar con esta función.GenerateDrivePatterns
se puede usar con <elementos de script> que están dentro de< objectSet> que están dentro de< include>/<exclude>.Sintaxis:
GenerateDrivePatterns("PatternSegment","DriveType")
Ajuste ¿Es obligatorio? Valor PatternSegment Sí Sufijo de un patrón codificado. El valor se concatena con una especificación de unidad, como "c:", para formar un patrón de archivo codificado completo. Por ejemplo, "* [*.doc]". PatternSegment no puede ser una variable de entorno. DriveType Sí Tipo de unidad para el que se van a generar los patrones. Se puede especificar uno de los siguientes elementos: - Fijo
- CDROM
- Amovible
- Remoto
Vea el último componente del
MigUser.xml
archivo para obtener un ejemplo de este elemento.GenerateUserPatterns
La
GenerateUserPatterns
función recorre en iteración todos los usuarios que se están migrando, excepto el usuario procesado actualmente si <ProcessCurrentUser> es FALSE, y expande el patrón especificado en el contexto de cada usuario. Por ejemplo, si los usuarios A, B y C tienen perfiles enC:\Users
, mediante una llamada aGenerateUserPattens('File','%userprofile% [*.doc]','TRUE')
, la función auxiliar genera los tres patrones siguientes:"C:\Users\A\* [*.doc]"
"C:\Users\B\* [*.doc]"
"C:\Users\C\* [*.doc]"
Sintaxis:
GenerateUserPatterns("ObjectType","EncodedLocationPattern","ProcessCurrentUser")
Ajuste ¿Es obligatorio? Valor ObjectType Sí Define el tipo de objeto. Puede ser Archivo o Registro. EncodedLocationPattern Sí Patrón de ubicación. Se permiten variables de entorno. ProcessCurrentUser Sí Puede ser TRUE o FALSE. Indica si se deben generar los patrones para el usuario actual.
Por ejemplo:
Si GenerateUserPattens('File','%userprofile% [*.doc]','FALSE')
se llama a mientras USMT procesa el usuario A, esta función solo genera patrones para los usuarios B y C. Esta función auxiliar se puede usar para compilar reglas complejas. Por ejemplo, para migrar todos los .doc
archivos desde el equipo de origen, pero si el usuario X no se migra, no migre ninguno de los .doc
archivos del perfil del usuario X.
El ejemplo siguiente es código de ejemplo para este escenario. El primer <elemento rules> migra todos los .doc
archivos del equipo de origen, excepto los que se encuentran dentro de C:\Users
. Los elementos de segunda< regla> migran todos los .doc
archivos, C:\Users
excepto los .doc
archivos de los perfiles de los demás usuarios. Dado que el segundo <elemento rules> se procesa en cada contexto de usuario migrado, el resultado final es el comportamiento deseado. El resultado final es el esperado.
<rules context="System">
<include>
<objectSet>
<script>MigXmlHelper.GenerateDrivePatterns ("* [*.doc]", "Fixed")</script>
</objectSet>
</include>
<exclude>
<objectSet>
<pattern type="File">%ProfilesFolder%\* [*.doc]</pattern>
</objectSet>
</exclude>
</rules>
<rules context="User">
<include>
<objectSet>
<pattern type="File">%ProfilesFolder%\* [*.doc]</pattern>
</objectSet>
</include>
<exclude>
<objectSet>
<script>MigXmlHelper.GenerateUserPatterns ("File","%userprofile%\* [*.doc]", "FALSE")</script>
</objectSet>
</exclude>
</rules>
MigXmlHelper.GenerateDocPatterns
La MigXmlHelper.GenerateDocPatterns
función auxiliar invoca al buscador de documentos para examinar el sistema en busca de todos los archivos que se pueden migrar. Se puede invocar en el contexto del sistema o del usuario para centrar el examen.
Ajuste | ¿Es obligatorio? | Valor |
---|---|---|
ScanProgramFiles | No (valor predeterminado = FALSE) | Puede ser TRUE o FALSE. El parámetro ScanProgramFiles determina si el buscador de documentos examina o no el directorio Archivos de programa para recopilar extensiones de archivo registradas para aplicaciones conocidas. Por ejemplo, cuando se establece en TRUE , detecta y migra .jpg archivos en el directorio de Photoshop, si .jpg es una extensión de archivo registrada en Photoshop. |
IncludePatterns | No (valor predeterminado = TRUE) | Puede ser TRUE o FALSE. TRUE genera patrones de inclusión y se puede agregar en el <elemento include> . FALSE genera patrones de exclusión y se puede agregar en el <elemento exclude> . |
SystemDrive | No (valor predeterminado = FALSE) | Puede ser TRUE o FALSE. Si es TRUE, restringe todos los patrones a la unidad del sistema. |
<!-- This component migrates data in user context -->
<component type="Documents" context="User">
<displayName>MigDocUser</displayName>
<role role="Data">
<rules>
<include filter='MigXmlHelper.IgnoreIrrelevantLinks()'>
<objectSet>
<script>MigXmlHelper.GenerateDocPatterns ("false")</script>
</objectSet>
</include>
<exclude>
<objectSet>
<script>MigXmlHelper.GenerateDocPatterns ("false", "false", "false")</script>
</objectSet>
</exclude>
</rules>
</role>
</component>
Ejecución sencilla de scripts
Los scripts siguientes no tienen ningún valor devuelto. Los siguientes errores se pueden usar con <elementos de script> que están dentro de los elementos de< procesamiento>.
AskForLogoff(). Consultas al usuario que cierre la sesión al final de la migración. Por ejemplo:
<processing when="apply-success"> <script>MigXmlHelper.AskForLogoff()</script> </processing>
ConvertToShortFileName(RegistryEncodedLocation). Si RegistryEncodedLocation es la ruta de acceso completa de un archivo existente, esta función convierte el archivo en su nombre de archivo corto y, a continuación, actualiza el valor del Registro.
KillExplorer(). Detiene Explorer.exe para el contexto de usuario actual. Detener Explorer.exe permite el acceso a determinadas claves y archivos que se mantienen abiertos cuando se ejecuta Explorer.exe. Por ejemplo:
<processing when="pre-apply"> <script>MigXmlHelper.KillExplorer()</script> </processing>
RegisterFonts(FileEncodedLocation). Registra la fuente especificada o todas las fuentes del directorio especificado. Por ejemplo:
<processing when="apply-success">
<script>MigXmlHelper.RegisterFonts("%CSIDL_COMMON_FONTS%")</script>
</processing>
RemoveEmptyDirectories (DirectoryEncodedPattern). Elimina los directorios vacíos que coincidan con DirectoryEncodedPattern en el equipo de destino.
RestartExplorer(). Reinicia Explorer.exe al final de la migración. Por ejemplo:
<processing when="post-apply"> <script>MigXmlHelper.RestartExplorer()</script> </processing>
StartService (ServiceName, OptionalParam1, OptionalParam2,...). Inicia el servicio identificado por ServiceName. ServiceName es la subclave en
HKLM\System\CurrentControlSet\Services
que contiene los datos del servicio especificado. Los parámetros opcionales, si los hay, se pasan a la API StartService. Para obtener más información, vea el artículo Función StartServiceA (winsvc.h).StopService (ServiceName). Detiene el servicio identificado por ServiceName. ServiceName es la subclave en
HKLM\System\CurrentControlSet\Services
que contiene los datos del servicio especificado.SyncSCM(ServiceShortName). Lee el valor de Tipo de inicio del Registro
(HKLM\System\CurrentControlSet\Services\ServiceShortName [Start])
después de que el motor de migración cambie el valor y, a continuación, sincroniza Service Control Manager (SCM) con el nuevo valor.
<Mensaje de texto>
El <elemento text> se puede usar para establecer un valor para las variables de entorno que se encuentran dentro de uno de los archivos de.xml de migración.
Número de repeticiones: Una vez en cada <elemento de variable> .
Elementos primarios:<variable>
Elementos secundarios: Ninguno.
Sintaxis:
<text>NormalText</text>
Configuración | Valor |
---|---|
NormalText | Este texto se interpreta como texto normal. |
Por ejemplo:
<variable name="QuickTime5or6DataSys">
<text>%CSIDL_COMMON_APPDATA%\QuickTime</text>
</variable>
<unconditionalExclude>
El <elemento unconditionalExclude> excluye los archivos y valores del Registro especificados de la migración, independientemente de las demás reglas de inclusión en cualquiera de los archivos de.xml de migración o en el Config.xml
archivo. Los objetos declarados aquí no se migran porque este elemento tiene prioridad sobre todas las demás reglas. Por ejemplo, aunque haya reglas de inclusión> explícitas< para incluir .mp3
archivos, si se excluyen con esta opción, no se migran.
Use este elemento para excluir todos los .mp3
archivos del equipo de origen. O bien, si se realiza una C:\UserData
copia de seguridad con otro método, toda la carpeta se puede excluir de la migración. Use este elemento con precaución. Si una aplicación necesita un archivo excluido, es posible que la aplicación no funcione correctamente en el equipo de destino.
Número de repeticiones: Ilimitado.
Elementos primarios:<rules>
Elementos secundarios:<objectSet>
Sintaxis:
<unconditionalExclude></unconditionalExclude>
El siguiente archivo .xml excluye todos los .mp3
archivos de la migración. Para obtener ejemplos adicionales de cómo usar este elemento, vea Excluir archivos y configuración.
<migration urlid="http://www.microsoft.com/migration/1.0/migxmlext/excludefiles">
<component context="System" type="Documents">
<displayName>Test</displayName>
<role role="Data">
<rules>
<unconditionalExclude>
<objectSet>
<script>MigXmlHelper.GenerateDrivePatterns ("* [*.mp3]", "Fixed")</script>
</objectSet>
</unconditionalExclude>
</rules>
</role>
</component>
</migration>
<variable>
El <elemento variable> es necesario en un elemento de< entorno>. Para cada <elemento de variable> debe haber un <elemento objectSet>, <script> o <text> . El contenido del <elemento variable> asigna un valor de texto a la variable de entorno. Este elemento tiene las tres opciones siguientes:
Si el <elemento variable> contiene un <elemento de texto> , el valor del elemento variable es el valor del <elemento de texto> .
Si el <elemento variable> contiene un <elemento script> y la invocación del script genera una cadena que no es null, el valor del <elemento variable> es el resultado de la invocación del script.
Si el <elemento variable> contiene un <elemento objectSet> y la evaluación del <elemento objectSet> genera al menos un patrón de objeto, el valor del primer objeto que coincida con el patrón de objeto resultante es el valor del elemento variable.
Número de repeticiones: Ilimitado
Elementos primarios:<entorno>
Elementos secundarios necesarios:<texto>, <script> o <objectSet>
Sintaxis:
<variable name="ID" remap=TRUE|FALSE>
</variable>
Ajuste | ¿Es obligatorio? | Valor |
---|---|---|
name | Sí |
Id es un valor de cadena que es el nombre que se usa para hacer referencia a la variable de entorno. Microsoft recomienda que el identificador comience por el nombre del componente para evitar colisiones de espacio de nombres. Por ejemplo, si el nombre del componente es MyComponent y se desea una variable que sea la ruta de instalación del componente, MyComponent.InstallPath podría especificarse. |
Remap | No, default = FALSE | Especifica si se debe evaluar esta variable de entorno como una variable de entorno de reasignación. Los objetos que se encuentran en una ruta de acceso que se encuentra debajo del valor de esta variable de entorno se mueven automáticamente a donde apunta la variable de entorno en el equipo de destino. |
El ejemplo siguiente es del MigApp.xml
archivo :
<environment>
<variable name="HklmWowSoftware">
<text>HKLM\Software</text>
</variable>
<variable name="WinZip8or9or10Exe">
<script>MigXmlHelper.GetStringContent("Registry","%HklmWowSoftware%\Microsoft\Windows\CurrentVersion\App Paths\winzip32.exe []")</script>
</variable>
</environment>
<versión>
El <elemento version> define la versión del componente, pero no afecta a la migración.
Número de repeticiones: cero o uno
Elementos primarios:<componente>
Elementos secundarios: none
Sintaxis:
<version>ComponentVersion</version>
Ajuste | ¿Es obligatorio? | Valor |
---|---|---|
ComponentVersion | Sí | Versión del componente, que puede contener patrones. |
Por ejemplo:
<version>4.*</version>
<windowsObjects>
El <elemento windowsObjects> es solo para uso interno de USMT. No use este elemento.
Apéndice
Especificación de ubicaciones
Especificación de ubicaciones codificadas. La ubicación codificada utilizada en todas las funciones auxiliares es una representación de cadena inequívoca para el nombre de un objeto. La ubicación codificada se compone de la parte del nodo, seguida opcionalmente de la hoja entre corchetes. Este formato hace una distinción clara entre nodos y hojas.
Por ejemplo, especifique el archivo
C:\Windows\Notepad.exe
de la siguiente manera:c:\Windows[Notepad.exe]
. Del mismo modo, especifique el directorioC:\Windows\System32
de la siguiente manera:c:\Windows\System32
. (Observe la ausencia de la[]
construcción).Representar el registro es similar. El valor predeterminado de una clave del Registro se representa como una construcción vacía
[]
. Por ejemplo, el valor predeterminado de la clave delHKLM\SOFTWARE\MyKey
Registro esHKLM\SOFTWARE\MyKey[]
.Especificación de patrones de ubicación. Especificar un patrón de ubicación es similar a especificar una ubicación real. La excepción es que tanto el nodo como la parte hoja aceptan patrones. Sin embargo, un patrón del nodo no se extiende a la hoja.
Por ejemplo, el patrón
c:\Windows\*
coincide con el directorio de Windows y todos los subdirectorios, pero no coincide con ninguno de los archivos de esos directorios. Para que coincidan también con los archivos,c:\Windows\*[*]
debe especificarse.
Funciones internas de USMT
Las siguientes funciones son solo para uso interno de USMT. No los use en un archivo .xml .
AntiAlias
ConvertScreenSaver
ConvertShowIEOnDesktop
ConvertToOfficeLangID
MigrateActiveDesktop
MigrateAppearanceUPM
MigrateDisplayCS
MigrateDisplaySS
MigrateIEAutoSearch
MigrateMouseUPM
MigrateSoundSysTray
MigrateTaskBarss
SetPstPathInMapiStruc
Etiquetas de versión válidas
Las siguientes etiquetas de versión se pueden usar con varias funciones auxiliares:
"CompanyName"
"FileDescription"
"FileVersion"
"InternalName"
"LegalCopyright"
"OriginalFilename"
"ProductName"
"ProductVersion"
Las siguientes etiquetas de versión contienen valores que se pueden comparar:
"FileVersion"
"ProductVersion"