自訂 XML 範例
範例 1:移轉不支援的應用程式
下列範本是移轉應用程式所需的區段範本。 範本無法自行運作,但可用來撰寫自定義 .xml 檔案。
範本
展開以顯示 範例 1 應用程式範本:
<migration urlid="http://www.microsoft.com/migration/1.0/migxmlext/migtestapp">
<component type="Application">
<!-- Name of the application -->
<displayName>Some Application</displayName>
<!-- Specify whether the environment variables exist in the context of user or system or both -->
<environment context="System">
<!-- Create the environment variables -->
<variable name="myVar1">
<!-- Simple text value assignment to a variable -->
<text>value</text>
</variable>
<variable name="myAppExePath">
<!-- Make a call to in-built helper function to get a value from a reg key and assign that value to the variable -->
<script>MigXMLHelper.GetStringContent("Registry","HKLM\Software\MyApp\Installer [EXEPATH]")</script>
</variable>
</environment>
<role role="Settings">
<detects>
<!-- All of these checks must be true for the component to be detected -->
<detect>
<!-- Make a call to in-built helper function to check if an object exists or not -->
<condition>MigXMLHelper.DoesObjectExist("Registry","HKLM\Software\MyApp [win32_version]")</condition>
</detect>
<detect>
<!-- Either of these checks must be true for the component to be detected -->
<!-- Make a call to in-built helper function to check if a file version matches or not -->
<condition>MigXMLHelper.DoesFileVersionMatch("%MyAppExePath%","ProductVersion","8.*")</condition>
<condition>MigXMLHelper.DoesFileVersionMatch("%MyAppExePath%","ProductVersion","9.*")</condition>
</detect>
</detects>
<!-- Describe the rules that will be executed during migration of this component and the context, whether user, system or both -->
<rules context="User">
<!-- Delete objects specified in the object set on the destination computer before applying source objects -->
<destinationCleanup>
<!-- Describe the pattern for the list of objects to be deleted -->
<objectSet>
<pattern type="Registry">HKCU\Software\MyApp\Toolbar\* [*]</pattern>
<pattern type="Registry">HKCU\Software\MyApp\ListView\* [*]</pattern>
<pattern type="Registry">HKCU\Software\MyApp [ShowTips]</pattern>
</objectSet>
</destinationCleanup>
<!-- Specify which set of objects should be migrated -->
<include>
<!-- Describe the pattern for the list of objects to be included -->
<objectSet>
<pattern type="Registry">HKCU\Software\MyApp\Toolbar\* [*]</pattern>
<pattern type="Registry">HKCU\Software\MyApp\ListView\* [*]</pattern>
<pattern type="Registry">HKCU\Software\MyApp [ShowTips]</pattern>
</objectSet>
</include>
<!-- Specify which set of objects should not be migrated -->
<exclude>
<!-- Describe the pattern for the list of objects to be excluded from migration -->
<objectSet>
<pattern type="Registry">HKCU\Software\MyApp [Display]</pattern>
</objectSet>
</exclude>
</rules>
</role>
</component>
</migration>
範例 2:移轉我的影片資料夾
下列範例是名為的自定義 .xml 檔案 CustomFile.xml
,如果 資料夾存在於 來源計算機上,則會移轉所有使用者的 Videos 資料夾。
範例條件:確認來源計算機上存在 Videos 資料夾 :
<condition>MigXmlHelper.DoesObjectExist("File","%CSIDL_MYVIDEO%")</condition>
範例篩選:篩選出目的地計算機上未解析之 Videos 資料夾中的 快捷方式:
<include filter='MigXmlHelper.IgnoreIrrelevantLinks()'>
此篩選不會影響不是快捷方式的檔案。 例如,如果來源計算機
C:\Folder1
上的 Videos 資料夾中有指向 的快捷方式,則只有在目的地電腦上存在時,才會C:\Folder1
移轉該快捷方式。 不過,所有其他檔案,例如 .mp3 檔案,都會在不進行任何篩選的情況下移轉。範例模式:移轉所有使用者的 Videos 資料夾:
<pattern type="File">%CSIDL_MYVIDEO%* [*]</pattern>
XML 檔案
展開以顯示 範例 2 XML 檔案:
<?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>
範例 3:移轉檔案和登錄機碼
範例模式描述下列範例中 .xml 檔案的行為。
範例模式:從 下的所有子目錄移轉檔案
Usmttestfile.txt
的所有實例%ProgramFiles%\USMTTestFolder
:<pattern type="File">%ProgramFiles%\USMTTestFolder* [USMTTestFile.txt]</pattern>
範例模式:移轉 下方的整個目錄
%ProgramFiles%\USMTDIRTestFolder
:<pattern type="File">%ProgramFiles%\USMTDIRTestFolder* []</pattern>
範例模式:在 下移轉 MyKey 的所有實例
HKCU\Software\USMTTESTKEY
:<pattern type="Registry">HKCU\Software\USMTTESTKEY* [MyKey]</pattern>
範例模式:在下
HKLM\Software\USMTTESTKEY
移轉整個登錄區:<pattern type="Registry">HKLM\Software\USMTTESTKEY* []</pattern>
XML 檔案
展開以顯示 範例 3 XML 檔案:
<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>
範例 4:從不同位置移轉特定資料夾
此自訂 .xml 檔案的行為會在程序代碼中的 <displayName>
標記內描述。
XML 檔案
展開以顯示 範例 4 XML 檔案:
<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>