移轉應用程式設定

您可以建立自訂 .xml 檔案以移轉特定的企業營運系統應用程式設定,或變更 使用者狀態移轉工具 (USMT) 5.0 的預設移轉行為。若要讓 ScanState 和 LoadState 使用這個檔案,您必須在兩個命令列上都指定自訂 .xml 檔案。

本主題定義如何撰寫自訂移轉 .xml 檔案,以便使用 MigApp.xml 移轉預設不會移轉的應用程式設定。您應該在安裝應用程式之後,使用者第一次執行應用程式之前移轉設定。

本主題的資訊未包含如何移轉將設定存放在應用程式特定存放區的應用程式,而只包含將資訊存放在檔案或登錄中的應用程式。也未包含如何移轉使用者利用應用程式所建立之資料的資訊。例如,如果應用程式使用特定範本建立 .doc 檔案,則本主題不會討論如何移轉 .doc 檔案和範本。

在本主題中

  • 在您開始前

  • 步驟 1:驗證應用程式已安裝在來源電腦上,且它的版本與目的電腦上要安裝的版本相同。。

  • 步驟 2:識別要收集的設定,並判斷每一項設定在電腦上儲存的位置。。

  • 步驟 3:識別如何套用所收集的設定。。

  • 步驟 4:建立應用程式的移轉 XML 元件。

  • 步驟 5:測試應用程式設定移轉。

在您開始前

您應該指定一台測試電腦,此電腦包含您的來源電腦的作業系統,並指定您要移轉設定的應用程式。例如,如果您打算從 Windows Vista® 移轉至 Windows® 8,請在測試電腦上安裝 Windows Vista,然後安裝應用程式。

步驟 1:驗證應用程式已安裝在來源電腦上,且它的版本與目的電腦上要安裝的版本相同。

在 USMT 移轉設定之前,您需要先讓它檢查應用程式是否已安裝在來源電腦上,以及是否為正確版本。如果應用程式未安裝在來源電腦上,您可能就不想讓 USMT 浪費時間來搜尋應用程式的設定。更重要的是,如果 USMT 針對未安裝的應用程式收集設定,則它移轉的設定可能會造成目的電腦運作不正常。您也應該調查應用程式是否有多個版本。這是因為新版本可能不會將設定儲存在相同位置,而這可能導致目的電腦發生無法預期的結果。

有許多方法可以偵測是否已安裝應用程式。最好的做法是在登錄中檢查應用程式解除安裝機碼,然後搜尋電腦以找出已安裝應用程式的可執行檔。請務必檢查這兩個項目,因為相同應用程式的不同版本有時會共用相同的解除安裝機碼。因此,即使有機碼,也可能沒有對應至您要的應用程式版本。

檢查登錄以找出應用程式解除安裝機碼。

安裝許多應用程式 (特別是使用 Microsoft® Windows® Installer 技術所安裝的應用程式) 時,會在 HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall 下建立應用程式解除安裝機碼。例如,安裝 Adobe Acrobat Reader 7 後,會建立名為 HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall \{AC76BA86-7AD7-1033-7B44-A70000000000} 的機碼。因此,如果電腦包含此機碼,表示電腦上已安裝 Adobe Acrobat Reader 7。您可以使用 DoesObjectExist Helper 函式來檢查某個登錄機碼是否存在。

通常,在 HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall 下搜尋應用程式名稱、應用程式可執行檔的名稱,或製作該應用程式的公司名稱,就可以找到此機碼。您可以使用登錄編輯程式 (位於 %SystemRoot% 中的 Regedit.exe) 來搜尋登錄。

檢查檔案系統以找出應用程式可執行檔。

您也應該檢查應用程式二進位檔,以找出已安裝應用程式的可執行檔。若要這樣做,您需要先判斷應用程式的安裝位置,以及可執行檔的名稱。大多數應用程式會將應用程式二進位檔的安裝位置儲存在登錄中。您應該在登錄中搜尋應用程式的名稱、應用程式可執行檔的名稱,或製作應用程式的公司名稱,直到找到含有安裝路徑的登錄值為止。決定應用程式可執行檔的路徑之後,您就可以使用 DoesFileVersionMatch Helper 函式來檢查應用程式可執行檔的正確版本。如需做法範例,請參閱 MigApp.xml 檔案的 Windows Live™ Messenger 一節。

步驟 2:識別要收集的設定,並判斷每一項設定在電腦上儲存的位置。

