Bibliothèque d’éléments XML

Vue d’ensemble

Cette rubrique décrit les éléments XML et les fonctions d’assistance à votre disposition pour créer des fichiers .xml de migration qui seront utilisés avec l’Outil de migration utilisateur (USMT). Vous êtes supposé connaître les bases du langage XML. .

Dans cette rubrique

Outre les éléments XML et les fonctions d’assistance, cette rubrique décrit comment spécifier des emplacements et des modèles d’emplacements encodés et présente les fonctions réservées à l’usage interne de l’Outil de migration utilisateur (USMT), ainsi que les balises de version que vous pouvez utiliser avec les fonctions d’assistance.

  • Éléments et fonctions d’assistance

  • Annexe

    • Spécification d’emplacements

    • Fonctions internes de l’Outil de migration utilisateur (USMT)

    • Balises de version valides

Éléments et fonctions d’assistance

Le tableau suivant décrit les éléments XML et les fonctions d’assistance que vous pouvez utiliser avec l’Outil de migration utilisateur (USMT).

Éléments A-K Éléments L-Z Fonctions d’assistance

<addObjects>

<attributes>

<bytes>

<commandLine>

<component>

<condition>

<conditions>

<content>

<contentModify>

<description>

<destinationCleanup>

<detect>

<detects>

<detection>

<displayName>

<environment>

<exclude>

<excludeAttributes>

<extensions>

<extension>

<externalProcess>

<icon>

<include>

<includeAttributes>

<library>

<location>

<locationModify>

<_locDefinition>

<manufacturer>

<merge>

<migration>

<namedElements>

<object>

<objectSet>

<path>

<paths>

<pattern>

<processing>

<plugin>

<role>

<rules>

<script>

<text>

<unconditionalExclude>

<variable>

<version>

<windowsObjects>

Fonctions <condition>

Fonctions <content>

Fonctions <contentModify>

Fonctions de filtrage <include> et <exclude>

Fonctions <locationModify>

Fonctions <merge>

Fonctions <script>

Fonctions internes de l’Outil de migration utilisateur (USMT)

<addObjects>

L’élément <addObjects> émule l’existence d’un ou plusieurs objets sur l’ordinateur source. Les éléments <object> enfants fournissent les détails des objets émulés. Si le contenu est un élément <script>, le résultat de l’appel sera un tableau d’objets.

  • Nombre d’occurrences : illimité

  • Éléments parents : <rules>

  • Éléments enfants requis : <object>. Vous devez aussi spécifier <location> et <attributes> comme éléments enfants de cet élément <object>.

  • Éléments enfants facultatifs : <conditions>, <condition>, <script>

Syntaxe :

<addObjects>

<addObjects>

L’exemple suivant est extrait du fichier MigApp.xml :

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

<attributes>

L’élément <attributes> définit les attributs d’une clé de Registre ou d’un fichier.

  • Nombre d’occurrences : une fois pour chaque élément <object>

  • Éléments parents : <object>

  • Éléments enfants : aucun

Syntaxe :

<attributes>contenu</attributes>

Paramètre Obligatoire ? Valeur

contenu

Oui

Le contenu dépend du type d’objet spécifié.

  • Pour les fichiers, le contenu peut être une chaîne contenant les attributs suivants séparés par des virgules :

    • Archive

    • Read-only

    • System

    • Hidden

  • Pour les clés de Registre, le contenu peut être l’un des types suivants :

    • None

    • String

    • ExpandString

    • Binary

    • DWORD

    • REG_SZ

L’exemple suivant est extrait du fichier MigApp.xml :

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

<bytes>

Vous devez spécifier l’élément <bytes> uniquement pour les fichiers car, si <location> correspond à une clé de Registre ou à un répertoire, <bytes> est alors ignoré.

  • Nombre d’occurrences : zéro ou une

  • Éléments parents : <object>

  • Éléments enfants : aucun

Syntaxe :

<bytes string="Yes|No" expand="Yes|No">contenu</bytes>

Paramètre Obligatoire ? Valeur

string

Non (valeur par défaut = No)

Détermine si contenu doit être interprété comme une chaîne ou comme des octets.

expand

Non (valeur par défaut = Yes)

Lorsque le paramètre expand a la valeur Yes, le contenu de l’élément <bytes> est tout d’abord développé dans le contexte de l’ordinateur source, puis interprété.

contenu

Oui

Dépend de la valeur du paramètre string.

  • Si string a la valeur Yes, le contenu de l’élément <bytes> est interprété en tant que chaîne.

  • Si string a la valeur No, le contenu de l’élément <bytes> est interprété en tant qu’octets. Chaque paire de caractères représente la valeur hexadécimale d’un octet. Par exemple, « 616263 » est la représentation de la chaîne ANSI « abc ». La représentation complète de la chaîne UNICODE « abc » incluant le terminateur de chaîne est : « 6100620063000000 ».

L’exemple suivant est extrait du fichier MigApp.xml :

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

<commandLine>

Vous voudrez peut-être utiliser l’élément <commandLine> si vous voulez démarrer ou arrêter un service ou une application avant ou après avoir exécuté les outils ScanState et LoadState.

  • Nombre d’occurrences : illimité

  • Éléments parents : <externalProcess>

  • Éléments enfants : aucun

Syntaxe :

<commandLine>chaîne_ligne_commande</commandLine>

Paramètre Obligatoire ? Valeur

chaîne_ligne_commande

Oui

Ligne de commande valide.

<component>

L’élément <component> est requis dans un fichier .xml personnalisé. Cet élément définit la construction la plus simple d’un fichier .xml de migration. Par exemple, dans le fichier MigApp.xml, « Microsoft® Office 2003 » est un composant contenant un autre composant, « Microsoft Office Access® 2003 ». Vous pouvez utiliser les éléments enfants pour définir ce composant.

Un composant peut être imbriqué dans un autre composant ; autrement dit, l’élément <component> peut être un enfant de l’élément <role> à l’intérieur de l’élément <component> dans deux cas : 1) lorsque l’élément <component> parent est un conteneur ou 2) si l’élément <component> enfant a le même rôle que l’élément <component> parent.

  • Nombre d’occurrences : illimité

  • Éléments parents : <migration>, <role>

  • Éléments enfants requis : <role>, <displayName>

  • Éléments enfants facultatifs : <manufacturer>, <version>, <description>, <paths>, <icon>, <environment>, <extensions>

Syntaxe :

<component type="System|Application|Device|Documents" context="User|System|UserAndSystem" defaultSupported="TRUE|FALSE|YES|NO"

hidden="Yes|No">

<component>

Paramètre Obligatoire ? Valeur

type

Oui

Vous pouvez utiliser les valeurs suivantes pour regrouper les paramètres et définir le type du composant.

  • System : Paramètres du système d’exploitation. Tous les composants Windows® sont définis par ce type.

    Si type="System" et defaultSupported="FALSE", les paramètres ne sont pas migrés sauf si les fichiers .xml contiennent un composant équivalent qui est spécifié sur la ligne de commande LoadState. Par exemple, le fichier MigSys.xml par défaut contient des composants pour lesquels type="System" et defaultSupported="FALSE". Si vous spécifiez ce fichier sur la ligne de commande ScanState, vous devez également le spécifier sur la ligne de commande LoadState pour les paramètres à migrer. En effet, l’outil LoadState doit détecter un composant équivalent. Autrement dit, le composant doit avoir le même ID d’URL de migration que celui défini dans le fichier .xml et un nom d’affichage identique. Sinon, l’outil LoadState ne migrera pas ces paramètres à partir du magasin. Cela est utile lorsque l’ordinateur source exécute Windows XP, et que vous effectuez la migration à la fois vers Windows Vista® et vers Windows XP, car vous pouvez utiliser le même magasin pour les deux ordinateurs de destination.

  • Application : Paramètres d’une application.

  • Device : Paramètres d’un périphérique.

  • Documents : Spécifie des fichiers.

context

Non

(valeur par défaut = UserAndSystem)

Définit l’étendue de ce paramètre, autrement dit si ce composant doit être traité dans le contexte de l’utilisateur spécifique, dans tout le système d’exploitation, ou les deux.

L’étendue la plus grande possible est définie par l’élément <component>. Par exemple, si un élément <component> a User comme contexte et qu’un élément <rules> a UserAndSystem comme contexte, l’élément <rules> se comporte comme s’il avait User comme contexte. Si l’élément <rules> a System comme contexte, il se comporte comme si l’élément <rules> n’est pas présent.

  • User. Évalue le composant pour chaque utilisateur.

  • System. Évalue le composant une seule fois pour le système.

  • UserAndSystem. Évalue le composant pour l’ensemble du système d’exploitation et chaque utilisateur.

defaultSupported

Non

(valeur par défaut = TRUE)

Peut avoir la valeur TRUE, FALSE, YES ou NO. Si ce paramètre a la valeur FALSE (ou NO), le composant n’est pas migré sauf si l’ordinateur de destination contient un composant équivalent.

Si type="System" et defaultSupported="FALSE", les paramètres ne sont pas migrés sauf s’il existe un composant équivalent dans les fichiers .xml spécifiés sur la ligne de commande LoadState. Par exemple, le fichier MigSys.xml par défaut contient des composants pour lesquels type="System" et defaultSupported="FALSE". Si vous spécifiez ce fichier sur la ligne de commande ScanState, vous devez également le spécifier sur la ligne de commande LoadState pour les paramètres à migrer. En effet, l’outil LoadState doit détecter un composant équivalent. Autrement dit, le composant doit avoir le même ID d’URL de migration que celui défini dans le fichier.xml et un nom d’affichage identique, sinon l’outil LoadState ne migrera pas ces paramètres à partir du magasin. Cela est utile lorsque l’ordinateur source exécute Windows XP, et que vous effectuez la migration à la fois vers Windows Vista et vers Windows XP, car vous pouvez utiliser le même magasin pour les deux ordinateurs de destination.

hidden

 

Ce paramètre est à usage interne de l’Outil de migration utilisateur (USMT).

Pour obtenir un exemple, voir l’un des fichiers .xml de migration par défaut.

<condition>

Bien que l’élément <condition> soit pris en charge sous les éléments <detect>, <objectSet> et <addObjects>, nous vous recommandons de ne pas l’utiliser. Cet élément sera vraisemblablement déconseillé dans les versions futures de l’Outil de migration utilisateur (USMT), ce qui vous contraindra à réécrire vos scripts. Si vous avez besoin d’utiliser une condition dans les éléments <objectSet> et <addObjects>, nous vous recommandons d’utiliser l’élément <conditions> plus puissant qui vous permet de formuler des instructions booléennes complexes.

L’élément <condition> a un résultat booléen. Vous pouvez utiliser cet élément pour spécifier les conditions dans lesquelles l’élément parent sera évalué. Si l’une des conditions présentes renvoie la valeur FALSE, l’élément parent ne sera pas évalué.

  • Nombre d’occurrences : illimité

  • Éléments parents : <conditions>, <detect>, <objectSet>, <addObjects>

  • Éléments enfants : aucun

  • Fonctions d’assistance : Vous pouvez utiliser les Fonctions <condition> suivantes avec cet élément : DoesOSMatch, IsNative64Bit(), IsOSLaterThan, IsOSEarlierThan, DoesObjectExist, DoesFileVersionMatch, IsFileVersionAbove, IsFileVersionBelow, IsSystemContext, DoesStringContentEqual, DoesStringContentContain, IsSameObject, IsSameContent IsSameStringContent.

Syntaxe :

<condition negation="Yes|No">nom_script</condition>

Paramètre Obligatoire ? Valeur

negation

Non

Valeur par défaut = No

« Yes » inverse la valeur True/False de la condition.

nom_script

Oui

Script ayant été défini dans cette section de migration.

Par exemple :

Dans l’exemple de code ci-dessous, les éléments <condition>, A et B, sont reliés par l’opérateur AND car ils se trouvent dans des sections <conditions> distinctes. Exemple :

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

Toutefois, dans l’exemple de code ci-dessous, les éléments <condition>, A et B, sont reliés par l’opérateur OU car ils se trouvent dans la même section <conditions>.

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

Fonctions <condition>

Les fonctions <condition> renvoient une valeur booléenne. Vous pouvez utiliser ces éléments dans des conditions <addObjects>.

  • Fonctions de la version du système d’exploitation

  • Fonctions du contenu des objets

