Ejemplos de XML personalizados
Ejemplo 1: Migración de una aplicación no admitida
La plantilla siguiente es una plantilla para las secciones necesarias para migrar aplicaciones. La plantilla no funciona por sí sola, pero se puede usar para escribir un archivo.xml personalizado.
Plantilla
Expanda para mostrar la plantilla de aplicación de ejemplo 1 :
<migration urlid="http://www.microsoft.com/migration/1.0/migxmlext/migtestapp">
<component type="Application">
<!-- Name of the application -->
<displayName>Some Application</displayName>
<!-- Specify whether the environment variables exist in the context of user or system or both -->
<environment context="System">
<!-- Create the environment variables -->
<variable name="myVar1">
<!-- Simple text value assignment to a variable -->
<text>value</text>
</variable>
<variable name="myAppExePath">
<!-- Make a call to in-built helper function to get a value from a reg key and assign that value to the variable -->
<script>MigXMLHelper.GetStringContent("Registry","HKLM\Software\MyApp\Installer [EXEPATH]")</script>
</variable>
</environment>
<role role="Settings">
<detects>
<!-- All of these checks must be true for the component to be detected -->
<detect>
<!-- Make a call to in-built helper function to check if an object exists or not -->
<condition>MigXMLHelper.DoesObjectExist("Registry","HKLM\Software\MyApp [win32_version]")</condition>
</detect>
<detect>
<!-- Either of these checks must be true for the component to be detected -->
<!-- Make a call to in-built helper function to check if a file version matches or not -->
<condition>MigXMLHelper.DoesFileVersionMatch("%MyAppExePath%","ProductVersion","8.*")</condition>
<condition>MigXMLHelper.DoesFileVersionMatch("%MyAppExePath%","ProductVersion","9.*")</condition>
</detect>
</detects>
<!-- Describe the rules that will be executed during migration of this component and the context, whether user, system or both -->
<rules context="User">
<!-- Delete objects specified in the object set on the destination computer before applying source objects -->
<destinationCleanup>
<!-- Describe the pattern for the list of objects to be deleted -->
<objectSet>
<pattern type="Registry">HKCU\Software\MyApp\Toolbar\* [*]</pattern>
<pattern type="Registry">HKCU\Software\MyApp\ListView\* [*]</pattern>
<pattern type="Registry">HKCU\Software\MyApp [ShowTips]</pattern>
</objectSet>
</destinationCleanup>
<!-- Specify which set of objects should be migrated -->
<include>
<!-- Describe the pattern for the list of objects to be included -->
<objectSet>
<pattern type="Registry">HKCU\Software\MyApp\Toolbar\* [*]</pattern>
<pattern type="Registry">HKCU\Software\MyApp\ListView\* [*]</pattern>
<pattern type="Registry">HKCU\Software\MyApp [ShowTips]</pattern>
</objectSet>
</include>
<!-- Specify which set of objects should not be migrated -->
<exclude>
<!-- Describe the pattern for the list of objects to be excluded from migration -->
<objectSet>
<pattern type="Registry">HKCU\Software\MyApp [Display]</pattern>
</objectSet>
</exclude>
</rules>
</role>
</component>
</migration>
Ejemplo 2: Migración de la carpeta Mis vídeos
El ejemplo siguiente es un archivo .xml personalizado denominado CustomFile.xml
que migra la carpeta Vídeos para todos los usuarios, si la carpeta existe en el equipo de origen.
Condición de ejemplo: comprueba que la carpeta Vídeos existe en el equipo de origen:
<condition>MigXmlHelper.DoesObjectExist("File","%CSIDL_MYVIDEO%")</condition>
Filtro de ejemplo: filtra los accesos directos de la carpeta Vídeos que no se resuelven en el equipo de destino:
<include filter='MigXmlHelper.IgnoreIrrelevantLinks()'>
Este filtro no tiene ningún efecto en los archivos que no son accesos directos. Por ejemplo, si hay un acceso directo en la carpeta Vídeos del equipo de origen que apunta a
C:\Folder1
, ese acceso directo se migra solo siC:\Folder1
existe en el equipo de destino. Sin embargo, todos los demás archivos, como .mp3 archivos, se migran sin ningún filtrado.Patrón de ejemplo: migra la carpeta Vídeos para todos los usuarios:
<pattern type="File">%CSIDL_MYVIDEO%* [*]</pattern>
Archivo XML
Expanda para mostrar el archivo XML de ejemplo 2 :
<?xml version="1.0" encoding="UTF-8"?>
<migration urlid="http://www.microsoft.com/migration/1.0/migxmlext/CustomFile">
<component type="Documents" context="User">
<displayName>My Video</displayName>
<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>
</rules>
</role>
</component>
</migration>
Ejemplo 3: Migración de archivos y claves del Registro
Los patrones de ejemplo describen el comportamiento en el siguiente ejemplo .xml archivo.
Patrón de ejemplo: migra todas las instancias del archivo
Usmttestfile.txt
de todos los subdirectorios en%ProgramFiles%\USMTTestFolder
:<pattern type="File">%ProgramFiles%\USMTTestFolder* [USMTTestFile.txt]</pattern>
Patrón de ejemplo: migra todo el directorio en
%ProgramFiles%\USMTDIRTestFolder
:<pattern type="File">%ProgramFiles%\USMTDIRTestFolder* []</pattern>
Patrón de ejemplo: migra todas las instancias de MyKey en
HKCU\Software\USMTTESTKEY
:<pattern type="Registry">HKCU\Software\USMTTESTKEY* [MyKey]</pattern>
Patrón de ejemplo: migra todo el subárbol del Registro en
HKLM\Software\USMTTESTKEY
:<pattern type="Registry">HKLM\Software\USMTTESTKEY* []</pattern>
Archivo XML
Expanda para mostrar el archivo XML de ejemplo 3 :
<migration urlid="http://www.microsoft.com/migration/1.0/migxmlext/testfilemig">
<component type="Application" context="System">
<displayName>File Migration Test</displayName>
<role role="Data">
<rules context="System">
<include>
<objectSet>
<pattern type="File">%ProgramFiles%\USMTTestFolder\* [USMTTestFile.txt]</pattern>
<pattern type="File">%ProgramFiles%\USMTDIRTestFolder\* [*]</pattern>
</objectSet>
</include>
</rules>
</role>
</component>
<component type="System">
<displayName>Registry Migration Test</displayName>
<role role="Settings">
<rules context="UserAndSystem">
<include>
<objectSet>
<pattern type="Registry">HKCU\Software\USMTTESTKEY\* [MyKey]</pattern>
<pattern type="Registry">HKLM\Software\USMTTESTKEY\* [*]</pattern>
</objectSet>
</include>
</rules>
</role>
</component>
</migration>
Ejemplo 4: Migración de carpetas específicas desde varias ubicaciones
El comportamiento de este archivo de.xml personalizado se describe dentro de las <displayName>
etiquetas del código.
Archivo XML
Expanda para mostrar el archivo XML de ejemplo 4 :
<migration urlid="http://www.microsoft.com/migration/1.0/migxmlext/test">
<component type="Documents" context="System">
<displayName>Component to migrate all Engineering Drafts subfolders without documents in this folder </displayName>
<role role="Data">
<rules>
<include>
<objectSet>
<pattern type="File"> C:\EngineeringDrafts\* [*]</pattern>
</objectSet>
</include>
<exclude>
<objectSet>
<pattern type="File"> C:\EngineeringDrafts\ [*]</pattern>
</objectSet>
</exclude>
</rules>
</role>
</component>
<component type="Documents" context="System">
<displayName>Component to migrate all user documents except Sample.doc</displayName>
<role role="Data">
<rules>
<include>
<objectSet>
<pattern type="File"> C:\UserDocuments\* [*]</pattern>
</objectSet>
</include>
<exclude>
<objectSet>
<pattern type="File"> C:\UserDocuments\ [Sample.doc]</pattern>
</objectSet>
</exclude>
</rules>
</role>
</component>
<component type="Documents" context="System">
<displayName>Component to migrate all Requests folders on any drive on the computer </displayName>
<role role="Data">
<rules>
<include>
<objectSet>
<script>MigXmlHelper.GenerateDrivePatterns ("\Requests\* [*] ", "Fixed")</script>
<script>MigXmlHelper.GenerateDrivePatterns ("*\Requests\* [*] ", "Fixed")</script>
</objectSet>
</include>
</rules>
</role>
</component>
<component type="Documents" context="System">
<displayName>Component to migrate all Presentations folder from any location on the C: drive </displayName>
<role role="Data">
<rules>
<include>
<objectSet>
<pattern type="File"> C:\*\Presentations\* [*]</pattern>
<pattern type="File"> C:\Presentations\* [*]</pattern>
</objectSet>
</include>
</rules>
</role>
</component>
</migration>