接下來,您應該瀏覽使用者介面,並製作所有可用設定的清單。如果有不想要移轉的設定,您可以縮減清單。若要判斷每一項設定儲存的位置,您需要變更每一項設定,然後監視登錄和檔案系統上的活動。您不需要移轉應用程式安裝時所建立的二進位檔案和登錄設定。這是因為您需要將應用程式重新安裝到目的電腦。您只需要移轉可自訂的設定。

如何判斷每一項設定儲存的位置

  1. Windows Sysinternals 網站下載檔案和登錄監視工具,例如 Regmon 和 Filemon 工具。

  2. 儘可能關閉任何應用程式,以限制電腦上的登錄和檔案系統活動。

  3. 篩選工具的輸出,使它只顯示應用程式所進行的變更。

    note備註
    大多數應用程式會將其設定儲存在使用者設定檔下。也就是說,檔案系統中儲存的設定位於 %UserProfile% 目錄下,而登錄中儲存的設定位於 HKEY_CURRENT_USER 登錄區下。對於這些應用程式,您可以篩選檔案和登錄監視工具的輸出,只顯示這些位置下的活動。這樣可以大幅減少您需要檢查的輸出量。

  4. 啟動監視工具,變更設定,然後尋找您變更設定時所發生的登錄和檔案系統寫入動作。請確定您所進行的變更已實際生效。例如,如果在 Microsoft Word 中的 [選項] 對話方塊中選取核取方塊來變更設定,通常要等到您按一下 [確定] 關閉對話方塊後,變更才會生效。

  5. 變更設定時,請注意檔案系統和登錄的變更。每項設定可能有多個檔案或登錄值。您至少應該識別變更此設定所需的一組檔案和登錄變更。這就是您移轉設定所需移轉的一組檔案和登錄機碼。

    note備註
    變更應用程式設定就一定會寫入登錄機碼。可能的話,請篩選檔案和登錄監視工具的輸出,只顯示寫入檔案和登錄機碼/值的動作。

步驟 3:識別如何套用所收集的設定。

如果來源電腦上的應用程式版本和目的電腦上的版本相同,則您不需要修改所收集的檔案和登錄機碼。根據預設,USMT 會將檔案和登錄機碼從來源位置移轉至目的電腦上對應的位置。例如,如果從 C:\Documents and Settings\User1\My Documents 資料夾收集檔案,而目的電腦上的設定檔目錄位於 D:\Users\User1,則 USMT 會自動將檔案移轉至 D:\Users\User1\My Documents。不過,在下列三種情況下,您可能需要修改某些設定的位置:

案例 1:目的電腦上的應用程式版本比來源電腦上的版本還要新。

在此情況下,可能不需要進行修改,較新版本的應用程式就可以讀取來源電腦的設定。也就是說,從較舊版本的應用程式所收集的資料有時與較新版本的應用程式相容。不過,如果有下列任一情況時,您可能需要修改設定位置:

  • **較新版本的應用程式可以從較舊版本匯入設定。**在移轉設定之後,當使用者第一次執行較新版本時,通常會發生此對應情形。有些應用程式會在移轉設定之後自動執行這項動作;不過,其他應用程式只有在從較舊版本升級時才會執行這個動作。升級應用程式時會安裝一組檔案和/或登錄機碼,指出先前已安裝較舊版本的應用程式。如果執行較新版本的全新安裝 (大部分移轉都是如此),則電腦不會包含這組檔案和登錄機碼,所以不會進行對應。為了讓較新版本的應用程式可以初始化此匯入程序,您的移轉指令碼可能需要在目的電腦上建立這些檔案和/或登錄機碼。

    若要識別需要建立哪些檔案和/或登錄機碼/值才能引起匯入,您應該將較舊版本的應用程式升級成較新版本,並使用如何判斷每一項設定儲存的位置中所述的相同程序,來監視對檔案系統和登錄所做的變更。知道電腦所需的一組檔案之後,您就可以使用 <addObjects> 元素將這組檔案新增至目的電腦。

  • **較新版本的應用程式無法從來源電腦讀取設定,也無法將設定匯入成新的格式。**在此情況下,您需要為每一項設定建立從舊位置到新位置的對應。若要這樣做,請使用如何判斷每一項設定儲存的位置中所述的程序,判斷較新版本儲存每一項設定的位置。建立對應之後,使用 <locationModify> 元素以及 RelativeMoveExactMove Helper 函式,將設定套用至目的電腦上的新位置。

案例 2:目的電腦已包含應用程式的設定。

