BDD 2007: Migration des Benutzerstatus – Handbuch für das Feature-Team

Anhang C: Konvertieren von Steuerungsdateien aus früheren USMT-Versionen

Veröffentlicht: 30. Nov 2006

In früheren USMT-Versionen wurden .inf-Dateien zur Steuerung der Erfassung und Migration von Dokumenten und Einstellungen verwendet. Viele Unternehmen haben auf Grundlage dieser Technologie Zeit und Ressourcen in Migrationen investiert. Zwischen den beiden Steuerungsdateiformaten gibt es bedeutende Unterschiede. Mithilfe entsprechender Kenntnisse darüber, wie USMT von den einzelnen Formaten gesteuert wird, können Entwickler jedoch XML-Dateien erstellen, mit denen sich die Effekte der früheren Migrationen replizieren lassen.

Auf dieser Seite

Einführung in .inf-Dateiformate von USMT Einführung in .inf-Dateiformate von USMT
Suchen äquivalenter Einstellungen in XML Suchen äquivalenter Einstellungen in XML
Erstellen einer vollständigen Migration in XML Erstellen einer vollständigen Migration in XML

Einführung in .inf-Dateiformate von USMT

Entwickler älterer .inf-Dateien sind mit dem Format und der Funktion der Befehle in diesen Dateien sicher vertraut. Es folgt eine kurze Übersicht über die Abschnitte und die Syntax von .inf-Dateien.

Abschnitte einer USMT-.inf-Datei

USMT-.inf-Dateien sind segmentiert. Die Art der durchgeführten Migration bildet die Grundlage für die Segmentierung. Es folgen einige Beispiele für die entstehenden Abschnitte:

  • [Applications]. Im Abschnitt „Applications“ sind die Anwendungseinstellungen definiert, die von USMT migriert werden.

  • [System Settings]. Im Abschnitt „System Settings“ werden Systemkonfigurationseinstellungen wie Schriftarten und Eingabehilfen migriert.

  • [User Settings]. In diesem Abschnitt werden Benutzereinstellungen wie Desktopkonfiguration, Bildschirmschonereinstellungen und Favoriten migriert.

  • [Files and Folders]. In diesem Abschnitt werden Dateien und Ordner migriert. Migrationen können für bestimmte Dateien, bestimmte Ordner sowie für Dateien und Ordner auf Grundlage von Mustern oder der Dateierweiterung festgelegt werden.

Es existieren darüber hinaus weitere Abschnitte. Eine vollständige Liste finden Sie in der Hilfe zur früheren USMT-Version.

Syntax einer USMT-.inf-Datei

USMT-.inf-Dateien verwenden Befehle zur Steuerung der USMT-Vorgänge. Im Folgenden werden Beispiele für diese Befehle aufgelistet. Jedem Befehl sind einige Beispiele für die .inf-Befehlssyntax nachgestellt.

[CopyFiles]

Der Befehl CopyFiles gibt Dateien an, die bei der Migration kopiert werden müssen. Dieser Befehl hat folgende Syntax:

Path\FileName.ext, NewRootPath

Es können Platzhalter sowie Umgebungsvariablen verwendet werden. Zur Migration von .doc-Dateien aus dem Ordner „My Documents“ (Eigene Dateien) in den gleichen Ordner auf dem neuen System verwenden Sie folgende Syntax:

[Copy This State]
CopyFiles=WordDocs
[WordDocs]
%CSIDL_PERSONAL%\*\*.doc, %CSIDL_PERSONAL%
[CopyFilesFiltered]

Dieser Befehl kopiert nur Dateien, die für das neue System relevant sind. Wenn das Feature-Team für Benutzerstatusmigration beispielsweise Programmverknüpfungen auf den Desktop eines neuen Systems kopiert und ein Link auf eine Datei verweist, die nicht migriert wird, wird die entsprechende .lnk-Datei von CopyFilesFiltered nicht kopiert. Es folgt ein Beispiel für die CopyFilesFiltered-Syntax:

[Copy This State]
CopyFiles=Shortcuts
[Shortcuts]
%CSIDL_DESKTOP%\*.lnk, %CSIDL_DESKTOP%