Fonctions de la version du système d’exploitation

  • DoesOSMatch

    Toutes les correspondances respectent la casse.

    Syntaxe : DoesOSMatch("type_système_exploitation","version_système_exploitation")

    Paramètre Obligatoire ? Valeur

    type_système_exploitation

    Oui

    La seule valeur autorisée pour ce paramètre est NT. Notez toutefois que vous devez définir ce paramètre pour que les fonctions <condition> marchent correctement.

    version_système_exploitation

    Oui

    La version majeure, la version mineure, le numéro de version et la version des disquettes de service, séparés par des points. Par exemple, 5.0.2600.Service Pack 1. Vous pouvez également indiquer une spécification partielle de la version avec un modèle. Par exemple, 5.0.*.

    Exemple :

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

  • IsNative64Bit

    La fonction IsNative64Bit renvoie TRUE si le processus de migration s’exécute comme un processus 64 bits natif ; autrement dit un processus s’exécutant sur un système 64 bits sans WOW (Windows on Windows). Sinon, FALSE est retourné.

  • IsOSLaterThan

    Toutes les comparaisons respectent la casse.

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

    Paramètre Obligatoire ? Valeur

    type_système_exploitation

    Oui

    Peut être 9x ou NT. Si type_système_exploitation ne correspond pas au type du système d’exploitation actuel, FALSE est retourné. Par exemple, si le système d’exploitation actuel est Windows NT et que type_système_exploitation a la valeur « 9x », le résultat est FALSE.

    version_système_exploitation

    Oui

    La version majeure, la version mineure, le numéro de version et la version des disquettes de service, séparés par des points. Par exemple, 5.0.2600.Service Pack 1. Vous pouvez également indiquer une spécification partielle de la version, mais aucun modèle n’est autorisé. Par exemple, 5.0.

    La fonction renvoie TRUE si le système d’exploitation actuel est ultérieur ou égal à version_système_exploitation.

    Exemple :

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

  • IsOSEarlierThan

    Toutes les comparaisons respectent la casse.

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

    Paramètre Obligatoire ? Valeur

    type_système_exploitation

    Oui

    Peut être 9x ou NT. Si type_système_exploitation ne correspond pas au type du système d’exploitation actuel, FALSE est retourné. Par exemple, si le système d’exploitation actuel est Windows NT et que type_système_exploitation a la valeur « 9x », le résultat est FALSE.

    version_système_exploitation

    Oui

    La version majeure, la version mineure, le numéro de version et la version des disquettes de service, séparés par des points. Par exemple, 5.0.2600.Service Pack 1. Vous pouvez également indiquer une spécification partielle de la version, mais aucun modèle n’est autorisé. Par exemple, 5.0.

    La fonction IsOSEarlierThan renvoie TRUE si le système d’exploitation actuel est antérieur à version_système_exploitation.

Fonctions du contenu des objets

  • DoesObjectExist

    La fonction DoesObjectExist renvoie TRUE s’il existe un objet correspondant au modèle d’emplacement Sinon, FALSE est retourné. Le modèle d’emplacement est développé avant la tentative d’énumération.

    Syntaxe : DoesObjectExist("type_objet","modèle_emplacement_encodé")

    Paramètre Obligatoire ? Valeur

    type_objet

    Oui

    Définit le type de l’objet. Peut être Fichier ou Registre.

    modèle_emplacement_encodé

    Oui

    Spécification d’emplacements. Les variables d’environnement sont autorisées.

    Pour obtenir un exemple de cet élément, voir le fichier MigApp.xml.

  • DoesFileVersionMatch

    La vérification du modèle ne respecte pas la casse.

    Syntaxe : DoesFileVersionMatch("emplacement_fichier_encodé","balise_version","valeur_version")

    Paramètre Obligatoire ? Valeur

    emplacement_fichier_encodé

    Oui

    Spécification d’emplacements pour le fichier qui sera vérifié. Les variables d’environnement sont autorisées.

    balise_version

    Oui

    Valeur de Balises de version valides qui sera vérifiée.

    valeur_version

    Oui

    Modèle de chaîne. Par exemple, « Microsoft* ».

    Exemple :

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

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

  • IsFileVersionAbove

    La fonction IsFileVersionAbove renvoie TRUE si la version du fichier est supérieure à valeur_version.

    Syntaxe : IsFileVersionAbove("emplacement_fichier_encodé","balise_version","valeur_version")

    Paramètre Obligatoire ? Valeur

    emplacement_fichier_encodé

    Oui

    Spécification d’emplacements pour le fichier qui sera vérifié. Les variables d’environnement sont autorisées.

    balise_version

    Oui

    Valeur de Balises de version valides qui sera vérifiée.

    valeur_version

    Oui

    Valeur avec laquelle effectuer la comparaison. Vous ne pouvez pas spécifier un modèle.

  • IsFileVersionBelow

    Syntaxe : IsFileVersionBelow("emplacement_fichier_encodé","balise_version","valeur_version")

    Paramètre Obligatoire ? Valeur

    emplacement_fichier_encodé

    Oui

    Spécification d’emplacements pour le fichier qui sera vérifié. Les variables d’environnement sont autorisées.

    balise_version

    Oui

    Valeur de Balises de version valides qui sera vérifiée.

    valeur_version

    Oui

    Valeur avec laquelle effectuer la comparaison. Vous ne pouvez pas spécifier un modèle.

  • IsSystemContext

    La fonction IsSystemContext renvoie TRUE si le contexte actuel est « System ». Sinon, FALSE est retourné.

    Syntaxe : IsSystemContext()

  • DoesStringContentEqual

    La fonction DoesStringContentEqual renvoie TRUE si la représentation sous forme de chaîne de l’objet donné est identique à StringContent.

    Syntaxe : DoesStringContentEqual("type_objet","emplacement_encodé","contenu_chaîne")

    Paramètre Obligatoire ? Valeur

    type_objet

    Oui

    Définit le type d’objet. Peut être File ou Registry.

    modèle_emplacement_encodé

    Oui

    Spécification d’emplacements pour l’objet qui sera examiné. Vous pouvez spécifier des variables d’environnement.

    contenu_chaîne

    Oui

    Chaîne avec laquelle effectuer la comparaison.

    Exemple :

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

    La fonction DoesStringContentContain renvoie TRUE si au moins une occurrence de chaîne_à_rechercher se trouve dans la représentation sous forme de chaîne de l’objet.

    Syntaxe : DoesStringContentContain("type_objet","emplacement_encodé","chaîne_à_rechercher")

    Paramètre Obligatoire ? Valeur

    type_objet

    Oui

    Définit le type d’objet. Peut être File ou Registry.

    modèle_emplacement_encodé

    Oui

    Spécification d’emplacements pour l’objet qui sera examiné. Vous pouvez spécifier des variables d’environnement.

    chaîne_à_rechercher

    Oui

    Chaîne qui sera recherchée dans le contenu de l’objet donné.

  • IsSameObject

    La fonction IsSameObject renvoie TRUE si les emplacements encodés donnés représentent le même objet physique. Sinon, FALSE est retourné.

    Syntaxe : IsSameObject("type_objet","emplacement_encodé_1","emplacement_encodé_2")

    Paramètre Obligatoire ? Valeur

    type_objet

    Oui

    Définit le type d’objet. Peut être File ou Registry.

    emplacement_encodé_1

    Oui

    Spécification d’emplacements pour le premier objet. Vous pouvez spécifier des variables d’environnement.

    emplacement_encodé_2

    Oui

    Spécification d’emplacements pour le deuxième objet. Vous pouvez spécifier des variables d’environnement.

    Exemple :

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

    La fonction IsSameContent renvoie TRUE si les objets donnés ont le même contenu. Sinon, FALSE est retourné. Le contenu sera comparé octet par octet.

    Syntaxe : IsSameContent("type_objet_1","emplacement_encodé_1","type_objet_2","emplacement_encodé_2")

    Paramètre Obligatoire ? Valeur

    type_objet_1

    Oui

    Définit le type du premier objet. Peut être Fichier ou Registre.

    emplacement_encodé_1

    Oui

    Spécification d’emplacements pour le premier objet. Vous pouvez spécifier des variables d’environnement.

    type_objet_2

    Oui

    Définit le type du deuxième objet. Peut être Fichier ou Registre.

    emplacement_encodé_2

    Oui

    Spécification d’emplacements pour le deuxième objet. Vous pouvez spécifier des variables d’environnement.

  • IsSameStringContent

    La fonction IsSameContent renvoie TRUE si les objets donnés ont le même contenu. Sinon, FALSE est retourné. Le contenu sera interprété en tant que chaîne.

    Syntaxe : IsSameStringContent("type_objet_1","emplacement_encodé_1","type_objet_2","emplacement_encodé_2")

    Paramètre Obligatoire ? Valeur

    type_objet_1

    Oui

    Définit le type du premier objet. Peut être File ou Registry.

    emplacement_encodé_1

    Oui

    Spécification d’emplacements pour le premier objet. Vous pouvez spécifier des variables d’environnement.

    type_objet_2

    Oui

    Définit le type du deuxième objet. Peut être File ou Registry.

    emplacement_encodé_2

    Oui

    Spécification d’emplacements pour le deuxième objet. Vous pouvez spécifier des variables d’environnement.

<conditions>

L’élément <conditions> renvoie un résultat booléen qui est utilisé pour spécifier les conditions dans lesquelles l’élément parent est évalué. L’Outil de migration utilisateur (USMT) évalue les éléments enfants, puis relie leurs résultats à l’aide des opérateurs AND ou OR, selon la valeur du paramètre operation.

  • Nombre d’occurrences : illimité à l’intérieur d’un autre élément <conditions>. Limité à une occurrence dans <detection>, <rules>, <addObjects> et <objectSet>

  • Éléments parents : <conditions>, <detection>, <environment>, <rules>, <addObjects> et <objectSet>

  • Éléments enfants : <conditions>, <condition>

Syntaxe :

<conditions operation="AND|OR">

</conditions>

Paramètre Obligatoire ? Valeur

operation

Non (valeur par défaut = AND)

Définit l’opération booléenne qui est réalisée sur les résultats obtenus à partir des éléments enfants.

L’exemple suivant est extrait du fichier MigApp.xml :

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

<content>

Vous pouvez utiliser l’élément <content> pour spécifier une liste de modèles d’objets afin d’obtenir un jeu d’objets à partir de l’ordinateur source. Chaque <objectSet> d’un élément <content> est évalué. Pour chaque liste de modèles d’objets obtenue, les objets qui correspondent à la liste sont énumérés et leur contenu est filtré en fonction du paramètre de filtre. Le tableau de chaînes obtenu est la sortie de l’élément <content>. Le script de filtrage renvoie un tableau d’emplacements. L’élément <objectSet> parent peut contenir plusieurs éléments <content> enfants.

  • Nombre d’occurrences : illimité

  • Éléments parents : <objectSet>

  • Éléments enfants : <objectSet>

  • Fonctions d’assistance : Vous pouvez utiliser les Fonctions <content> suivantes avec cet élément : ExtractSingleFile, ExtractMultipleFiles et ExtractDirectory.

Syntaxe :

<content filter="appel_script">

<content>

Paramètre Obligatoire ? Valeur

filter

Oui

Script suivi de n’importe quel nombre d’arguments de type chaîne qui sont séparés par une virgule et placés entre parenthèses. Par exemple, , MyScripts.AScript ("Arg1","Arg2").

Le script est appelé pour chaque objet énuméré par les jeux d’objets dans la règle <include>. Le script de filtrage retourne une valeur booléenne. Si la valeur de retour est TRUE, l’objet est migré. Si elle est FALSE, il ne l’est pas.

Fonctions <content>

Les fonctions suivantes génèrent des modèles à partir du contenu d’un objet. Ces fonctions sont appelées pour chaque objet que l’élément <ObjectSet> parent énumère.

  • ExtractSingleFile

    Si la valeur de Registre est une valeur MULTI-SZ, seul le premier segment est traité. Le modèle renvoyé est l’emplacement encodé d’un fichier qui doit exister sur le système. Si la spécification est correcte dans la valeur de Registre, mais que le fichier n’existe pas, cette fonction renvoie la valeur NULL.

    Syntaxe : ExtractSingleFile(séparateurs,indications_chemin_accès)

    Paramètre Obligatoire ? Valeur

    séparateurs

    Oui

    Liste des séparateurs possibles pouvant suivre la spécification de fichier dans ce nom de valeur du Registre. Par exemple, si le contenu est « C:\Windows\Notepad.exe,-2 », le séparateur est une virgule. Vous pouvez spécifier NULL.

    indications_chemin_accès

    Oui

    Liste de chemins d’accès supplémentaires, séparés par des points-virgules (;), où la fonction cherche un fichier correspondant au contenu actuel. Par exemple, si le contenu est « Notepad.exe » et que le chemin d’accès est la variable d’environnement %Path%, la fonction trouve Notepad.exe dans %windir% et retourne « c:\Windows [Notepad.exe] ». Vous pouvez spécifier NULL.

    Exemple :

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

    et

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

    La fonction ExtractMultipleFiles retourne plusieurs modèles, un pour chaque fichier qui se trouve dans le contenu de la valeur de Registre donnée. Si la valeur de Registre est une valeur MULTI-SZ, le séparateur MULTI-SZ est considéré par défaut comme un séparateur. Par conséquent, pour MULTI-SZ, l’argument <Separators> doit être NULL.

    Les modèles retournés sont les emplacements encodés des fichiers qui doivent exister sur l’ordinateur source. Si la spécification est correcte dans la valeur de Registre, mais que le fichier n’existe pas, il ne figurera pas dans la liste obtenue.

    Syntaxe : ExtractMultipleFiles(séparateurs,indications_chemins_accès)

    Paramètre Obligatoire ? Valeur

    séparateurs

    Oui

    Liste des séparateurs possibles pouvant suivre la spécification de fichier dans ce nom de valeur du Registre. Par exemple, si le contenu est « C:\Windows\Notepad.exe,-2 », le séparateur est une virgule. Ce paramètre doit être NULL lors du traitement de valeurs de Registre MULTI-SZ.

    indications_chemin_accès

    Oui

    Liste de chemins d’accès supplémentaires, séparés par des points-virgules (;), où la fonction cherche un fichier correspondant au contenu actuel. Par exemple, si le contenu est « Notepad.exe » et que le chemin d’accès est la variable d’environnement %Path%, la fonction trouve Notepad.exe dans %windir% et retourne « c:\Windows [Notepad.exe] ». Vous pouvez spécifier NULL.

  • ExtractDirectory

    La fonction ExtractDirectory renvoie un modèle qui est l’emplacement encodé d’un répertoire qui doit exister sur l’ordinateur source. Si la spécification est correcte dans la valeur de Registre, mais que le répertoire n’existe pas, cette fonction renvoie la valeur NULL. Si la valeur de Registre est une valeur MULTI-SZ, seul le premier segment est traité.

    Syntaxe : ExtractDirectory(séparateurs,niveaux_à_supprimer,suffixe_modèle)

    Paramètre Obligatoire ? Valeur

    séparateurs

    Non

    Liste des séparateurs pouvant suivre la spécification de fichier dans ce nom de valeur du Registre. Par exemple, si le contenu est « C:\Windows\Notepad.exe,-2 », le séparateur est une virgule. Ce paramètre doit être NULL pour les valeurs de Registre MULTI-SZ.

    niveaux_à_supprimer

    Oui

    Nombre de niveaux à supprimer à la fin de la spécification de répertoire. Utilisez cette fonction pour extraire un répertoire racine lorsque vous avez une valeur de Registre qui pointe à l’intérieur de ce répertoire racine dans un emplacement connu.

    suffixe_modèle

    Oui

    Modèle à ajouter à la spécification de répertoire. Par exemple, * [*].

    Exemple :

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