建議您在安裝應用程式之後,使用者第一次執行應用程式之前的這段期間移轉設定。這樣建議是因為這可確保當您移轉設定時,目的電腦上已沒有設定。如果您必須在移轉之前安裝應用程式,則應該使用 <destinationCleanup> 元素來刪除任何現有的設定。如果您基於任何理由而想要保留目的電腦上的設定,可以使用 <merge> 元素和 DestinationPriority Helper 函式。

案例 3:應用程式在安裝時會覆寫設定。

建議您在安裝應用程式之後,使用者第一次執行應用程式之前的這段期間移轉設定。這樣建議是因為這可確保當您移轉設定時,目的電腦上已沒有設定。另外,安裝某些應用程式時,它們會覆寫電腦上任何現有的設定。在此情況下,如果您在安裝應用程式之前已移轉資料,則會覆寫您的自訂設定。對於將設定儲存在使用者設定檔以外位置的應用程式而言,這種情形很常見 (這些通常是套用至所有使用者的設定)。安裝應用程式時,有時會覆寫這些通用設定,並且取代為預設值。為了避免這種情形,您必須在將檔案和設定移轉至目的電腦之前安裝這些應用程式。根據預設,使用 USMT 時,來源電腦的資料會覆寫目的電腦上相同位置中已存在的資料。

步驟 4:建立應用程式的移轉 XML 元件

完成步驟 1-3 之後,您需要建立自訂移轉 .xml 檔案,以根據您目前具有的資訊來移轉應用程式。您可以使用 MigApp.xml 檔案做為模型,因為它包含本主題所討論的許多概念的範例。您也可以參閱 自訂 XML 範例,以取得另一個範例 .xml 檔案。

note備註
建議您建立不同的 .xml 檔案,而不要將指令碼新增至 MigApp.xml 檔案。這是因為 MigApp.xml 檔案是很大的檔案,很難閱讀和編輯。此外,如果您因為某些原因而重新安裝 USMT,MigApp.xml 檔案會被預設的檔案版本所覆寫,而您將會遺失自訂的版本。

重要

有些應用程式會將資訊存放在不應該移轉的使用者設定檔中 (例如,應用程式安裝路徑、電腦名稱等)。您應該確定在移轉時排除這些檔案和登錄機碼。

您的指令碼應該執行下列動作:

  1. 透過下列方式檢查是否已安裝應用程式和正確版本:

    • 使用 DoesObjectExist Helper 函式在 HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall 下搜尋安裝解除安裝機碼。

    • 使用 DoesFileVersionMatch Helper 函式,檢查應用程式可執行檔的版本是否正確。

  2. 如果安裝的應用程式版本正確,則請確定每一項設定已移轉至目的電腦上的適當位置。

    • 如果應用程式的版本在來源電腦和目的電腦上都相同,請使用 <include> 和 <exclude> 元素來移轉每一項設定。

    • 如果目的電腦上的應用程式版本比來源電腦上的版本還要新,且應用程式無法匯入設定,則您的指令碼應該 1) 使用 <addObjects> 元素新增一組可觸發匯入的檔案,或 2) 使用 <locationModify> 元素以及 RelativeMoveExactMove Helper 函式來建立將舊設定套用至目的電腦上正確位置的對應。

    • 如果您必須在移轉設定之前安裝應用程式,請使用 <destinationCleanup> 元素來刪除目的電腦上已有的任何設定。

如需 .xml 元素和 Helper 函式的相關資訊,請參閱 XML 元素庫

步驟 5:測試應用程式設定移轉

在測試電腦上,安裝將要在目的電腦上安裝的作業系統。例如,如果您打算從 Windows® 7 移轉至 Windows 8,請安裝 Windows 8 和應用程式。接下來,在測試電腦上執行 LoadState,並驗證所有設定都已移轉。視需要進行修正,並重複執行程序,直到所有必要的設定都正確移轉為止。

若要加速收集和移轉資料,您可以一次只移轉一個使用者,而除了您所測試的應用程式之外,您可以在移轉時排除其他所有元件。若要在移轉時只指定 User1,請輸入:/ue:*\* /ui:user1。如需詳細資訊,請參閱排除檔案與設定ScanState 語法 主題中的使用者選項。若要疑難排解問題,請檢查進度記錄檔以及 ScanState 和 LoadState 記錄檔,其中包含可能指出移轉問題的警告和錯誤。

另請參閱

其他資源

USMT XML 參考
衝突與優先順序
XML 元素庫
記錄檔