Freigeben über


Beispiele für benutzerdefinierte XML-Dateien

Beispiel 1: Migrieren einer nicht unterstützten Anwendung

Die folgende Vorlage ist eine Vorlage für die Abschnitte, die zum Migrieren von Anwendungen erforderlich sind. Die Vorlage ist für sich genommen nicht funktionsfähig, kann aber zum Schreiben benutzerdefinierter .xml-Datei verwendet werden.

Vorlage

Erweitern Sie diese Option, um die Beispiel 1-Anwendungsvorlage anzuzeigen:
<migration urlid="http://www.microsoft.com/migration/1.0/migxmlext/migtestapp">
  <component type="Application">
    <!-- Name of the application -->
    <displayName>Some Application</displayName>
    <!-- Specify whether the environment variables exist in the context of user or system or both -->
    <environment context="System">
      <!-- Create the environment variables -->
      <variable name="myVar1">
        <!-- Simple text value assignment to a variable -->
        <text>value</text>
      </variable>
      <variable name="myAppExePath">
        <!-- Make a call to in-built helper function to get a value from a reg key and assign that value to the variable -->
        <script>MigXMLHelper.GetStringContent("Registry","HKLM\Software\MyApp\Installer [EXEPATH]")</script>
      </variable>
    </environment>
    <role role="Settings">
      <detects>
        <!-- All of these checks must be true for the component to be detected -->
        <detect>
          <!-- Make a call to in-built helper function to check if an object exists or not -->
          <condition>MigXMLHelper.DoesObjectExist("Registry","HKLM\Software\MyApp [win32_version]")</condition>
        </detect>
        <detect>
          <!-- Either of these checks must be true for the component to be detected -->
          <!-- Make a call to in-built helper function to check if a file version matches or not -->
          <condition>MigXMLHelper.DoesFileVersionMatch("%MyAppExePath%","ProductVersion","8.*")</condition>
          <condition>MigXMLHelper.DoesFileVersionMatch("%MyAppExePath%","ProductVersion","9.*")</condition>
        </detect>
      </detects>
      <!-- Describe the rules that will be executed during migration of this component and the context, whether user, system or both -->
      <rules context="User">
        <!-- Delete objects specified in the object set on the destination computer before applying source objects -->
        <destinationCleanup>
          <!-- Describe the pattern for the list of objects to be deleted -->
          <objectSet>
            <pattern type="Registry">HKCU\Software\MyApp\Toolbar\* [*]</pattern>
            <pattern type="Registry">HKCU\Software\MyApp\ListView\* [*]</pattern>
            <pattern type="Registry">HKCU\Software\MyApp [ShowTips]</pattern>
          </objectSet>
        </destinationCleanup>
        <!-- Specify which set of objects should be migrated -->
        <include>
          <!-- Describe the pattern for the list of objects to be included -->
          <objectSet>
            <pattern type="Registry">HKCU\Software\MyApp\Toolbar\* [*]</pattern>
            <pattern type="Registry">HKCU\Software\MyApp\ListView\* [*]</pattern>
            <pattern type="Registry">HKCU\Software\MyApp [ShowTips]</pattern>
          </objectSet>
        </include>
        <!-- Specify which set of objects should not be migrated -->
        <exclude>
          <!-- Describe the pattern for the list of objects to be excluded from migration -->
          <objectSet>
            <pattern type="Registry">HKCU\Software\MyApp [Display]</pattern>
          </objectSet>
        </exclude>
      </rules>
    </role>
  </component>
</migration>

Beispiel 2: Migrieren des Ordners "Meine Videos"

Das folgende Beispiel ist eine benutzerdefinierte .xml Datei namens CustomFile.xml , die den Ordner Videos für alle Benutzer migriert, wenn der Ordner auf dem Quellcomputer vorhanden ist.

  • Beispielbedingung: Überprüft, ob der Ordner Videos auf dem Quellcomputer vorhanden ist:

    <condition>MigXmlHelper.DoesObjectExist("File","%CSIDL_MYVIDEO%")</condition>

  • Beispielfilter: Filtert die Verknüpfungen im Ordner Videos heraus, die auf dem Zielcomputer nicht aufgelöst werden:

    <include filter='MigXmlHelper.IgnoreIrrelevantLinks()'>

    Dieser Filter hat keine Auswirkungen auf Dateien, die keine Verknüpfungen sind. Wenn beispielsweise im Ordner Videos auf dem Quellcomputer eine Verknüpfung vorhanden ist, die auf C:\Folder1zeigt, wird diese Verknüpfung nur migriert, wenn C:\Folder1 auf dem Zielcomputer vorhanden ist. Alle anderen Dateien, z. B. .mp3 Dateien, werden jedoch ohne Filterung migriert.

  • Beispielmuster: Migriert den Ordner Videos für alle Benutzer:

    <pattern type="File">%CSIDL_MYVIDEO%* [*]</pattern>

XML-Datei