<contentModify>

L’élément <contentModify> modifie le contenu d’un objet avant son écriture sur l’ordinateur de destination. Pour chaque élément <contentModify> il peut y exister plusieurs éléments <objectSet>. Cet élément retourne le nouveau contenu de l’objet en cours de traitement.

  • Nombre d’occurrences : illimité

  • Éléments parents : <rules>

  • Éléments enfants requis : <objectSet>

  • Fonctions d’assistance : vous pouvez utiliser les Fonctions <contentModify> suivantes avec cet élément : ConvertToDWORD, ConvertToString, ConvertToBinary, KeepExisting, OffsetValue, SetValueByTable, MergeMultiSzContent et MergeDelimitedContent.

Syntaxe :

<contentModify script="appel_script">

<contentModify>

Paramètre Obligatoire ? valeur

script

Oui

Script suivi de n’importe quel nombre d’arguments de type chaîne qui sont séparés par une virgule et placés entre parenthèse. Par exemple, MyScripts.AScript ("Arg1","Arg2").

Le script est appelé pour chaque objet énuméré par les jeux d’objets dans la règle include. Le script de filtrage retourne une valeur booléenne. Si la valeur de retour est TRUE, l’objet est migré. Si elle est FALSE, il ne l’est pas.

Fonctions <contentModify>

Les fonctions suivantes modifient le contenu des objets au moment de leur migration. Ces fonctions sont appelées pour chaque objet que l’élément <ObjectSet> parent énumère.

  • ConvertToDWORD

    La fonction ConvertToDWORD convertit le contenu de valeurs de Registre énumérées par l’élément <ObjectSet> parent en valeurs DWORD. Par exemple, ConvertToDWORD convertit la chaîne « 1 » en valeur DWORD 0x00000001. Si la conversion échoue, la valeur de valeur_par_défaut_si_erreur est appliquée.

    Syntaxe : ConvertToDWORD(valeur_par_defaut_si_erreur)

    Paramètre Obligatoire ? Valeur

    valeur_par_défaut_si_erreur

    Non

    Valeur qui est écrite dans le nom de la valeur si la conversion échoue. Vous pouvez spécifier NULL, et 0 est écrit si la conversion échoue.

  • ConvertToString

    La fonction ConvertToString convertit en chaîne le contenu des valeurs de Registre qui correspondent à l’élément <ObjectSet> parent. Elle convertit par exemple la valeur DWORD 0x00000001 en chaîne « 1 ». Si la conversion échoue, la valeur de DefaultValueOnError est appliquée.

    Syntaxe : ConvertToString(valeur_par_défaut_si_erreur)

    Paramètre Obligatoire ? Valeur

    DefaultValueOnError

    Non

    Valeur qui est écrite dans le nom de la valeur si la conversion échoue. Vous pouvez spécifier NULL, et 0 est écrit si la conversion échoue.

    Exemple :

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

    La fonction ConvertToBinary convertit en type binaire le contenu des valeurs de Registre qui correspondent à l’élément <ObjectSet> parent.

    Syntaxe : ConvertToBinary ()

  • OffsetValue

    La fonction OffsetValue ajoute ou soustrait valeur de la valeur de l’objet migré, puis écrit le résultat dans la valeur de Registre sur l’ordinateur de destination. Par exemple, si l’objet migré est une valeur DWORD égale à 14 et si valeur est égale à « -2 », la valeur de Registre sera 12 sur l’ordinateur de destination.

    Syntaxe : OffsetValue(valeur)

    Paramètre Obligatoire ? Valeur

    Valeur

    Oui

    Représentation sous forme de chaîne d’une valeur numérique. Peut être positive ou négative. Par exemple, OffsetValue(2).

  • SetValueByTable

    La fonction SetValueByTable fait correspondre la valeur de l’ordinateur source à la table source. Si la valeur s’y trouve, la valeur équivalente dans la table de destination est appliquée. Si elle ne s’y trouve pas ou si la table de destination n’a pas de valeur équivalente, la valeur_par_défaut_si_erreur est appliquée.

    Syntaxe : SetValueByTable(table_source,table_destination,valeur_par_défaut_si_erreur)

    Paramètre Obligatoire ? Valeur

    table_source

    Oui

    Liste des valeurs (séparées par des virgules) qui sont acceptées pour les valeurs de Registre sources.

    table_destination

    Non

    Liste de valeurs traduites, séparées par des virgules.

    valeur_par_défaut_si_erreur

    Non

    La valeur est appliquée à l’ordinateur de destination si 1) la valeur de l’ordinateur source ne correspond pas à table_source ou 2) table_destination ne contient pas de valeur équivalente.

    Si valeur_par_défaut_si_erreur est NULL, la valeur n’est pas modifiée sur l’ordinateur de destination.

  • KeepExisting

    Vous pouvez utiliser la fonction KeepExisting en cas de conflit sur l’ordinateur de destination. Cette fonction conserve (et n’écrase pas) les attributs spécifiés pour l’objet qui se trouve sur l’ordinateur de destination.

    Syntaxe : KeepExisting("chaîne_option","chaîne_option","chaîne_option",…)

    Paramètre Obligatoire ? Valeur

    chaîne_option

    Oui

    chaîne_option peut prendre la valeur Security, TimeFields ou FileAttrib:lettre. Vous pouvez spécifier chacun des types de chaîne_option. Ne spécifiez pas plusieurs chaîne_option de la même valeur. La valeur la plus à droite serait alors conservée. Par exemple, ne spécifiez pas ("FileAttrib:H", "FileAttrib:R") car seul Lecture seule (R) sera évalué. Indiquez à la place ("FileAttrib:HR") pour que les attributs Masqué (H) et Lecture seule (R) soient tous deux conservés sur l’ordinateur de destination.

    • Security. Conserve le descripteur de sécurité de l’objet de destination s’il existe.

    • TimeFields. Conserve l’horodateur de l’objet de destination. Ce paramètre ne s’applique qu’aux fichiers.

    • FileAttrib:lettre. Conserve la valeur d’attribut de l’objet de destination (On ou OFF) pour le jeu d’attributs de fichiers spécifié. Ce paramètre ne s’applique qu’aux fichiers. Les attributs suivants ne respectent pas la casse, mais USMT ignore les valeurs non valides, répétées ou comprenant un espace après "FileAttrib:". Vous pouvez indiquer toute combinaison des attributs suivants :

      • A = Archive

      • C = Compressé

      • E = Chiffré

      • H = Masqué

      • I = Contenu non indexé

      • O = Hors connexion

      • R = Lecture seule

      • S = Système

      • T = Temporaire

  • MergeMultiSzContent

    La fonction MergeMultiSzContent fusionne le contenu MULTI-SZ des valeurs de Registre qui sont énumérées par l’élément <ObjectSet> parent avec le contenu des valeurs de Registre équivalentes qui existent déjà sur l’ordinateur de destination. Instruction et String suppriment ou ajoutent du contenu à la valeur MULTI-SZ obtenue. Les éléments en double sont supprimés.

    Syntaxe : MergeMultiSzContent (instruction,chaîne,instruction,chaîne,…)

    Paramètre Obligatoire ? Valeur

    instruction

    Oui

    Peut être l’une des suivantes :

    • Add. Ajoute la chaîne correspondante à la valeur MULTI-SZ obtenue si elle ne s’y trouve pas déjà.

    • Remove. Supprime la chaîne correspondante de la valeur MULTI-SZ obtenue.

    chaîne

    Oui

    Chaîne à ajouter ou supprimer.

  • MergeDelimitedContent

    La fonction MergeDelimitedContent fusionne le contenu des valeurs de Registre qui sont énumérées par l’élément <ObjectSet> parent avec le contenu des valeurs de Registre équivalentes qui existent déjà sur l’ordinateur de destination. Le contenu est considéré comme une liste d’éléments séparés par l’un des caractères du paramètre Délimiteurs. Les éléments en double seront supprimés.

    Syntaxe : MergeDelimitedContent(délimiteurs,instruction,chaîne,…)

    Paramètre Obligatoire ? Valeur

    délimiteurs

    Oui

    Caractère unique qui sera utilisé pour séparer le contenu de l’objet en cours de traitement. Le contenu sera traité comme une liste d’éléments séparés par les délimiteurs.

    Par exemple, « . » sépare la chaîne au niveau du point.

    instruction

    Oui

    Peut être l’une des suivantes :

    • Add. Ajoute chaîne à la valeur MULTI-SZ obtenue si elle ne s’y trouve pas déjà.

    • Remove. Supprime chaîne de la valeur MULTI-SZ obtenue.

    chaîne

    Oui

    Chaîne à ajouter ou supprimer.

<description>

L’élément <description> définit la description du composant mais n’affecte pas la migration.

  • Nombre d’occurrences : zéro ou une

  • Éléments parents : <component>

  • Éléments enfants : aucun

Syntaxe :

<description>description_composant</description>

Paramètre Obligatoire ? Valeur

description_composant

Oui

Description du composant.

L’exemple de code suivant montre comment l’élément <description> définit la description « My custom component » :

<description>My custom component<description>

<destinationCleanup>

L’élément <destinationCleanup> supprime des objets, comme des fichiers et des clés de Registre, de l’ordinateur de destination avant d’appliquer les objets de l’ordinateur source. Cet élément est uniquement évalué lorsque l’outil LoadState est exécuté sur l’ordinateur de destination. Autrement dit, cet élément est ignoré par l’outil ScanState.

Important

Utilisez cette option avec beaucoup de précautions car il supprime des objets de l’ordinateur de destination.

Pour chaque élément <destinationCleanup> il peut exister plusieurs éléments <objectSet>. Cet élément est souvent utilisé lorsqu’il manque une clé de Registre sur l’ordinateur source et que vous voulez vous assurer qu’un composant est migré. Dans ce cas, vous pouvez supprimer toutes les clés de Registre du composant avant de migrer les clés de Registre sources. Ainsi, si une clé est manquante sur l’ordinateur source, elle le sera aussi sur l’ordinateur de destination.

  • Nombre d’occurrences : illimité

  • Éléments parents : <rules>

  • Éléments enfants : <objectSet> (notez que l’ordinateur de destination supprimera tous les éléments enfants.)

Syntaxe :

<destinationCleanup filter=appel_script>

<destinationCleanup>

Paramètre Obligatoire ? Valeur

filter

Oui

Script suivi de n’importe quel nombre d’arguments de type chaîne qui sont séparés par une virgule et placés entre parenthèse. Par exemple, MyScripts.AScript ("Arg1","Arg2").

Le script est appelé pour chaque objet énuméré par les jeux d’objets dans la règle include. Le script de filtrage retourne une valeur booléenne. Si la valeur de retour est TRUE, l’objet est migré. Si elle est FALSE, il ne l’est pas.

Exemple :

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

<detect>

Bien que l’élément <detect> soit toujours pris en charge, nous vous recommandons de ne pas l’utiliser car il sera probablement déconseillé dans les versions futures de l’Outil de migration utilisateur (USMT). et vous devrez réécrire vos scripts. Utilisez plutôt l’élément <detection>.

