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

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

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

簡介

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

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

徵狀

請考量下列案例:

案例 1

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

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

系統準備工具 3.14
嘗試對機器進行 sysprep 處理時發生嚴重錯誤

案例 2

  • 您有現有的 Windows 映射,且映像中會側載數個 Microsoft Store 應用程式。
  • 您想要從映像中移除部分側載 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 Store 應用程式。

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

系統準備工具 3.14 嘗試對機器進行 sysprep 處理時發生嚴重錯誤

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

<Date><Time>, Error SYSPRP Package <PackageFullName> was installed for a user, but not provisioned for all users. 此套件在 sysprep 映射中無法正常運作。
<日期><時間>,錯誤 SYSPRP 無法移除目前使用者的應用程式:0x80073cf2。
<日期><時間>,已0x3cf2 RemoveAllApps 線程的錯誤 SYSPRP 結束代碼。
<日期><時間>,錯誤 [0x0f0082] SYSPRP ActionPlatform::LaunchModule:從 C:\Windows\System32\AppxSysprep.dll 執行 'SysprepGeneralize' 時發生失敗;dwRet = 0x3cf2
<Date><Time>, Error SYSPRP ActionPlatform::ExecuteAction: Error in executeecuting action; dwRet = 0x3cf2
<Date><Time>, Error SYSPRP ActionPlatform::ExecuteActionList: Error in execute actions; dwRet = 0x3cf2
<日期><時間>,錯誤 SYSPRP SysprepSession::Execute:從 C:\Windows\System32\Sysprep\ActionFiles\Generalize.xml 執行動作時發生錯誤;dwRet = 0x3cf2
<日期><時間>,執行 SysprepSession 動作時發生錯誤 SYSPRP RunPlatformActions:失敗;dwRet = 0x3cf2
<日期><時間>,錯誤 [0x0f0070] SYSPRP RunExternalDlls:執行登錄 sysprep DLL 時發生錯誤,停止 sysprep 執行。 dwRet = 0x3cf2
<Date><Time>, Error [0x0f00a8] SYSPRP WinMain:Hit failure while processing sysprep generalize internal providers; hr = 0x80073cf2

原因

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

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

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

解決方案

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

注意事項

若要防止 Microsoft Store 更新應用程式,請先拔除因特網連線或停用稽核模式中的自動 匯報,再建立映像。

  1. 執行 Import-Module Appx PowerShell Cmdlet。

  2. 執行 Import-Module Dism。

  3. 執行 Get-AppxPackage -AllUsers | Where PublisherId -eq 8wekyb3d8bbwe | Format-List -Property PackageFullName,PackageUserInformation

    注意事項

    • 在此最後一個 Cmdlet 的輸出中,檢查套件顯示為已安裝的使用者。 從參照計算機刪除這些用戶帳戶,或使用這些用戶帳戶登入計算機。 然後,執行步驟 4 中的 Cmdlet 來移除 Appx 封裝。
    • 此命令會列出由 Microsoft 發佈並由該參照電腦的任何使用者安裝的所有套件。 因為要將計算機設為 sysprepped,所以我們假設這些使用者配置檔不再需要套件。
    • 如果您已手動布建屬於其他發行者的應用程式,請執行下列命令來列出它們:
      Get-AppxPackage -AllUsers |Format-List -Property PackageFullName,PackageUserInformation
  4. 執行 Remove-AppxPackage -Package \<packagefullname>

  5. 執行下列 Cmdlet 以移除布建:

    Remove-AppxProvisionedPackage -Online -PackageName <packagefullname>

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

注意事項

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

其他相關資訊

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

資料收集

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