共用方式為


拿掉或更新包含內建 Windows 映像的 Microsoft市集應用程式之後,Sysprep 會失敗

本文討論當您使用 Microsoft Store 移除或更新布建的 Microsoft Store 應用程式,然後在電腦上執行 sysprep 時所發生的問題。

適用於: Windows 10 - 所有版本、Windows 11
原始 KB 編號: 2769827

簡介

Sysprep 是 IT 系統管理員的工具,其想要準備安裝 Windows 以進行重複、稽核和客戶傳遞。 本文中的指引適用於支持專員和IT專業人員。 如果您是使用 Microsoft Store 應用程式時遇到問題的家庭使用者,請參閱 修正來自 Microsoft Store 的應用程式問題。

Windows 映射內建數個Microsoft市集應用程式。 這些應用程式包括郵件、地圖、傳訊、Bing、旅遊和新聞應用程式等等。 這些應用程式稱為 已布建 的應用程式。 布建的應用程式會暫存於映像中,並排定在第一次登入時安裝 Windows 映射的每個使用者。 除了內建應用程式之外,您還可以將自己的企業營運Microsoft市集應用程式側載至 Windows 映射,而不需要將它們發佈至 Microsoft 市集。 您可以使用DISM.exe或透過 DISM PowerShell 模組提供的在線或離線服務命令來側載 Appx 套件。

徵兆

請考量下列案例:

案例 1

  • 您正在建立想要 sysprep 和擷取的自訂 Windows 10 或 Windows 11 參照電腦。
  • 您要從此參照電腦移除某些布建Microsoft市集應用程式(Appx 套件)。
  • 您執行 dism -online /Remove-ProvisionedAppxPackage /PackageName:<packagename> 以取消布建 Appx 套件。

當您在此案例中執行 sysprep 作業時,作業可能會失敗,並出現下列錯誤:

系統準備工具 3.14
嘗試 sysprep 計算機時發生嚴重錯誤

案例 2

  • 您有現有的 Windows 映射,而且映像中會側載數個Microsoft市集應用程式。
  • 您想要從映像中移除部分側載套件 Appx ,並進一步自定義。
  • 您會開機進入參照電腦,並執行下列其中一個 PowerShell 命令來移除套件的 Appx 佈建:
    • Remove-AppxProvisionedPackage -PackageName <packagename>
    • Remove-ProvisionedAppxPackage -PackageName <packagename>

當您在此案例中執行 sysprep 作業時,作業可能會失敗,並出現下列錯誤:

系統準備工具 3.14
嘗試 sysprep 計算機時發生嚴重錯誤

案例 3

  • 您正在建立 Windows 10 或 Windows 11 參考映像。
  • 您可以連線到 Microsoft Store,然後使用 Microsoft Store 更新內建Microsoft市集應用程式。

當您在此案例中執行 sysprep 作業時,作業可能會失敗,並出現下列錯誤:

系統準備工具 3.14 嘗試 sysprep 計算機時發生嚴重錯誤

此外,在SetupErr.log中,您可能會注意到下列錯誤專案:

<日期><時間>,已為使用者安裝錯誤 SYSPRP 套件 <PackageFullName> ,但未為所有使用者布建。 此套件無法在 sysprep 映射中正常運作。
<日期><時間>,錯誤 SYSPRP 無法移除目前使用者的應用程式:0x80073cf2。
<Date><Time>, Error SYSPRP Exit code of RemoveAllApps thread was 0x3cf2.
<日期><時間>,錯誤 [0x0f0082] SYSPRP ActionPlatform::LaunchModule: 從 C:\Windows\System32\AppxSysprep.dll 執行 'SysprepGeneralize' 時發生失敗;dwRet = 0x3cf2
<日期><時間>、錯誤 SYSPRP ActionPlatform::ExecuteAction: 執行動作時發生錯誤;dwRet = 0x3cf2
<日期><時間>,錯誤 SYSPRP ActionPlatform::ExecuteActionList: 執行動作中的錯誤;dwRet = 0x3cf2
<日期><時間>,錯誤 SYSPRP SysprepSession::Execute: 錯誤從 C:\Windows\System32\Sysprep\ActionFiles\Generalize.xml 執行動作時發生錯誤;dwRet = 0x3cf2
<>執行><SysprepSession 動作時發生錯誤 SYSPRP RunPlatformActions:Failed;dwRet = 0x3cf2
<日期><時間>,錯誤 [0x0f0070] SYSPRP RunExternalDlls:執行登錄 sysprep DLL 時發生錯誤,停止 sysprep 執行。 dwRet = 0x3cf2
<日期><時間>,錯誤 [0x0f00a8] 處理 sysprep 一般化內部提供者時發生 SYSPRP WinMain:Hit 失敗;hr = 0x80073cf2

原因

Sysprep 有一個額外的提供者,可在 Windows 中新增以清除 Appx 套件,並一般化映射。 只有在套件是個別使用者套件或所有使用者布建套件時, Appx 提供者才能運作。

  • 個別使用者套件 表示 Appx 套件是針對特定用戶帳戶安裝,不適用於計算機的其他使用者。
  • 所有使用者套件 表示 Appx 已布建到映像中,讓使用此映像的所有使用者都可以存取應用程式。

如果布建至映像的所有使用者套件已從映像手動取消布建,但未針對特定使用者移除,提供者會在 sysprep 期間清除此套件時遇到錯誤。 如果布建至映像的所有使用者套件已由此參照計算機上的其中一位使用者更新,提供者也會失敗。

解決方法

若要解決此問題,請移除執行 sysprep 之使用者的套件,並移除布建。 若要這麼做,請執行下列步驟。

注意

若要防止Microsoft市集更新應用程式,請先拔除因特網連線,或在建立映像之前停用稽核模式中的自動更新。

  1. 執行下列 PowerShell Cmdlet:

    Import-Module Appx
    Import-Module Dism
    Get-AppxPackage -AllUsers | Where PublisherId -eq 8wekyb3d8bbwe | Format-List -Property PackageFullName,PackageUserInformation
    

注意

  • 在最後一個 Cmdlet 的輸出中,檢查套件顯示為 [已安裝] 的使用者。 從參照計算機刪除這些用戶帳戶,或使用這些用戶帳戶登入計算機。 然後,在步驟 2 中執行 Cmdlet 以移除 Appx 套件。
  • 此命令會列出由該參照計算機的任何使用者所發行Microsoft及安裝的所有套件。 由於計算機要進行 sysprepped,因此我們假設這些使用者配置檔不再需要套件。
  • 如果您已手動布建屬於其他發行者的應用程式,請執行下列命令來列出它們:

Get-AppxPackage -AllUsers | Format-List -Property PackageFullName,PackageUserInformation

  1. 執行下列 Cmdlet 以移除 Appx 套件:

    Remove-AppxPackage -Package <packagefullname>
    
  2. 執行下列 Cmdlet 以移除布建:

    Remove-AppxProvisionedPackage -Online -PackageName <packagefullname>
    

如果您嘗試從更新問題復原,您可以在遵循下列步驟之後重新佈建應用程式。

注意

如果您要維護離線映像,則不會發生此問題。 在該案例中,會自動清除所有使用者的布建。 這包括執行命令的使用者。

其他相關資訊

如需如何新增和移除應用程式的詳細資訊,請參閱:

資料收集

若您需要 Microsoft 支援,建議您按照使用 TSS 收集部署相關問題的資訊所述步驟來收集資訊。