L’élément <detect> permet de déterminer si le composant est présent sur un système. Si tous les éléments <detect> enfants d’un élément <detect> ont la valeur TRUE, alors l’élément <detect> a la valeur TRUE. Si l’un des éléments <detect> enfants a la valeur FALSE, alors son élément <detect> a la valeur FALSE. L’absence de section <detect> laisse supposer à l’Outil de migration utilisateur (USMT) que le composant est présent.

Pour chaque élément <detect>, il peut exister plusieurs éléments <condition> ou <objectSet>, qui sont reliés de façon logique par un opérateur OR. Si au moins un élément <condition> ou <objectSet> a la valeur TRUE, l’élément <detect> a de ce fait la valeur TRUE.

  • Nombre d’occurrences : illimité

  • Éléments parents : <detects>, <namedElements>

  • Éléments enfants requis : <condition>

  • Éléments enfants facultatifs : <objectSet>

Syntaxe :

<detect name="ID" context="User|System|UserAndSystem">

<detect>

Paramètre Obligatoire ? Valeur

name

Oui, si <detect> est un enfant de <namedElements>

Non, si <detect> est un enfant de <detects>

Quand ID est spécifié, aucun élément enfant n’est traité. Mais, tous les autres éléments <detect> portant le même nom et déclarés dans l’élément <namedElements> sont traités.

context

Non

(valeur par défaut = UserAndSystem)

Définit l’étendue de ce paramètre : si ce processus doit être traité dans le contexte de l’utilisateur spécifique, dans tout le système d’exploitation, ou les deux.

L’étendue la plus grande possible est définie par l’élément component. Par exemple, si un élément <component> a User comme contexte et qu’un élément <rules> a UserAndSystem comme contexte, l’élément <rules> se comporte comme s’il avait User comme contexte. Si l’élément <rules> a System comme contexte, il se comporte comme si l’élément <rules> n’était pas présent.

  • User. Évalue les variables pour chaque utilisateur.

  • System. Évalue les variables une seule fois pour le système.

  • UserAndSystem. Évalue les variables pour l’ensemble du système d’exploitation et chaque utilisateur.

Voir les exemples de l’élément <detection>.

<detects>

Bien que l’élément <detects> soit toujours pris en charge, nous vous recommandons de ne pas l’utiliser car il sera probablement déconseillé dans les versions futures de l’Outil de migration utilisateur (USMT) et vous devrez réécrire vos scripts. Nous vous conseillons d’utiliser l’élément <detection> si l’élément parent est <role> ou <namedElements>, et l’élément <conditions> si l’élément parent est <rules>. L’élément <detection> vous permet de formuler plus clairement des instructions booléennes complexes.

L’élément <detects> est un conteneur pour un ou plusieurs éléments <detect>. Si tous les éléments <detect> enfants d’un élément <detects> ont la valeur TRUE, alors l’élément <detects> a la valeur TRUE. Si l’un des éléments <detect> a la valeur FALSE, alors l’élément <detects> a la valeur FALSE. Si vous ne souhaitez pas écrire des éléments <detects> dans un composant, vous pouvez créer l’élément <detects> sous l’élément <namedElements>, puis y faire référence. L’absence de section <detects>, laisse supposer à l’Outil de migration utilisateur (USMT) que le composant est présent. Les résultats de chaque élément <detects> sont reliés par l’opérateur OR afin de former la règle utilisée pour détecter l’élément parent.

Syntaxe :

<detects name="ID" context="User|System|UserAndSystem">

</detects>

  • Nombre d’occurrences : illimité.

  • Éléments parents : <role>, <rules>, <namedElements>

  • Éléments enfants requis : <detect>

Paramètre Obligatoire ? Valeur

name

Oui, si <detects> est un enfant de <namedElements>

Non, si <detects> est un enfant de <role> ou <rules>

Quand ID est spécifié, aucun élément <detect> enfant n’est traité. Mais, tous les autres éléments <detects> portant le même nom et déclarés dans l’élément <namedElements> sont traités.

context

Non

(valeur par défaut = UserAndSystem)

Définit l’étendue de ce paramètre : si ce processus doit être traité dans le contexte de l’utilisateur spécifique, dans tout le système d’exploitation, ou les deux.

L’étendue la plus grande possible est définie par l’élément <component>. Par exemple, si un élément <component> a User comme contexte et qu’un élément <rules> a UserAndSystem comme contexte, l’élément <rules> se comporte comme s’il avait User comme contexte. Si l’élément <rules> a System comme contexte, il se comporte comme si l’élément <rules> n’était pas présent.

  • User. Évalue les variables pour chaque utilisateur.

  • System. Évalue les variables une seule fois pour le système.

  • UserAndSystem. Évalue les variables pour l’ensemble du système d’exploitation et chaque utilisateur.

Le paramètre de contexte est ignoré pour les éléments <detects> qui se trouvent à l’intérieur d’éléments <rules>.

L’exemple suivant est extrait du fichier MigApp.xml.

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

<detection>

L’élément <detection> est un conteneur pour un élément <conditions>. Le résultat des éléments <condition> enfants, situés sous l’élément <conditions>, détermine le résultat de cet élément. Si tous les éléments <conditions> enfants de l’élément <detection> ont la valeur TRUE, alors l’élément <detection> a la valeur TRUE. Si l’un des éléments <conditions> a la valeur FALSE, alors l’élément <detection> a la valeur FALSE.

Par ailleurs, les résultats de chaque section <detection> de l’élément <role> sont reliés par l’opérateur OR pour former la règle de détection de l’élément parent. Autrement dit, si l’une des sections <detection> a la valeur TRUE, l’élément <role> est traité. Sinon, l’élément <role> n’est pas traité.

Utilisez l’élément <detection> sous l’élément <namedElements> si vous ne voulez pas l’écrire dans un composant. Incluez ensuite une section <detection> correspondante sous l’élément <role> afin de contrôler si le composant est migré. L’absence de section <detection> pour un composant, laisse supposer à l’Outil de migration utilisateur (USMT) que ce composant est présent.

  • Nombre d’occurrences : illimité.

  • Éléments parents : <role>, <namedElements>

  • Éléments enfants : <conditions>

Syntaxe :

<detection name="ID" context="User|System|UserAndSystem">

</detection>

Paramètre Obligatoire ? Valeur

name

  • Oui, si <detection> est déclaré sous <namedElements>

  • Facultatif, s’il est déclaré sous <role>

Si l’élément <detection> est déclaré, son contenu est ignoré et le contenu de l’élément <detection> portant le même nom et qui est déclaré dans l’élément <namedElements> est évalué.

context

Non (valeur par défaut = UserAndSystem)

Définit l’étendue de ce paramètre : si ce composant doit être traité dans le contexte de l’utilisateur spécifique, dans tout le système d’exploitation, ou les deux.

  • User. Évalue le composant pour chaque utilisateur.

  • System. Évalue le composant une seule fois pour le système.

  • UserAndSystem. Évalue le composant pour l’ensemble du système d’exploitation et chaque utilisateur.

Exemple :

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

et

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

<displayName>

L’élément <displayName> est un champ requis dans chaque élément <component>.

  • Nombre d’occurrences : une fois pour chaque composant

  • Éléments parents : <component>

  • Éléments enfants : aucun

Syntaxe :

<displayName _locID="ID">nom_composant</displayName>

Paramètre Obligatoire ? Valeur

locID

Non

Ce paramètre est à usage interne de l’Outil de migration utilisateur (USMT). N’utilisez pas ce paramètre.

nom_composant

Oui

Nom du composant.

Exemple :

<displayName>Command Prompt settings</displayName>

<environment>

L’élément <environment> est un conteneur pour les éléments <variable> dans lequel vous pouvez définir les variables à utiliser dans votre fichier .xml. Toutes les variables d’environnement définies de cette façon seront privées. Autrement dit, elles ne seront disponibles que pour leurs composants enfants et le composant dans lequel elles ont été définies. Pour obtenir deux exemples de scénarios, voir Exemples.

  • Nombre d’occurrences : illimité

  • Éléments parents : <role>, <component>, <namedElements>

  • Éléments enfants requis : <variable>

  • Éléments enfants facultatifs : <conditions>

Syntaxe :

<environment name="ID" context="User|System|UserAndSystem">

</environment>

Paramètre Obligatoire ? Valeur

name

Oui, si <environment> est un enfant de <namedElements>

Non, si <environment> est un enfant de <role> ou <component>

Lorsque l’élément <environment> est déclaré en tant qu’enfant des éléments <role> ou <component>, si ID est déclaré, l’Outil de migration utilisateur (USMT) ignore le contenu de l’élément <environment> et le contenu de l’élément <environment> portant le même nom et déclaré dans l’élément <namedElements> est traité.

context

Non

(valeur par défaut = UserAndSystem)

Définit l’étendue de ce paramètre : si ce processus doit être traité dans le contexte de l’utilisateur spécifique, dans tout le système d’exploitation, ou les deux.

L’étendue la plus grande possible est définie par l’élément <component>. Par exemple, si un élément <component> a User comme contexte et qu’un élément <rules> a UserAndSystem comme contexte, l’élément <rules> se comporte comme s’il avait User comme contexte. Si l’élément <rules> a System comme contexte, il se comporte comme si <rules> n’était pas présent.

  • User. Évalue les variables pour chaque utilisateur.

  • System. Évalue les variables une seule fois pour le système.

  • UserAndSystem. Évalue les variables pour l’ensemble du système d’exploitation et chaque utilisateur.

Exemple de scénario 1

Dans ce scénario, vous voulez générer l’emplacement des objets au moment de l’exécution en fonction de la configuration de l’ordinateur de destination. Vous devez appliquer ce scénario si, par exemple, une application écrit des données dans son répertoire d’installation et que les utilisateurs peuvent installer l’application n’importe où sur l’ordinateur. Si l’application écrit une valeur de Registre hklm\software\companyname\install [path], puis met à jour cette valeur avec l’emplacement d’installation de l’application, le seul moyen pour vous de migrer correctement les données est de définir une variable d’environnement. Exemple :

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

Puis, vous pouvez utiliser une règle include comme suit. Vous pouvez utiliser les Fonctions <script> pour réaliser des tâches similaires.

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

Vous pouvez également filtrer les valeurs de Registre qui contiennent les données dont vous avez besoin. L’exemple suivant extrait la première chaîne (avant le séparateur « , ») de la valeur de Registre 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>

Exemple de scénario 2

Dans ce scénario, vous voulez migrer cinq fichiers nommés File1.txt, File2.txt etc. à partir de %SYSTEMDRIVE%\data\userdata\dir1\dir2\. Pour ce faire, vous devez disposer d’un fichier .xml contenant la règle <include> suivante :

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

Au lieu de taper le chemin d’accès cinq fois, vous pouvez créer une variable pour l’emplacement :

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

Vous pouvez ensuite spécifier la variable dans une règle <include> :

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

<exclude>

L’élément <exclude> détermine quels objets ne seront pas migrés, sauf si un élément <include> plus spécifique migre un objet. S’il existe un élément <include> et un élément <exclude> pour le même objet, celui-ci sera inclus. Pour chaque élément <exclude>, il peut exister plusieurs éléments <objectSet> enfants.

  • Nombre d’occurrences : illimité

  • Éléments parents : <rules>

  • Éléments enfants : <objectSet>

  • Fonctions d’assistance : vous pouvez utiliser les Fonctions de filtrage <include> et <exclude> suivantes avec cet élément : CompareStringContent, IgnoreIrrelevantLinks, AnswerNo, NeverRestore et SameRegContent.

Syntaxe :

<exclude filter="appel_script">

</exclude>

Paramètre Obligatoire ? Valeur

filter

Non

(valeur par défaut = No)

Script suivi de n’importe quel nombre d’arguments de type chaîne qui sont séparés par une virgule et placés entre parenthèses. Par exemple, MyScripts.AScript ("Arg1","Arg2").

Le script est appelé pour chaque objet énuméré par les jeux d’objets dans la règle include. Le script de filtrage retourne une valeur booléenne. Si la valeur de retour est TRUE, l’objet est migré. Si elle est FALSE, il ne l’est pas.

L’exemple suivant est extrait du fichier MigUser.xml :

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

<excludeAttributes>

Vous pouvez utiliser l’élément <excludeAttributes> pour déterminer quels paramètres associés à un objet ne sont pas migrés. En cas de conflits entre les éléments <includeAttributes> et <excludeAttributes>, le modèle le plus spécifique détermine quels paramètres ne sont pas migrés. Si un objet n’a pas d’élément <includeAttributes> ou <excludeAttributes>, tous ses paramètres sont migrés.

  • Nombre d’occurrences : illimité

  • Éléments parents : <rules>

  • Éléments enfants : <objectSet>

Syntaxe :

<excludeAttributes attributes="Security|TimeFields|Security,TimeFields">

</excludeAttributes>

Paramètre Obligatoire ? Valeur

attributs

Oui