Hinweis   Der Befehl CopyFilesFiltered führt diesen Filtervorgang während der Ausführung von Loadstate.exe aus.

[AddReg]

Die Syntax für den Befehl AddReg lautet:

RegRoot\RegKey\RegSubKey [RegValue]

Von diesem Befehl werden Registrierungseinträge auf dem Zielcomputer gemäß der Syntax des Befehls migriert. Zum Migrieren eines Eintrags, der beim Start automatisch den Editor ausführt, verwenden Sie folgende Syntax:

Hinweis Einige Teile des folgenden Codeausschnitts wurden zur besseren Lesbarkeit in mehrere Zeilen aufgeteilt. Diese müssen als eine Zeile eingegeben werden.

[Copy This User State]
AddReg=RunNotepad AddReg
[RunNotepad AddReg]
HKCU\Software\Microsoft\Windows\CurrentVersion\Run
\Notepad.exe C:\Windows\system32\notepad.exe

Hinweis   Der angegebene Registrierungsschlüssel kann nur dann erfolgreich migriert werden, wenn er im Quellsystem existiert.

[DelReg]

Die Syntax für den Befehl DelReg lautet:

RegRoot\RegKey\RegSubKey [RegValue]

Von diesem Befehl werden Registrierungseinträge auf dem Zielcomputer gemäß der Syntax des Befehls entfernt. Zum Erstellen eines Eintrags, von dem das obige AddReg-Beispiel entfernt wird, verwenden Sie folgende Syntax:

Hinweis Einige Teile des folgenden Codeausschnitts wurden zur besseren Lesbarkeit in mehrere Zeilen aufgeteilt. Diese müssen als eine Zeile eingegeben werden.

[Copy This User State]
DelReg=RunNotepad DelReg
[RunNotepad DelReg]
HKCU\Software\Microsoft\Windows\CurrentVersion\Run
\Notepad.exe C:\Windows\system32\notepad.exe

Hinweis   Durch diesen Befehl wird der definierte Registrierungsschlüssel nicht aktiv gelöscht. Der Schlüssel wird lediglich von der Migration ausgeschlossen.

In der USMT-Hilfedatei sind viele weitere Befehle definiert. Eine vollständige Liste finden Sie in der Hilfe zur früheren USMT-Version.

Suchen äquivalenter Einstellungen in XML

XML-Formate weichen erheblich von der abschnittsbasierten Formatierung von .inf-Dateien ab. XML-Abschnitte werden durch die Tags <headings> und </headings> definiert. Auch die Syntax innerhalb der Einstellungen unterscheidet sich. Eine vollständige Übersicht ist im USMT-Installationsordner enthalten. Detaillierte Informationen zur XML-Syntax finden Sie in USMT.chm im Abschnitt „USMT XML Elements Reference“ (auf Englisch). In diesem Abschnitt werden Beispiele aus dem Abschnitt „Syntax einer USMT-.inf-Datei“ (siehe oben) in XML konvertiert, um diesen Prozess zu veranschaulichen.

[CopyFiles]

Im folgenden Beispiel werden alle .doc-Dateien aus dem Ordner „My Documents“ (Eigene Dateien) eines Systems in den Ordner „My Documents“ auf einem anderen System migriert:

<component type="Documents" context="User">
<displayName>User Data</displayName>
 <role role="Data">
  <rules>
  <!-- Migrate all .doc from My Documents to the new system -->
   <include>
    <objectSet>
     <pattern type="File">%CSIDL_PERSONAL%\[*.doc]</pattern>
    </objectSet>
   </include>
  </rules>
 </role>
</component>

[CopyFilesFiltered]

Das Feature-Team für Benutzerstatusmigration kann Dateien filtern. Hierfür wird zunächst versucht, die Bedingung zu erkennen, unter der die Teammitglieder die Datei migrieren würden. Ist die Bedingung erkannt, finden nachfolgend Migrationsvorgänge statt. Andernfalls ignoriert Loadstate.exe die nachfolgenden Anweisungen untergeordneter Elemente (siehe Liste 5).

Liste 5. Verwenden von CopyFilesFiltered zum Filtern von Dateien

Hinweis Einige Teile des folgenden Codeausschnitts wurden zur besseren Lesbarkeit in mehrere Zeilen aufgeteilt. Diese müssen als eine Zeile eingegeben werden.