Erweitern Sie , um beispiel 2 XML-Datei anzuzeigen:
<?xml version="1.0" encoding="UTF-8"?>
<migration urlid="http://www.microsoft.com/migration/1.0/migxmlext/CustomFile">
<component type="Documents" context="User">
        <displayName>My Video</displayName>
        <role role="Data">
            <detects>           
                <detect>
                    <condition>MigXmlHelper.DoesObjectExist("File","%CSIDL_MYVIDEO%")</condition>
                </detect>
            </detects>
            <rules>
                <include filter='MigXmlHelper.IgnoreIrrelevantLinks()'>
                    <objectSet>
                        <pattern type="File">%CSIDL_MYVIDEO%\* [*]</pattern>
                    </objectSet>
                </include>
           </rules>
        </role>
    </component>
</migration>

Beispiel 3: Migrieren von Dateien und Registrierungsschlüsseln

Die Beispielmuster beschreiben das Verhalten im folgenden Beispiel .xml Datei.

  • Beispielmuster: Migriert alle Instanzen der Datei Usmttestfile.txt aus allen Unterverzeichnissen unter %ProgramFiles%\USMTTestFolder:

    <pattern type="File">%ProgramFiles%\USMTTestFolder* [USMTTestFile.txt]</pattern>

  • Beispielmuster: Migriert das gesamte Verzeichnis unter %ProgramFiles%\USMTDIRTestFolder:

    <pattern type="File">%ProgramFiles%\USMTDIRTestFolder* []</pattern>

  • Beispielmuster: Migriert alle Instanzen von MyKey unter HKCU\Software\USMTTESTKEY:

    <pattern type="Registry">HKCU\Software\USMTTESTKEY* [MyKey]</pattern>

  • Beispielmuster: Migriert die gesamte Registrierungsstruktur unter HKLM\Software\USMTTESTKEY:

    <pattern type="Registry">HKLM\Software\USMTTESTKEY* []</pattern>

XML-Datei

Erweitern Sie , um die XML-Datei von Beispiel 3 anzuzeigen:
<migration urlid="http://www.microsoft.com/migration/1.0/migxmlext/testfilemig">
  <component type="Application" context="System">
   <displayName>File Migration Test</displayName>
   <role role="Data">
    <rules context="System">
     <include>
      <objectSet>
        <pattern type="File">%ProgramFiles%\USMTTestFolder\* [USMTTestFile.txt]</pattern>
        <pattern type="File">%ProgramFiles%\USMTDIRTestFolder\* [*]</pattern>
      </objectSet>
    </include>
   </rules>
  </role>
</component>
<component type="System">
  <displayName>Registry Migration Test</displayName>
  <role role="Settings">
   <rules context="UserAndSystem">
     <include>
      <objectSet>
          <pattern type="Registry">HKCU\Software\USMTTESTKEY\* [MyKey]</pattern>
          <pattern type="Registry">HKLM\Software\USMTTESTKEY\* [*]</pattern>
      </objectSet>
     </include>
   </rules>
  </role>
 </component>
</migration>

Beispiel 4: Migrieren bestimmter Ordner von verschiedenen Speicherorten

Das Verhalten für diese benutzerdefinierte .xml-Datei wird in den <displayName> Tags im Code beschrieben.

XML-Datei

Erweitern Sie , um die XML-Datei für Beispiel 4 anzuzeigen:
<migration urlid="http://www.microsoft.com/migration/1.0/migxmlext/test">

<component type="Documents" context="System">
  <displayName>Component to migrate all Engineering Drafts subfolders without documents in this folder </displayName>
  <role role="Data">
    <rules>
         <include>
            <objectSet>
                 <pattern type="File"> C:\EngineeringDrafts\* [*]</pattern>
            </objectSet>
          </include>
         <exclude>
            <objectSet>
                 <pattern type="File"> C:\EngineeringDrafts\ [*]</pattern>
            </objectSet>
         </exclude>
    </rules>
  </role>
</component>

<component type="Documents" context="System">
  <displayName>Component to migrate all user documents except Sample.doc</displayName>
  <role role="Data">
    <rules>
          <include>
            <objectSet>
                 <pattern type="File"> C:\UserDocuments\* [*]</pattern>
            </objectSet>
          </include>
          <exclude>
             <objectSet>
                 <pattern type="File"> C:\UserDocuments\ [Sample.doc]</pattern>
             </objectSet>
          </exclude>
    </rules>
  </role>
</component>

<component type="Documents" context="System">
  <displayName>Component to migrate all Requests folders on any drive on the computer </displayName>
  <role role="Data">
    <rules>
         <include>
            <objectSet>
                 <script>MigXmlHelper.GenerateDrivePatterns ("\Requests\* [*] ", "Fixed")</script>            
                 <script>MigXmlHelper.GenerateDrivePatterns ("*\Requests\* [*] ", "Fixed")</script>            
            </objectSet>
          </include>
    </rules>
  </role>
</component>

<component type="Documents" context="System">
  <displayName>Component to migrate all Presentations folder from any location on the C: drive </displayName>
  <role role="Data">
    <rules>
         <include>
            <objectSet>                 
                 <pattern type="File"> C:\*\Presentations\* [*]</pattern>
                 <pattern type="File"> C:\Presentations\* [*]</pattern>
           </objectSet>
          </include>
    </rules>
  </role>
</component>
</migration>