Spécifie les attributs à exclure. Vous pouvez spécifier l’un des attributs suivants, ou les deux séparés par des guillemets. Par exemple, "Security","TimeFields" :

  • L’attribut Security peut prendre l’une des valeurs suivantes : Owner, Group, DACL ou SACL.

  • L’attribut TimeFields peut prendre l’une des valeurs suivantes : CreationTime, LastAccessTime et LastWrittenTime

Exemple :

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

<extensions>

L’élément <extensions> est un conteneur pour un ou plusieurs éléments <extension>.

  • Nombre d’occurrences : zéro ou une

  • Éléments parents : <component>

  • Éléments enfants requis : <extension>

Syntaxe :

<extensions>

<extensions>

<extension>

Vous pouvez utiliser l’élément <extension> pour spécifier des documents portant une extension particulière.

  • Nombre d’occurrences : illimité

  • Éléments parents : <extensions>

  • Éléments enfants : aucun

Syntaxe :

<extension>extension_nom_fichier</extension>

Paramètre Obligatoire ? Valeur

extension_nom_fichier

Oui

Extension de nom de fichier.

Par exemple, si vous voulez migrer tous les fichiers *.doc depuis l’ordinateur source, le fait de spécifier le code suivant sous l’élément <component> :

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

revient à spécifier le code suivant sous l’élément <rules> :

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

Pour obtenir un autre exemple d’utilisation de l’élément <extension>, voir l’exemple donné pour l’élément <excludeAttributes>.

<externalProcess>

Vous pouvez utiliser l’élément <externalProcess> pour exécuter une ligne de commande au cours du processus de migration. Par exemple , vous voudrez peut-être exécuter une commande à la fin du processus LoadState.

  • Nombre d’occurrences : illimité

  • Éléments parents : <rules>

  • Éléments enfants requis : <commandLine>

Syntaxe :

<externalProcess when="pre-scan|scan-success|post-scan|pre-apply|apply-success|post-apply">

</externalProcess>

Paramètre Obligatoire ? Valeur

when

Oui

Indique quand la ligne de commande doit s’exécuter. Cette valeur peut être l’une des suivantes :

  • pre-scan avant le début du processus d’analyse.

  • scan-success à l’issue du processus d’analyse, s’il a réussi.

  • post-scan à l’issue du processus d’analyse, qu’il ait réussi ou non.

  • pre-apply avant le début du processus d’application.

  • apply-success à l’issue du processus d’application, s’il a réussi.

  • post-apply à l’issue du processus d’application, qu’il ait réussi ou non.

Pour obtenir un exemple d’utilisation de l’élément <externalProcess>, voir l’exemple donné pour l’élément <excludeAttributes>.

<icon>

Il s’agit d’un élément interne de l’Outil de migration utilisateur (USMT). N’utilisez pas cet élément.

<include>

L’élément <include> détermine ce qui doit être migré, sauf s’il existe une règle <exclude> plus spécifique. Vous pouvez définir un script plus spécifique afin d’étendre la définition de ce que vous voulez collecter. Pour chaque élément <include>, il peut exister plusieurs éléments <objectSet>.

  • Nombre d’occurrences : illimité

  • Éléments parents : <rules>

  • Élément enfant requis : <objectSet>

  • Fonctions d’assistance : vous pouvez utiliser les Fonctions de filtrage <include> et <exclude> suivantes avec cet élément : CompareStringContent, IgnoreIrrelevantLinks, AnswerNo et NeverRestore.

Syntaxe :

<include filter="appel_script">

</include>

Paramètre Obligatoire ? Valeur

filter

Non.

Si ce paramètre n’est pas spécifié, tous les modèles qui se trouvent à l’intérieur de l’élément <ObjectSet> enfant seront traités.

Script suivi de n’importe quel nombre d’arguments de type chaîne qui sont séparés par une virgule et placés entre parenthèse. Par exemple, MyScripts.AScript ("Arg1","Arg2").

Le script est appelé pour chaque objet énuméré par les jeux d’objets dans la règle <include>. Le script de filtrage retourne une valeur booléenne. Si la valeur de retour est TRUE, l’objet est migré. Si elle est FALSE, il ne l’est pas.

L’exemple suivant est extrait du fichier MigUser.xml :

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

Fonctions de filtrage <include> et <exclude>

Les fonctions suivantes renvoient une valeur booléenne. Vous pouvez les utiliser pour migrer certains objets selon que certaines conditions sont remplies.

  • AnswerNo

    Ce filtre retourne toujours la valeur FALSE.

    Syntaxe : AnswerNo ()

  • CompareStringContent

    Syntaxe : CompareStringContent("contenu_chaîne","type_comparaison")

    Paramètre Obligatoire ? Valeur

    contenu_chaîne

    Oui

    Chaîne avec laquelle effectuer la comparaison.

    type_comparaison

    Oui

    Une chaîne. Utilisez l’une des valeurs suivantes :

    • Equal (ne respecte pas la casse). Cette fonction retourne la valeur TRUE si la représentation sous forme de chaîne de l’objet actuellement traité par le moteur de migration est identique à StringContent.

    • NULLor any other value. Cette fonction retourne la valeur TRUE si la représentation sous forme de chaîne de l’objet actuellement traité par le moteur de migration ne correspond pas à StringContent.

  • IgnoreIrrelevantLinks

    Ce filtre élimine les fichiers .lnk qui pointent vers un objet qui n’est pas valide sur l’ordinateur de destination. Notez que le filtrage a lieu sur l’ordinateur de destination, de sorte que tous les fichiers .lnk files seront enregistrées dans le magasin au cours de l’opération ScanState. Ils seront ensuite éliminés lorsque vous exécuterez l’outil LoadState.

    Syntaxe : IgnoreIrrelevantLinks ()

    Exemple :

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

    Vous pouvez utiliser cette fonction pour collecter les objets spécifiés sur l’ordinateur source, sans les migrer ensuite vers l’ordinateur de destination. Lorsque vous exécutez l’outil ScanState, cette fonction a la valeur TRUE. Lorsque vous exécutez l’outil LoadState, cette fonction a la valeur FALSE. Vous voudrez peut-être utiliser cette fonction pour vérifier la valeur d ’un objet sur l’ordinateur de destination, sans pour autant migrer cet objet vers l’ordinateur de destination.

    Syntaxe : NeverRestore()

    Dans l’exemple qui suit, HKCU\Control Panel\International [Locale] sera inclus dans le magasin, mais ne sera pas migré vers l’ordinateur de destination :

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

<includeAttributes>

Vous pouvez utiliser l’élément <includeAttributes> pour déterminer si certains paramètres associés à un objet seront migrés avec l’objet lui-même. En cas de conflits entre les éléments <includeAttributes> et <excludeAttributes>, le modèle le plus spécifique détermine quels paramètres seront migrés. Si un objet n’a pas d’élément <includeAttributes> ou <excludeAttributes>, tous ses paramètres seront migrés.

  • Nombre d’occurrences : illimité

  • Éléments parents : <rules>

  • Éléments enfants : <objectSet>

Syntaxe :

<includeAttributes attributes="Security|TimeFields|Security,TimeFields">

<includeAttributes>

Paramètre Obligatoire ? Valeur

attributs

Oui

Spécifie les attributs à inclure avec un objet migré. Vous pouvez spécifier l’un des attributs suivants, ou les deux séparés par des guillemets ; par exemple, "Security","TimeFields" :

  • L’attribut security peut avoir l’une des valeurs suivantes :

    • Owner. Le propriétaire de l’objet (SID).

    • Group. Le groupe principale de l’objet (SID).

    • DACL (Discretionary Access Control List, liste de contrôle d’accès discrétionnaire). Liste de contrôle d’accès qui est contrôlée par le propriétaire d’un objet et qui spécifie l’accès que peuvent avoir à l’objet des utilisateurs ou des groupes particuliers

    • SACL (System Access Control List, liste de contrôle d’accès système). Liste de contrôle d’accès qui contrôle la génération de messages d’audit pour les tentatives d’accès à un objet sécurisable. La capacité à obtenir ou définir la SACL d’un objet est contrôlée par un privilège généralement détenu par les administrateurs système.

  • L’attribut TimeFields peut avoir l’une des valeurs suivantes :

    • CreationTime. Indique quand le fichier ou le répertoire a été créé.

    • LastAccessTime. Indique quand le fichier a fait l’objet d’une opération de lecture ou d’écriture pour la dernière fois ou, s’il s’agit d’un fichier exécutable, quand il a été exécuté pour la dernière fois.

    • LastWrittenTime. Indique quand le fichier a fait l’objet d’une opération d’écriture pour la dernière fois ou quand il a été tronqué ou remplacé pour la dernière fois.

Pour obtenir un exemple d’utilisation de l’élément <includeAttributes>, voir l’exemple donné pour l’élément <excludeAttributes>.

<library>

Il s’agit d’un élément interne de l’Outil de migration utilisateur (USMT). N’utilisez pas cet élément.

<location>

L’élément <location> définit l’emplacement de l’élément <object>.

  • Nombre d’occurrences : une fois pour chaque élément <object>

  • Éléments parents : <object>

  • Éléments enfants : <script>

Syntaxe :

<location type="ID_type">emplacement_objet</location>

Paramètre Obligatoire ? Valeur

type

Oui

ID_type peut avoir la valeur Registry ou File.

emplacement_objet

Oui

Emplacement de l’objet.

L’exemple suivant est extrait du fichier MigApp.xml :

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

<locationModify>

Vous pouvez utiliser l’élément <locationModify> pour modifier l’emplacement et le nom d’un objet avant sa migration vers l’ordinateur de destination L’élément <locationModify> est traité uniquement lorsque l’outil LoadState est exécuté sur l’ordinateur de destination. En d’autres termes, cet élément est ignoré par l’outil ScanState. L’élément <locationModify> crée le dossier approprié sur l’ordinateur de destination s’il n’existe pas déjà.

Nombre d’occurrences : illimité

  • Éléments parents : <rules>

  • Élément enfant requis : <objectSet>

  • Fonctions d’assistance : vous pouvez utiliser les Fonctions <locationModify> suivantes avec cet élément : ExactMove, RelativeMove et Move.

Syntaxe :

<locationModify script="appel_script">

<locationModify>

Paramètre Obligatoire ? Valeur

script

Oui

Script suivi de n’importe quel nombre d’arguments de type chaîne qui sont séparés par une virgule et placés entre parenthèses. Par exemple, MyScripts.AScript ("Arg1","Arg2").

Le script est appelé pour chaque objet énuméré par les jeux d’objets dans la règle include. Le script de filtrage retourne une valeur booléenne. Si la valeur de retour est TRUE, l’objet est migré. Si elle est FALSE, il ne l’est pas.

L’exemple suivant est extrait du fichier MigApp.xml :

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

Fonctions <locationModify>

Les fonctions suivantes modifient l’emplacement des objets pendant leur migration lorsque l’élément <locationModify> est utilisé. Ces fonctions sont appelées pour chaque objet que l’élément <ObjectSet> parent énumère. L’élément <locationModify> crée le dossier approprié sur l’ordinateur de destination s’il n’existe pas déjà.

  • ExactMove

    La fonction ExactMove déplace tous les objets mis en correspondance par l’élément <ObjectSet> parent dans l’emplacement_encodé_objet donné. Vous pouvez utiliser cette fonction lorsque vous souhaitez déplacer un seul fichier vers un emplacement différent sur l’ordinateur de destination. Si l’emplacement de destination est un nœud, tous les objets sources correspondants seront écrits dans le nœud sans sous-répertoires. Si l’emplacement de destination est une feuille, le moteur de migration migrera tous les objets sources correspondants dans le même emplacement. En cas de collision, les algorithmes de collision habituels s’appliqueront.

    Syntaxe : ExactMove(emplacement_encodé_objet)

    Paramètre Obligatoire ? Valeur

    emplacement_encodé_objet

    Oui

    Spécification d’emplacements de destination de tous les objets sources.

    Exemple :

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

    La fonction Move déplace les objets vers un emplacement différent sur l’ordinateur de destination. Par ailleurs, cette fonction crée les sous-répertoires qui se trouvaient au-dessus de la CSIDL la plus longue dans le nom de l’objet source.

    Syntaxe : Move(racine_destination)

    Paramètre Obligatoire ? Valeur

    racine_destination

    Oui

    Emplacement vers lequel les objets sources seront déplacés. Si nécessaire, cette fonction crée les sous-répertoires qui étaient au-dessus de la CSIDL la plus longue dans le nom de l’objet source.

  • RelativeMove

    Vous pouvez utiliser la fonction RelativeMove pour collecter et déplacer des données. Notez que vous pouvez utiliser des variables d’environnement dans les nœuds sources et racines, mais qu’elles peuvent être définies différemment sur les ordinateurs source et de destination.

    Syntaxe : RelativeMove(racine_source,racine_destination)

    Paramètre Obligatoire ? Valeur

    SourceRoot

    Oui

    Emplacement depuis lequel les objets seront déplacés. Chacun des objets sources énumérés par l’élément <ObjectSet> parent qui ne se trouve pas à cet emplacement ne sera pas déplacé.

    racine_destination

    Oui

    Emplacement vers lequel les objets sources seront déplacés sur l’ordinateur de destination. Si nécessaire, cette fonction créera les sous-répertoires qui étaient au-dessus de racine_source.

    Exemple :

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