<component type="Documents" context="User">
<displayName>User Data</displayName>
 <role role="Data">
  <detects>
   <detect>
<condition>MigXmlHelper.DoesObjectExist
("File","%CSIDL_PERSONAL%\MyFile.Doc")</condition>
   </detect>
  </detects>
  <rules>
  <!-- Migrate specific .lnk from My Documents to new system -->
   <include>
    <objectSet>
     <pattern type="File">%CSIDL_DESKTOP%\[MyFile.lnk]</pattern>
    </objectSet>
   </include>
  </rules>
 </role>
</component>

Hinweis   Im obigen Beispiel muss die Bedingung Detect für die nachfolgenden Rules-Anweisungen wahr sein, damit diese verarbeitet werden.

[AddReg]

Vom XML-Code in Liste 6 wird eine bestimmte Registrierungseinstellung migriert.

Liste 6. Migrieren einer bestimmten Registrierungseinstellung

Hinweis Einige Teile des folgenden Codeausschnitts wurden zur besseren Lesbarkeit in mehrere Zeilen aufgeteilt. Diese müssen als eine Zeile eingegeben werden.

<migration urlid="http://www.microsoft.com/migration/1.0/migxmlext/test">
 <component type="Application">
 <displayName>Component to migrate only registry value string</displayName>
  <role role="Settings">
   <rules context="UserAndSystem">
    <include>
     <objectSet>
      <pattern type="Registry">HKCU\Software\Microsoft
      \Windows\CurrentVersion\Run [Notepad.exe]</pattern>
     </objectSet>
    </include>
   </rules>
  </role>
 </component>
</migration>

Hinweis   Wenn der vom Skript in Liste 5 angegebene Registrierungsschlüssel im Quellsystem nicht existiert, wird er auf dem Zielsystem nicht erstellt.

[DelReg]

Im Beispiel in Liste 7 wird die DelReg-Aktion der früheren .inf-Datei repliziert. (Beachten Sie das Paar <exclude>...</exclude>.)

Liste 7. DelReg-Befehl

Hinweis Einige Teile des folgenden Codeausschnitts wurden zur besseren Lesbarkeit in mehrere Zeilen aufgeteilt. Diese müssen als eine Zeile eingegeben werden.

<migration urlid="http://www.microsoft.com/migration/1.0/migxmlext/test">
 <component type="Application">
 <displayName>Component to migrate only registry value string</displayName>
  <role role="Settings">
   <rules context="UserAndSystem">
    <exclude>
     <objectSet>
      <pattern type="Registry">HKCU\Software\Microsoft
      \Windows\CurrentVersion\Run [Notepad.exe]</pattern>
     </objectSet>
    </exclude>
   </rules>
  </role>
 </component>
</migration>

Hinweis   In vielen Fällen ist es für den Ausschluss eines Objekts von der Migration ausreichend, das Objekt nicht zu definieren. Der oben beschriebene Prozess könnte erforderlich sein, wenn bei der Migration eines übergeordneten Elements bestimmte untergeordnete Elemente ausgeschlossen werden sollen.

Erstellen einer vollständigen Migration in XML

Das Feature-Team für Benutzerstatusmigration müsste offensichtlich eine Menge XML-Code schreiben, um eine vollständige Migration zu erstellen. Daher ist es wichtig zu versuchen, die meisten Einstellungen mithilfe der mitgelieferten XML-Steuerungsdateien zu migrieren. Durch Ausführen von Scanstate mit der Option /genconfig wird eine fast vollständige Migration erstellt. Wenn diese Migration abgeschlossen ist, erstellen Sie für die übrigen Elemente, die migriert werden müssen, eine custom.xml-Datei. Das Endprodukt kann mit einem Befehl ähnlich dem folgenden ausgeführt werden:

Hinweis Einige Teile des folgenden Codeausschnitts wurden zur besseren Lesbarkeit in mehrere Zeilen aufgeteilt. Diese müssen als eine Zeile eingegeben werden.

Scanstate /config:Migration.xml /i:Migapp.xml 
/i:MigUser.xml /i:CustMigration.xml /l:Migration.log /v:15
Anzeigen: