共用方式為


移轉應用程式設定

您可以建立自定義 .xml 檔來移轉特定的企業營運應用程式設定,或變更用戶狀態移轉工具 (USMT) 的預設移轉行為。 若要讓 ScanStateLoadState 使用此檔案,必須在這兩個命令行上指定自定義 .xml 檔。

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

本文不包含如何移轉應用程式的相關信息,這些應用程式會將設定儲存在應用程式特定的存放區中,只包含將資訊儲存在檔案或登錄中的應用程式。 它也不包含如何移轉使用者使用應用程式建立之數據的相關信息。 例如,如果應用程式使用特定範本建立 .doc 檔案,本文不會討論如何移轉 .doc 檔案和範本本身。

開始之前

應識別包含來源電腦作業系統的測試計算機。 測試計算機也應該有需要移轉其設定的應用程式。 例如,如果從 Windows 10 移轉至 Windows 11,請在測試電腦上安裝 Windows 10,然後安裝應用程式。

步驟 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 協助程式函式來檢查登錄機碼是否存在。

您可以在下列登入機碼下找到特定應用程式的 卸載 登錄機碼:

HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall

若要尋找特定應用程式的 卸載 密鑰,請在卸 登錄機碼下搜尋下列其中一個專案:

  • 應用程式的名稱。
  • 應用程式可執行檔的名稱。
  • 建立應用程式的公司名稱。

若要搜尋登錄,請使用登錄 編輯器 Regedit.exeRegedit.exe 在儲存在路徑中 %SystemRoot%, 通常是 C:\Windows

檢查應用程式可執行檔的檔案系統

也應檢查安裝應用程式之可執行檔的應用程式二進位檔。 若要檢查應用程式二進位檔,請判斷應用程式的安裝位置,以及可執行檔的名稱為何。 大部分的應用程式會將應用程式二進位檔的安裝位置儲存在登錄中。 在找到包含安裝路徑的登錄值之前,應在下列其中一個專案上搜尋登錄:

  • 應用程式的名稱。
  • 應用程式可執行檔的名稱。
  • 建立應用程式的公司名稱。

一旦決定應用程式可執行檔的路徑之後, DoesFileVersionMatch 協助程式函式就可以用來檢查應用程式可執行檔的正確版本。 如需如何使用協助程式函式的 DoesFileVersionMatch 範例,請參閱檔案的 Windows Live™ Messenger 一 MigApp.xml 節。

步驟 2:識別要收集的設定,並判斷每個設定儲存在計算機上的位置

接下來,瀏覽使用者介面,並列出所有可用的設定。 如果有不需要移轉的設定,可以減少清單。 若要判斷每個設定的儲存位置,請變更設定。 當設定變更時,請透過 行程監視器等工具來監視登錄和文件系統上的活動。 安裝應用程式時所建立的二進位檔和登錄設定不需要移轉。 當應用程式重新安裝到目的地計算機時,它會重新建立這些設定。 只需要移轉自定義的設定。

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

  1. Sysinternals 網站下載檔案和登錄監視工具,例如進程監視 (Procmon)

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

  3. 篩選工具的輸出,使其只會顯示應用程式正在進行的變更。

    注意

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

  4. 啟動監視工具、變更設定,並尋找變更設定時發生的登錄和文件系統寫入。 請確定所做的變更實際生效。 例如,如果在 [選項] 對話框中選取複選框來變更Microsoft Word中的設定,在選取 [確定] 關閉對話方塊之前,變更通常不會生效。

  5. 當設定變更時,請注意文件系統和登錄的變更。 每個設定可能會有一個以上的檔案或登錄值。 您應該識別變更此設定所需的最小檔案和登錄變更集合。 這組檔案和登錄機碼是移轉設定所需的專案。

    注意

    變更應用程式設定總是會導致寫入登錄機碼。 可能的話,請篩選檔案和登錄監視工具的輸出,只顯示對檔案和登錄機碼/值的寫入。

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

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

案例 1:目的地電腦上的應用程式版本比來源電腦上的版本更新

在此情況下,較新版本的應用程式可能可以從來源計算機讀取設定,而不需要修改。 也就是說,從舊版應用程式收集的數據有時會與較新版本的應用程式相容。 不過,如果下列任一條件成立,可能需要修改設定位置:

  • 較新版本的應用程式能夠從舊版匯入設定。 此對應通常發生在使用者在移轉設定之後第一次執行較新版本時。 某些應用程式會在移轉設定之後自動匯入設定。 不過,如果應用程式是從舊版升級,則其他應用程式只會匯入設定。 升級應用程式時,會安裝一組檔案和/或登錄機碼,指出先前已安裝舊版的應用程式。 如果執行較新版本的全新安裝,計算機就不會包含這些檔案和登錄機碼。 如果檔案和登錄機碼不存在,就不會發生對應。 為了利用較新版本的應用程式來起始此匯入程式,移轉腳本可能需要在目的地計算機上建立這些檔案和/或登錄機碼。

    若要識別需要建立哪些檔案和/或登錄機碼/值,匯入才能運作:

    1. 將舊版應用程式升級至較新的版本。
    2. 使用 如何判斷每個設定的儲存位置中所述的相同程式,監視對文件系統和登錄所做的變更。

    一旦知道計算機需要的檔案集, <addObjects> 元素就可以用來將它們新增至目的地計算機。

  • 較新版本的應用程式無法從來源計算機讀取設定,也無法將設定匯入新格式。 在此情況下,請針對從舊位置到新位置的每個設定建立對應。 若要建立對應,請使用 如何判斷每個設定的儲存位置中所述的程序,決定較新版本儲存每個設定的位置。 建立對應之後,請使用locationModify>元素和和協助程式函式,將設定套用<至目的地電腦上的新位置。ExactMoveRelativeMove

案例 2:目的地計算機已包含應用程式的設定

Microsoft建議在安裝應用程式之後,但在使用者第一次執行應用程式之前移轉設定。 Microsoft建議此程式,因為此程式可確保在移轉設定時,目的地計算機上沒有任何設定。 如果必須在移轉之前安裝應用程式,則應該使用 <destinationCleanup> 元素刪除任何現有的設定。 如果基於任何原因需要保留目的地電腦上的設定, <則可以使用合併> 專案和 DestinationPriority 協助程式函式。

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

Microsoft建議在安裝應用程式之後,但在使用者第一次執行應用程式之前移轉設定。 Microsoft建議此程式,因為此程式可確保在移轉設定時,目的地計算機上沒有任何設定。 此外,安裝某些應用程式時,它們會覆寫電腦上的任何現有設定。 在此案例中,如果在安裝應用程式之前移轉數據,則會覆寫自定義的設定。 此案例適用於將設定儲存在使用者配置檔外部位置的應用程式, (這些設定通常是套用至所有使用者) 的設定。 這些通用設定有時會在安裝應用程式時覆寫,並以預設值取代。 若要避免這個問題,必須先安裝這些應用程式,再將檔案和設定移轉至目的地計算機。 根據預設,使用 USMT 時,來源計算機的數據會覆寫已存在於目的地電腦上相同位置的數據。

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

完成步驟 1 到 3 之後,請建立自定義移 轉.xml 檔案,以根據更新的資訊來移轉應用程式。 檔案 MigApp.xml 可以當做模型使用,因為它包含本文所討論的許多概念範例。 另請參閱 自定義 XML 範例 ,以取得另一個 範例.xml 檔案。

注意

Microsoft建議建立個別 的.xml 檔案,而不是將腳本新增至 MigApp.xml 檔案。 建議使用個別 的.xml 檔案, MigApp.xml 因為檔案是大型檔案,而且很難讀取和編輯。 此外,如果重新安裝 USMT, MigApp.xml 則會以檔案的預設版本覆寫檔案,並遺失自定義版本。

重要

某些應用程式會將資訊儲存在使用者配置檔中,例如應用程式安裝路徑、計算機名稱等。儲存在使用者配置檔中的應用程式資訊不應移轉,且應從移轉中排除。

文稿應該執行下列動作:

  1. 檢查是否已安裝正確的應用程式版本:

    • 使用協助程式函式搜尋 下 HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall 方的 DoesObjectExist 安裝卸載金鑰。

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

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

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

    • 如果目的地電腦上的應用程式版本比來源電腦上的版本新,而且應用程式無法匯入設定,則腳本應為:

      1. 新增使用 <addObjects 元素觸發匯入的> 檔案集。
      2. 使用locationModify>元素和和協助程式函式,建立將舊設定套用<至目的地電腦上正確位置的RelativeMove對應。ExactMove
    • 如果在移轉設定之前必須先安裝應用程式,請使用 <destinationCleanup> 元素刪除目的地電腦上已有的任何設定。

如需 .xml 元素和協助程式函式的相關信息,請參閱 XML 元素庫

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

在測試計算機上,安裝將安裝在目的地電腦上的操作系統。 例如,如果打算從 Windows 10 移轉至 Windows 11,請安裝 Windows 11,然後在 Windows 11 中安裝應用程式。 接下來,在測試計算機上執行 LoadState ,並確認所有設定都已移轉。 視需要進行更正,並重複此程式,直到所有必要的設定都正確移轉為止。

為了加快收集和移轉數據所需的時間,一次只能移轉一位使用者。 除了正在測試的應用程式之外,所有其他元件都可以從移轉中排除。 若要在移轉中僅指定 User1 ,請輸入:

/ue:*\* /ui:user1

For more information, see the Exclude files and settings article and the User options section in the ScanState syntax article. 若要針對問題進行疑難解答,請檢查進度記錄、 ScanState 記錄和 LoadState 記錄。 記錄包含可能指向移轉問題的警告和錯誤。