Il s’agit d’un élément interne de l’Outil de migration utilisateur (USMT). N’utilisez pas cet élément.

<manufacturer>

L’élément <manufacturer> définit le fabricant du composant mais n’affecte pas la migration.

  • Nombre d’occurrences : zéro ou une

  • Éléments parents : <component>

  • Éléments enfants : aucun

Syntaxe :

<manufacturer>nom</manufacturer>

Paramètre Obligatoire ? Valeur

Nom

Oui

Nom du fabricant du produit.

<merge>

L’élément <merge> détermine ce qui se passe en cas de collision. Une collision se produit lorsqu’un objet qui est migré est déjà présent sur l’ordinateur de destination. Si vous ne spécifiez pas cet élément, par défaut pour le Registre, l’objet source remplace l’objet de destination dans le Registre et par défaut pour les fichiers, le fichier source est renommé « nom_fichier_origine(1).extension_origine ». Cet élément indique seulement ce qui doit être fait en cas de collision. Il n’inclut aucun objet. Par conséquent, pour migrer des objets, vous devez spécifier des règles <include> avec l’élément <merge>. Si une collision est détectée lors du traitement d’un objet, l’Outil de migration utilisateur (USMT) sélectionne la règle de fusion la plus spécifique et l’applique pour résoudre le conflit. Par exemple, si une règle <merge> C:\* [*] est définie sur <sourcePriority> et une règle <merge> C:\subfolder\* [*] est définie sur <destinationPriority>, l’Outil de migration utilisateur (USMT) utilise la règle <destinationPriority> car elle est la plus spécifique.

Pour obtenir un exemple de cet élément, voir Comment l’élément <merge> fonctionne-t-il en cas de conflits sur l’ordinateur de destination ?.

  • Nombre d’occurrences : illimité

  • Éléments parents : <rules>

  • Élément enfant requis : <objectSet>

  • Fonctions d’assistance : vous pouvez utiliser les Fonctions <merge> suivantes avec cet élément : SourcePriority, DestinationPriority, FindFilePlaceByPattern, LeafPattern, NewestVersion, HigherValue() et LowerValue().

Syntaxe :

<merge script="appel_script">

<merge>

Paramètre Obligatoire ? Valeur

script

Oui

Script suivi de n’importe quel nombre d’arguments de type chaîne qui sont séparés par une virgule et placés entre parenthèse. Par exemple, MyScripts.AScript ("Arg1","Arg2").

Le script est appelé pour chaque objet énuméré par les jeux d’objets dans la règle <include>. Le script de filtrage retourne une valeur booléenne. Si la valeur de retour est TRUE, l’objet est migré. Si elle est FALSE, il ne l’est pas.

L’exemple suivant est extrait du fichier MigUser.xml :

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

Fonctions <merge>

Ces fonctions contrôlent la manière dont les collisions sont résolues.

  • DestinationPriority

    L’objet qui se trouve sur l’ordinateur de destination est conservé et l’objet sur l’ordinateur source n’est pas migré.

    Exemple :

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

    La fonction FindFilePlaceByPattern enregistre les fichiers avec un compteur à incrémentation si une collision se produit. Il s’agit d’une chaîne qui contient chacune des structures suivantes : <F>, <E>, <N> dans n’importe quel ordre.

    Syntaxe : FindFilePlaceByPattern(modèle_fichier)

    Paramètre Obligatoire ? Valeur

    modèle_fichier

    Oui

    • <F> sera remplacé pour le nom de fichier d’origine.

    • <N> sera remplacé par un compteur à incrémentation jusqu’à ce qu’il n’y ait plus de collision avec les objets sur l’ordinateur de destination.

    • <E> sera remplacé par l’extension de nom de fichier. d’origine.

    Par exemple, <F> (<N>).<E> renommera le fichier source MyDocument.doc en MyDocument (1).doc sur l’ordinateur de destination.

  • NewestVersion

    La fonction NewestVersion résout les conflits sur l’ordinateur de destination en fonction de la version du fichier.

    Syntaxe : NewestVersion(balise_version)

    Paramètre Obligatoire ? Valeur

    balise_version

    Oui

    Champ de version qui sera vérifié. Il peut s’agir de « FileVersion » ou « ProductVersion ». Le fichier dont la version balise_version est la plus élevée détermine quels conflits seront résolus en fonction de la version du fichier. Par exemple, si MonFichier.txt contient FileVersion 1 et le même fichier sur l’ordinateur de destination contient FileVersion 2, le fichier de l’ordinateur de destination sera conservé.

  • HigherValue()

    Vous pouvez utiliser cette fonction pour fusionner des valeurs de Registre. Les valeurs de Registre seront évaluées en tant que valeurs numériques ; celle ayant la valeur la plus élevée déterminera quelles valeurs de Registre seront fusionnées.

  • LowerValue()

    Vous pouvez utiliser cette fonction pour fusionner des valeurs de Registre. Les valeurs de Registre seront évaluées en tant que valeurs numériques ; celle ayant la valeur la plus faible déterminera quelles valeurs de Registre seront fusionnées.

  • SourcePriority

    Indique que l’objet doit être migré depuis l’ordinateur source puis être supprimé de cet ordinateur.

    Exemple :

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

<migration>

L’élément <migration> est le seul élément racine d’un fichier .xml de migration et est obligatoire Chaque fichier .xml doit avoir un ID d’URL de migration unique. L’ID d’URL de chaque fichier que vous spécifiez sur la ligne de commande doit être unique. En effet, l’Outil de migration utilisateur (USMT) utilise l’ID d’URL pour définir les composants dans le fichier. Par exemple, vous devez spécifier ce qui suit au début de chaque fichier : <CustomFileName> est le nom du fichier ; par exemple « CustomApp ».

  • Nombre d’occurrences : une

  • Éléments parents : aucun

  • Éléments enfants requis : <component>

  • Éléments enfants facultatifs : <library>, <namedElements>

Syntaxe :

<migration urlid="*ID_URL/*Nom">

<migration>

Paramètre Obligatoire ? Valeur

ID_URL

Oui

ID_URL est un identificateur de chaîne qui identifie de manière unique ce fichier .xml. Ce paramètre doit être un nom sans caractère deux-points, comme indiqué dans la spécification relative aux espaces de noms XML. Chaque fichier .xml de migration doit avoir un ID d’URL unique. Si deux fichiers .xml de migration ont le même ID d’URL, le second fichier .xml qui est spécifié sur la ligne de commande ne sera pas traité. Pour plus d’informations sur les espaces de noms XML, voir Utiliser les espaces de noms XML.

Nom

Non

Bien que non requis, il est conseillé d’utiliser le nom du fichier .xml.

L’exemple suivant est extrait du fichier MigApp.xml :

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

MigXMLHelper.FileProperties

Cette fonction d’assistance de filtrage peut être utilisée pour filtrer les fichiers de migration en fonction des attributs de taille de fichier et de date.

Fonctions d’assistance MigXMLHelper.FileProperties (propriété, opérateur, valeur_à_comparer)

Propriété

filesize, dateCreated, dateModified, dateAccessed

Opérateur

range, neq, lte, lt, eq, gte, gt

valeur_à_comparer

Valeur en cours de comparaison. Exemple :

Date : “2008/05/15-2005/05/17”, “2008/05/15”

Taille : valeur numérique terminée par B, KB, MB ou GB. “5GB”, “1KB-1MB”

<component context="System"  type="Application">
<displayName>File_size</displayName>
<role role="Data">

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

<namedElements>

Vous pouvez utiliser l’élément <namedElements> pour définir des éléments nommés. Vous pouvez utiliser ces éléments dans tout composant de votre fichier .xml. Pour obtenir un exemple d’utilisation de cet élément, voir le fichier MigApp.xml.

Syntaxe :

<namedElements>

</namedElements>

  • Nombre d’occurrences : illimité

  • Éléments parents : <migration>

  • Éléments enfants : <environment>, <rules>, <conditions>, <detection>, <detects>, <detect>

Pour obtenir un exemple de cet élément, voir le fichier MigApp.xml.

<object>

L’élément <object> représente un fichier ou une clé de Registre.

  • Nombre d’occurrences : illimité

  • Éléments parents : <addObjects>

  • Éléments enfants requis : <location>, <attributes>

  • Éléments enfants facultatifs : <bytes>

Syntaxe :

<object>

</object>

L’exemple suivant est extrait du fichier MigApp.xml :

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

<objectSet>

L’élément <objectSet> contient une liste de modèles d’objets ; par exemple des chemins d’accès aux fichiers, des emplacements de Registre, etc. Chaque élément <conditions> enfant sera tout d’abord évalué. Si tous les éléments <conditions> enfants renvoient FALSE, l’élément <objectSet> aura pour valeur un ensemble vide. Pour chaque élément parent, il peut exister plusieurs éléments <objectSet>.

  • Nombre d’occurrences : illimité

  • Éléments parents : <variable>, <content>, <include>, <exclude>, <merge>, <contentModify>, <locationModify>, <destinationCleanup>, <includeAttributes>, <excludeAttributes>, <unconditionalExclude>, <detect>

  • Éléments enfants requis : <script> ou <pattern>

  • Éléments enfants facultatifs : <content>, <conditions>, <condition>

Syntaxe :

<objectSet>

</objectSet>

L’exemple suivant est extrait du fichier MigUser.xml :

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

<path>

Il s’agit d’un élément interne de l’Outil de migration utilisateur (USMT). N’utilisez pas cet élément.

<paths>

Il s’agit d’un élément interne de l’Outil de migration utilisateur (USMT). N’utilisez pas cet élément.

<pattern>

Vous pouvez utiliser cet élément pour spécifier plusieurs objets. Vous pouvez spécifier plusieurs éléments <pattern> pour chaque élément <objectSet>. Ils seront ensuite combinés. Si vous spécifiez des fichiers vous voudrez peut-être plutôt utiliser GenerateDrivePatterns avec <script>. GenerateDrivePatterns est plus ou moins équivalent à une règle <pattern>, sans spécification de la lettre de lecteur. Par exemple, les deux lignes de code suivantes sont similaires :

<pattern type="File">C:\Folder\* [Sample.doc]</pattern>
<script>MigXmlHelper.GenerateDrivePatterns("\Folder\* [Sample.doc]","Fixed"</script>
  • Nombre d’occurrences : illimité

  • Éléments parents : <objectSet>

  • Éléments enfants : aucun mais chemin_accès[objet] doit être valide.

Syntaxe :

<pattern type="ID_type">chemin_accès[objet]</pattern>

Paramètre Obligatoire ? Valeur

type

Oui

ID_type peut avoir la valeur Registry, File ou Ini. Si ID_type a la valeur Ini, il ne peut y avoir d’espace entre chemin_accès et objet. Par exemple, ce qui suit est correct lorsque type="Ini" :

<pattern type="Ini">%WinAmp5InstPath%\Winamp.ini|WinAmp[keeponscreen]</pattern>

chemin_accès[objet]

Oui

Modèle de chemin d’accès valide au Registre ou au fichier, suivi d’au moins un espace, suivi de crochets [] contenant l’objet à migrer.

  • chemin_accès peut contenir le caractère générique astérisque (*) ou peut être une variable d’environnement. Vous ne pouvez pas utiliser le point d’interrogation comme caractère générique. Vous pouvez utiliser HKCU et HKLM pour faire référence respectivement à HKEY_CURRENT_USER et HKEY_LOCAL_MACHINE.

  • objet peut contenir le caractère générique astérisque (*). Mais vous ne pouvez pas utiliser la point d’interrogation comme caractère générique. Exemple :

    C:\Folder\ [*] énumère tous les fichiers qui se trouvent dans C:\chemin_accès mais pas les sous-dossiers de C:\Folder.

    C:\Folder\* [*] énumère tous les fichiers et sous-dossiers de C:\Folder.

    C:\Folder\ [*.mp3] énumère tous les fichiers .mp3 de C:\Folder.

    C:\Folder\ [Sample.doc] énumère uniquement le fichier Sample.doc qui se trouve dans C:\Folder.

    > [!NOTE] > Si vous migrez un fichier dont le nom contient un crochet ([ ou ]), vous devez insérer un accent circonflexe (^) juste devant pour qu’il soit valide. Par exemple, si un fichier est nommé « file].txt », vous devez spécifier <pattern type="File">c:\documents\mydocs [file^].txt]</pattern> et non <pattern type="File">c:\documents\mydocs [file].txt]</pattern>. >

Exemple :

  • Pour migrer une clé de Registre unique :

    <pattern type="Registry">HKLM\Software\Microsoft\Windows\CurrentVersion\Internet Settings\Cache [Persistent]</pattern>
    
  • Pour migrer le dossier EngineeringDrafts et tous les sous-dossiers du lecteur C: :

    <pattern type="File">C:\EngineeringDrafts\* [*]</pattern>
    
  • Pour migrer uniquement le dossier EngineeringDrafts du lecteur C:, sans les sous-dossiers :

    <pattern type="File"> C:\EngineeringDrafts\ [*]</pattern>
    
  • Pour migrer les fichier Sample.doc à partir de C:\EngineeringDrafts :

    <pattern type="File"> C:\EngineeringDrafts\ [Sample.doc]</pattern>
    
  • Pour migrer le fichier Sample.doc quel que soit son emplacement sur le lecteur C:, utilisez l’élément pattern de la façon suivante. Si le lecteur C: contient plusieurs fichiers portant le même nom, tous ces fichiers seront migrés.

    <pattern type="File"> C:\* [Sample.doc] </pattern>
    
  • Pour obtenir d’autres exemples d’utilisation de cet élément, voir Exclure des fichiers et des paramètres, Réacheminer les fichiers et les paramètres, Inclure des fichiers et des paramètres et Exemples de fichiers XML personnalisés.

<processing>

Vous pouvez utiliser cet élément pour exécuter un script à un moment précis au cours du processus de migration. Aucune valeur de retour n’est attendue des scripts que vous spécifiez et si des valeurs sont retournées, elles sont ignorées.

  • Nombre d’occurrences : illimité

  • Éléments parents : <rules>

  • Élément enfant requis : <script>

Syntaxe :

<processing when="pre-scan|scan-success|post-scan|pre-apply|apply-success|post-apply">

</processing>

Paramètre Obligatoire ? Valeur

when

Oui

Indique quand le script doit être exécuté. Cette valeur peut être l’une des suivantes :

  • pre-scan signifie avant le début du processus d’analyse.

  • scan-success signifie à l’issue du processus d’analyse, s’il a réussi.

  • post-scan signifie à l’issue du processus d’analyse, qu’il ait réussi ou non.

  • pre-apply signifie avant le début du processus d’application.

  • apply-success signifie à l’issue du processus d’application, s’il a réussi.

  • post-apply signifie à l’issue du processus d’application, qu’il ait réussi ou non.

<plugin>

Il s’agit d’un élément interne de l’Outil de migration utilisateur (USMT). N’utilisez pas cet élément.

<role>

L’élément <role> est requis dans un fichier .xml personnalisé. En spécifiant l’élément <role>, vous pouvez créer un composant concret. Le composant sera défini par les paramètres spécifiés au niveau de <component> et avec le rôle que vous spécifiez ici.

  • Nombre d’occurrences : chaque <component> peut avoir un, deux ou trois éléments <role> enfants.

  • Éléments parents : <component>, <role>

  • Éléments enfants requis : <rules>

  • Éléments enfants facultatifs : <environment>, <detection>, <component>, <role>, <detects>, <plugin>,

Syntaxe :

<role role="Container|Binaries|Settings|Data">

</role>

Paramètre Obligatoire ? Valeur

role

Oui

Définit le rôle du composant. Le rôle peut être l’un des suivants :

  • Container

  • Binaries

  • Settings

  • Data

Vous pouvez soit :

  1. Spécifier jusqu’à trois éléments <role> dans un élément <component> — un élément <role> « Binaries », un élément <role> « Settings » et un élément <role> « Data ». Ces paramètres ne changent pas le comportement de migration. Leur seul but est de vous aider à classer les paramètres que vous migrez. Vous pouvez imbriquer ces éléments <role>, mais les différents éléments imbriqués doivent avoir le même paramètre de rôle.

  2. Spécifier un élément <role> « Container » dans un élément <component>. Dans ce cas, vous ne pouvez pas spécifier des éléments <rules> enfants, juste d’autres éléments <component>. Et chaque élément <component> enfant doit avoir le même type que celui de l’élément <component> parent. Exemple :

<component context="UserAndSystem" type="Application">
  <displayName _locID="migapp.msoffice2003">Microsoft Office 2003</displayName> 
  <environment name="GlobalEnv" /> 
  <role role="Container">
    <detection name="AnyOffice2003Version" /> 
    <detection name="FrontPage2003" /> 
    <!-- 
 Office 2003 Common Settings 
  --> 
    <component context="UserAndSystem" type="Application">

L’exemple suivant est extrait du fichier MigUser.xml. Pour obtenir d’autres exemples, voir le fichier MigApp.xml :

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

<rules>

L’élément <rules> est requis dans un fichier .xml personnalisé. Cet élément contient des règles qui seront exécutées au cours de la migration si l’élément <component> parent est sélectionné, sauf si l’élément <conditions> enfant, s’il est présent, a la valeur FALSE. Pour chaque élément <rules>, il peut exister plusieurs éléments <rules> enfants.

  • Nombre d’occurrences : illimité

  • Éléments parents : <role>, <rules>, <namedElements>

  • Éléments enfants requis : <include>

  • Éléments enfants facultatifs : <rules>, <exclude>, <unconditionalExclude>,<merge>, <contentModify>, <locationModify>, <destinationCleanup>, <addObjects>, <externalProcess>, <processing>, <includeAttributes>, <excludeAttributes>, <conditions>, <detects>

Syntaxe :

<rules name="ID" context="User|System|UserAndSystem">

</rules>

Paramètre Obligatoire ? Valeur

name

Oui, si <rules> est un enfant de <namedElements>

Non, si <rules> est un enfant d’un autre élément

Quand ID est spécifié, aucun élément enfant n’est traité. Mais, tous les autres éléments <rules> portant le même nom et déclarés dans l’élément <namedElements> sont traités.

context

Non

(valeur par défaut = UserAndSystem)

Définit l’étendue de ce paramètre : si ce composant doit être traité dans le contexte de l’utilisateur spécifique, dans tout le système d’exploitation, ou les deux.

L’étendue la plus grande possible est définie par l’élément component. Par exemple, si un élément <component> a User comme contexte et qu’un élément <rules> a UserAndSystem comme contexte, l’élément <rules> se comporte comme s’il avait User comme contexte. Si l’élément <rules> a System comme contexte, il se comporte comme si <rules> n’était pas présent.

  • User. Évalue les variables pour chaque utilisateur.

  • System. Évalue les variables une seule fois pour le système.

  • UserAndSystem. Évalue les variables pour l’ensemble du système d’exploitation et chaque utilisateur.

L’exemple suivant est extrait du fichier MigUser.xml :

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

<script>

La valeur de retour qui est requise par <script> dépend de l’élément parent.

Nombre d’occurrences : une pour <variable>, illimité pour <objectSet> et<processing>

Éléments parents : <objectSet>, <variable>, <processing>

Éléments enfants : aucun

Syntaxe et fonctions d’assistance :

  • Syntaxe générale : <script>script_avec_arguments</script>

  • Vous pouvez utiliser Fonctions <script> lorsque <script> se trouve dans <variable>.

    Syntaxe : <script>MigXmlHelper.GetStringContent("type_objet","modèle_emplacement_encodé", "développer_contenu")</script>

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

  • Vous pouvez utiliser Fonctions <script> lorsque <script> se trouve dans <objectSet>.

    Syntaxe : <script>MigXmlHelper.GenerateUserPatterns("type_objet","modèle_emplacement_encodé","traiter_utilisateur_actuel")</script>

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

  • Vous pouvez utiliser Fonctions <script> lorsque <script> se trouve dans <objectSet>.

    Syntaxe : <script>MigXmlHelper.GenerateDrivePatterns("segment_modèle","type_lecteur")</script>

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

  • Vous pouvez utiliser les Fonctions <script> avec les éléments <script> qui se trouvent dans des éléments <processing> : AskForLogoff, ConvertToShortFileName, KillExplorer, RemoveEmptyDirectories, RestartExplorer, RegisterFonts, StartService, StopService, SyncSCM.

    Syntaxe : <script>MigXmlHelper.script_exécution</script>

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

Paramètre Obligatoire ? Valeur

script_avec_arguments

Oui

Script suivi de n’importe quel nombre d’arguments de type chaîne qui sont séparés par une virgule et placés entre parenthèse. Par exemple, MyScripts.AScript ("Arg1","Arg2").

Le script est appelé pour chaque objet énuméré par les jeux d’objets dans la règle <include>. Le script de filtrage retourne une valeur booléenne. Si la valeur de retour est TRUE, l’objet est migré. Si elle est FALSE, il ne l’est pas.

La valeur de retour qui est requise par <script> dépend de l’élément parent.

  • Si l’élément <script> est utilisé à l’intérieur de l’élément <variable>, la valeur de retour doit être une chaîne.

  • S’il est utilisé à l’intérieur de l’élément <objectSet>, la valeur de retour doit être un tableau à deux dimensions de chaînes.

  • S’il est utilisé à l’intérieur de l’élément <location>, la valeur de retour doit être un emplacement valide qui correspond au type d’attribut de <location>. Par exemple, si <location type="File">, l’élément <script> enfant, s’il est spécifié, doit être un emplacement de fichier valide.

    > [!NOTE] > Si vous migrez un fichier dont le nom contient un crochet ([ ou ]), vous devez insérer un accent circonflexe (^) juste devant pour qu’il soit valide. Par exemple, si un fichier est nommé « file].txt », vous devez spécifier <pattern type="File">c:\documents\mydocs [file^].txt]</pattern> et non <pattern type="File">c:\documents\mydocs [file].txt]</pattern>. >

Exemples :

Pour migrer le fichier Sample.doc à partir de n’importe quel lecteur de l’ordinateur source, utilisez <script> de la manière suivante. Si plusieurs fichiers portent le même nom, tous seront migrés.

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

Pour obtenir d’autres exemples d’utilisation de cet élément, voir Exclure des fichiers et des paramètres, Réacheminer les fichiers et les paramètres, Réacheminer les fichiers et les paramètres et Exemples de fichiers XML personnalisés.

Fonctions <script>

Vous pouvez utiliser les fonctions suivantes avec l’élément <script> :

  • Fonctions de génération de chaînes et de modèles

  • Scripts d’exécution simples

Fonctions de génération de chaînes et de modèles

Ces fonctions retournent une chaîne ou un modèle.

  • GetStringContent

    Vous pouvez utiliser GetStringContent avec les éléments <script> qui se trouvent dans des éléments <variable>. Si possible, cette fonction retourne la représentation sous forme de chaîne de l’objet donné. Sinon, NULL est retourné. Pour les objets de type fichier, cette fonction retourne toujours NULL.

    Syntaxe : GetStringContent("type_objet","modèle_emplacement_encodé", "développer_contenu")

    Paramètre Obligatoire ? Valeur

    type_objet

    Oui

    Type de l’objet. Peut être Registry ou Ini (pour un fichier .ini).

    modèle_emplacement_encodé

    Oui

    • Si le type d’objet est Registry, modèle_emplacement_encodé doit être un chemin d’accès au Registre valide. Par exemple, HKLM\SOFTWARE\MyKey[].

    • Si le type d’objet est Ini, modèle_emplacement_encodé doit être au format suivant :

      chemin_accès_fichier_Ini|nom_section[nom_paramètre]

    développer_contenu

    Non (valeur par défaut = TRUE)

    Peut être TRUE ou FALSE. Si la valeur est FALSE, l’emplacement donné ne sera pas développé avant d’être retourné.

    Exemple :

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

    La fonction GenerateDrivePatterns parcourt tous les lecteurs disponibles et sélectionne ceux qui correspondent au type de lecteur demandé. Elle concatène ensuite les lecteurs sélectionnés avec la partie finale de segment_modèle pour former un modèle de fichier entièrement encodé. Par exemple, si segment_modèle a la valeur Path [file.txt] et type_lecteur la valeur Fixed, cette fonction génère C:\Path [file.txt] et d’autres modèles s’il existe d’autres lecteurs fixes en plus de C:. Vous ne pouvez pas spécifier de variables d’environnement avec cette fonction. Vous pouvez utiliser GenerateDrivePatterns avec des éléments <script> qui se trouvent dans des éléments <objectSet> eux-mêmes dans des éléments <include>/<exclude>.

    Syntax : GenerateDrivePatterns("segment_modèle","type_lecteur")

    Paramètre Obligatoire ? Valeur

    segment_modèle

    Oui

    Suffixe d’un modèle encodé. Ce suffixe sera concaténé avec une spécification de lecteur, comme « c:\ », pour former un Spécification d’emplacements complet. Par exemple, « * [*.doc] ». segment_modèle ne peut pas être une variable d’environnement.

    type_lecteur

    Oui

    Type de lecteur pour lequel les modèles doivent être générés. Vous pouvez spécifier l’une des valeurs suivantes :

    • Fixed

    • CDROM

    • Removable

    • Remote

    Pour obtenir un exemple de cet élément, voir le dernier composant du fichier MigUser.xml.

  • GenerateUserPatterns

    Cette fonction parcourt tous les utilisateurs qui sont migrés, à l’exclusion de l’utilisateur actuellement traité si <traiter_utilisateur_actuel> a la valeur FALSE et développe le modèle spécifié dans le contexte de chaque utilisateur. Par exemple, si les utilisateurs A, B et C ont des profils dans C:\Documents and Settings), en appelant GenerateUserPattens('File','%userprofile% [*.doc]','TRUE'), la fonction d’assistance génère les trois modèles suivants :

    • « "C:\Documents and Settings\A\* [*.doc] »

    • « "C:\Documents and Settings\B\* [*.doc] »

    • « C:\Documents and Settings\C\* [*.doc] »

    Syntaxe : GenerateUserPatterns("type_objet","modèle_emplacement_encodé","traiter_utilisateur_actuel")

    Paramètre Obligatoire ? Valeur

    type_objet

    Oui

    Définit le type de l’objet. Peut être Fichier ou Registre.

    modèle_emplacement_encodé

    Oui

    Spécification d’emplacements. Les variables d’environnement sont autorisées.

    traiter_utilisateur_actuel

    Oui

    Peut être TRUE ou FALSE. Indique si les modèles doivent être générés pour l’utilisateur actuel.

    Exemple :

    Si GenerateUserPattens(’File’,’%userprofile% [*.doc]’,’FALSE’) est appelé alors que l’Outil de migration utilisateur (USMT) traite l’utilisateur A, cette fonction génère alors des modèles pour les utilisateurs B et C. Vous pouvez utiliser cette fonction d’assistance pour créer des règles complexes. Par exemple, pour migrer tous les fichiers .doc à partir de l’ordinateur source ; mais si l’utilisateur X n’est pas migré, ne migrez alors aucun fichier .doc à partir du profil de l’utilisateur X.

    Un exemple de code pour ce scénario est fourni ci-dessous. Le premier élément <rules> migre tous les fichiers .doc sur l’ordinateur source à l’exception de ceux qui se trouvent dans C:\Documents and Settings. Le deuxième élément <rules> migre tous les fichiers .doc à partir de C:\Documents and Settings à l’exception des fichiers .doc qui se trouvent dans les profils des autres utilisateurs. Dans la mesure où le second élément <rules> sera traité dans chaque contexte utilisateur migré, le résultat final sera le comportement souhaité. Le résultat final est celui qui était attendu.

    <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

Cette fonction d’assistance appelle l’outil de recherche de documents qui recherche dans le système tous les fichiers pouvant être migrés. Cet outil peut être appelé dans le contexte système ou utilisateur de manière à cibler la recherche.

Paramètre Obligatoire ? Valeur

analyser_fichiers_programme

Non (valeur par défaut = FALSE)

Peut être TRUE ou FALSE. Le paramètre analyser_fichiers_programme détermine si l’outil de recherche de documents analyse ou non le répertoire Program Files pour collecter les extensions de nom de fichier enregistrées pour les applications connues. Par exemple, si ce paramètre a la valeur TRUE, les fichiers .jpg du répertoire Photoshop seront découverts et migrés, si .jpg est une extension de fichier enregistrée de Photoshop.

inclure_modèles

Non (valeur par défaut = TRUE)

Peut être TRUE ou FALSE. TRUE génère des modèles include et peut être ajouté sous l’élément <include>. FALSE génère des modèles exclude et peut être ajouté sous l’élément <exclude>.

lecteur_système

Non (valeur par défaut = FALSE)

Peut être TRUE ou FALSE. Si ce paramètre a la valeur TRUE, tous les modèles sont limités au lecteur système.

 <!-- This component migrates data in user context -->
  <component type="Documents" context="User">
    <displayName>MigDocUser</displayName>
    <role role="Data">
      <rules>
        <include filter='MigXmlHelper.IgnoreIrrelevantLinks()'>
          <objectSet>
            <script>MigXmlHelper.GenerateDocPatterns ("false")</script>
          </objectSet>
        </include>
        <exclude>
          <objectSet>
           <script>MigXmlHelper.GenerateDocPatterns ("false", "false", "false")</script>
          </objectSet>
        </exclude>
      </rules>
    </role>
  </component>

Scripts d’exécution simples

Les scripts suivants n’ont aucune valeur de retour. Vous pouvez utiliser les erreurs suivantes avec des éléments <script> qui se trouvent dans des éléments <processing>.

  • AskForLogoff(). Invite l’utilisateur à se déconnecter à la fin de la migration. Exemple :

         <processing when="apply-success">
              <script>MigXmlHelper.AskForLogoff()</script>
         </processing>
    
  • ConvertToShortFileName(emplacement_encodé_Registre). Si emplacement_encodé_Registre est le chemin d’accès complet d’un fichier existant, cette fonction attribue au fichier son nom court et met à jour la valeur de Registre.

  • KillExplorer(). Arrête Explorer.exe pour le contexte utilisateur actuel. Cela permet d’accéder à certaines clés et certains fichiers qui restent ouverts lorsque Explorer.exe est en cours d’exécution. Exemple :

         <processing when="pre-apply">
              <script>MigXmlHelper.KillExplorer()</script>
         </processing>
    
  • RegisterFonts(emplacement_encodé_fichier). Enregistre la police donnée ou toutes les polices dans le répertoire indiqué. Exemple :

    <processing when="apply-success">
    <script>MigXmlHelper.RegisterFonts("%CSIDL_COMMON_FONTS%")</script>
    </processing>
    
  • **RemoveEmptyDirectories (modèle_encodé_répertoire).**Supprime tout répertoire vide qui correspond à modèle_encodé_répertoire sur l’ordinateur de destination.

  • RestartExplorer(). Redémarre Explorer.exe à la fin de la migration. Exemple :

         <processing when="post-apply">
              <script>MigXmlHelper.RestartExplorer()</script>
         </processing>
    
  • StartService (nom_service, param_facultatif_1, param_facultatif2,…). Démarre le service identifié par nom_service. nom_service est la sous-clé dans HKLM\System\CurrentControlSet\Services qui contient les données du service donné. Les paramètres facultatifs, le cas échéant, seront transmis à l’API de StartService. Pour plus d’informations, visitez ce site Web de Microsoft.

  • StopService (nom_service). Arrête le service identifié par nom_service. nom_service est la sous-clé dans HKLM\System\CurrentControlSet\Services qui contient les données du service indiqué.

  • SyncSCM(nom_court_service). Lit la valeur de Start dans le Registre (HKLM\System\CurrentControlSet\Services\ServiceShortName [Start]) après qu’elle a été modifiée par le moteur de migration, puis synchronise Service Control Manager (SCM) avec la nouvelle valeur.

<text>

Vous pouvez utiliser l’élément <text> afin de définir une valeur pour toute variable d’environnement qui se trouve à l’intérieur de l’un des fichiers .xml de migration.

  • Nombre d’occurrences : une fois dans chaque élément <variable>.

  • Éléments parents : <variable>

  • Éléments enfants : aucun

Syntaxe :

<text>texte_normal</text>

Paramètre Valeur

texte_normal

Cela est interprété comme du texte normal.

Exemple :

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

<unconditionalExclude>

L’élément <unconditionalExclude> exclut de la migration les fichiers et valeurs de Registre spécifiés, sans tenir compte des autres règles include présentes dans les fichiers .xml de migration ou dans le fichier Config.xml. Les objets déclarés ici ne sont pas migrés car cet élément est prioritaire sur toutes les autres règles. Par exemple, même s’il existe des règles <include> explicites pour inclure les fichiers .mp3, si vous spécifiez de les exclure avec cette option, ils ne seront pas migrés.

Utilisez cet élément si vous voulez exclure tous les fichiers .mp3 de l’ordinateur source. Ou, si vous sauvegardez C:\UserData à l’aide d’une autre méthode, vous pouvez exclure l’intégralité du dossier de la migration. Vous devez toutefois procéder avec précaution lors de l’utilisation de cet élément, car si une application a besoin d’un fichier que vous excluez, elle risque de ne pas fonctionner correctement sur l’ordinateur de destination.

  • Nombre d’occurrences : illimité.

  • Éléments parents : <rules>

  • Éléments enfants : <objectSet>

Syntaxe :

<unconditionalExclude></unconditionalExclude>

Le fichier .xml suivant exclut tous les fichiers .mp3 de la migration. Pour obtenir d’autres exemples d’utilisation de cet élément, voir Exclure des fichiers et des paramètres.

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

<variable>

L’élément <variable> est requis dans un élément <environment>. Pour chaque élément <variable>, il doit exister un élément <objectSet>, <script> ou <text>. Le contenu de l’élément <variable> attribue une valeur de texte à la variable d’environnement. Trois options sont disponibles pour cet élément :

  1. Si l’élément <variable> contient un élément <text>, la valeur de l’élément <variable> est la valeur de l’élément <text>.

  2. Si l’élément <variable> contient un élément <script> et si l’appel du script produit une chaîne non null, la valeur de l’élément <variable> est le résultat de l’appel du script.

  3. Si l’élément <variable> contient un élément <objectSet> et si l’évaluation de l’élément <objectSet> produit au moins un modèle d’objet, la valeur du premier objet qui correspond au modèle d’objet résultant est la valeur de l’élément <variable>.

  • Nombre d’occurrences : illimité

  • Éléments parents : <environment>

  • Éléments enfants requis : <text>, <script> ou <objectSet>

Syntaxe :

<variable name="ID" remap=TRUE|FALSE>

</variable>

Paramètre Obligatoire ? Valeur

name

Oui

ID est une valeur de type chaîne qui est le nom utilisé pour référencer la variable d’environnement. Nous vous recommandons de faire commencer ID par le nom du composant afin d’éviter les collisions d’espaces de noms. Par exemple, si le nom de votre composant est MyComponent et que vous souhaitez une variable qui soit le chemin d’installation de votre composant, vous pouvez spécifier MyComponent.InstallPath.

remap

Non (valeur par défaut = FALSE)

Indique si cette variable d’environnement doit être évaluée en tant que variable d’environnement de remappage. Les objets situés dans un chemin d’accès qui se trouve en dessous de la valeur de cette variable d’environnement sont automatiquement déplacés vers l’emplacement pointé par la variable d’environnement sur l’ordinateur de destination.

L’exemple suivant est extrait du fichier MigApp.xml :

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

<version>

L’élément <version> définit la version du composant mais n’affecte pas la migration.

  • Nombre d’occurrences : zéro ou une

  • Éléments parents : <component>

  • Éléments enfants : aucun

Syntaxe :

<version>version_composant</version>

Paramètre Obligatoire ? Valeur

version_composant

Oui

La version du composant, qui peut contenir des modèles.

Exemple :

<version>4.*</version>

<windowsObjects>

L’élément <windowsObjects> est réservé à l’usage interne de l’Outil de migration utilisateur (USMT). N’utilisez pas cet élément.

Annexe

Spécification d’emplacements

  • Spécification d’emplacements encodés. L’emplacement encodé utilisé dans toutes les fonctions d’assistance est une représentation non ambiguë sous forme de chaîne du nom d’un objet Il se compose de la partie nœud, suivie de façon facultative de la feuille mise entre crochets. Cela fait une nette différence entre les nœuds et les feuilles.

    Par exemple, spécifiez le fichier C:\Windows\Notepad.exe de la manière suivante : c:\Windows[Notepad.exe]. De même, spécifiez le fichier C:\Windows\System32 de la manière suivante : c:\Windows\System32. (Notez l’absence de crochets [].)

    La représentation du Registre est très similaire. La valeur par défaut d’une clé de Registre est représentée par des crochets vides ([]). Par exemple, la valeur par défaut de la clé de Registre HKLM\SOFTWARE\MyKey est HKLM\SOFTWARE\MyKey[].

  • Spécification de modèles d’emplacements. Un modèle d’emplacement est spécifié de la même manière qu’un emplacement réel. La seule différence est que la partie nœud et la partie feuille acceptent toutes deux des modèles. Toutefois, un modèle au niveau du nœud ne s’étend pas à la feuille.

    Par exemple, le modèle c:\Windows\* met en correspondance le répertoire Windows et tous ses sous-répertoires. Par contre, il ne met pas en correspondance les fichiers de ces répertoires. Pour mettre également en correspondance les fichiers, vous devez spécifier c:\Windows\*[*].

Fonctions internes de l’Outil de migration utilisateur (USMT)

Les fonctions suivantes sont réservées à l’usage interne de l’Outil de migration utilisateur (USMT). Ne les utilisez pas dans un fichier .xml.

  • AntiAlias

  • ConvertScreenSaver

  • ConvertShowIEOnDesktop

  • ConvertToOfficeLangID

  • MigrateActiveDesktop

  • MigrateAppearanceUPM

  • MigrateDisplayCS

  • MigrateDisplaySS

  • MigrateIEAutoSearch

  • MigrateMouseUPM

  • MigrateSoundSysTray

  • MigrateTaskBarSS

  • SetPstPathInMapiStruc

Balises de version valides

Vous pouvez utiliser les balises de version suivantes avec différentes fonctions d’assistance :

  • « CompanyName »

  • « FileDescription »

  • « FileVersion »

  • « InternalName »

  • « LegalCopyright »

  • « OriginalFilename »

  • « ProductName »

  • « ProductVersion »

Les balises de version suivantes contiennent des valeurs qui peuvent être comparées :

  • « FileVersion »

  • « ProductVersion »

Voir aussi

Autres ressources

Informations de référence XML de l’outil USMT