組み込みの Windows イメージを含む Microsoft Store アプリを削除または更新した後、Sysprep が失敗する

この記事では、Microsoft Store を使用し、コンピューターで sysprep を実行して、プロビジョニングされた Microsoft Store アプリを削除または更新するときに発生する問題について説明します。

適用対象: Windows 10 - すべてのエディション、Windows 11
元の KB 番号: 2769827

はじめに

Sysprep は、重複、監査、および顧客の配信のために Windows のインストールを準備する IT 管理者向けのツールです。 この記事のガイダンスは、サポート エージェントと IT プロフェッショナルが使用することを目的としています。 Microsoft Store アプリの使用中に問題が発生しているホーム ユーザーの場合は、「Microsoft Store のアプリに関する問題を修正する」を参照してください。

いくつかの Microsoft Store アプリは、Windows イメージに組み込まれています。 これらのアプリには、メール、マップ、メッセージング、Bing、旅行、ニュースなどのアプリが含まれます。 これらのアプリは、 プロビジョニングされた アプリと呼ばれます。 プロビジョニングされたアプリはイメージにステージングされ、最初のログオン時に Windows イメージのすべてのユーザーにインストールされるようにスケジュールされます。 組み込みのアプリに加えて、Microsoft Store に公開しなくても、独自の基幹業務の Microsoft Store アプリを Windows イメージにサイドロードできます。 パッケージをサイドロード Appx するには、DISM.exeまたは DISM PowerShell モジュールで使用できるオンラインまたはオフラインのサービス コマンドを使用します。

現象

次のようなシナリオを考えてみましょう。

シナリオ 1

  • sysprep とキャプチャするカスタム Windows 10または参照コンピューター Windows 11作成しています。
  • この参照コンピューターから、プロビジョニングされた 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 で、次のエラー エントリが表示される場合があります。

<日付><時刻>、エラー SYSPRP パッケージ <PackageFullName> がユーザーにインストールされましたが、すべてのユーザーに対してプロビジョニングされたわけではありません。 このパッケージは sysprep イメージでは正しく機能しません。
<Date><Time>, Error SYSPRP failed to remove apps for the current user: 0x80073cf2.
<RemoveAllApps スレッドの日付><時刻>エラー SYSPRP 終了コードが0x3cf2されました。
<日付><時刻>、エラー [0x0f0082] SYSPRP ActionPlatform::LaunchModule: C:\Windows\System32\AppxSysprep.dll から 'SysprepGeneralize' を実行しているときにエラーが発生しました。dwRet = 0x3cf2
<日付><時刻>、エラー SYSPRP ActionPlatform::ExecuteAction: アクションの実行中にエラーが発生しました。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
<日付><時刻>、エラー SYSPRP RunPlatformActions:SysprepSession アクションの実行中に失敗しました。dwRet = 0x3cf2
<Date><Time>, Error [0x0f0070] SYSPRP RunExternalDlls:レジストリ sysprep DLL の実行中にエラーが発生し、sysprep の実行が停止されました。 dwRet = 0x3cf2
<Date><Time>, Error [0x0f00a8] SYSPRP WinMain:sysprep の処理中のヒット エラーは内部プロバイダーを一般化します。hr = 0x80073cf2

原因

Sysprep には、パッケージをクリーンアップ Appx し、イメージを一般化するために Windows に追加される追加のプロバイダーがあります。 プロバイダーは、パッケージが Appx ユーザーごとのパッケージまたはすべてのユーザーがプロビジョニングしたパッケージである場合にのみ機能します。

  • ユーザーごとのパッケージ とは、パッケージが特定の Appx ユーザー アカウントにインストールされ、コンピューターの他のユーザーが使用できないことを意味します。
  • すべてのユーザー パッケージ は、このイメージを Appx 使用するすべてのユーザーがアプリにアクセスできるように、イメージにプロビジョニングされていることを意味します。

イメージにプロビジョニングされたすべてのユーザー パッケージがイメージから手動でプロビジョニング解除されたが、特定のユーザーに対して削除されなかった場合、sysprep 中にこのパッケージをクリーンアップするときにプロバイダーでエラーが発生します。 また、イメージにプロビジョニングされたすべてのユーザー パッケージが、この参照コンピューター上のユーザーの 1 人によって更新された場合も、プロバイダーは失敗します。

解決方法

この問題を解決するには、sysprep を実行しているユーザーのパッケージを削除し、プロビジョニングも削除します。 それには、以下の手順を実行します。

注:

Microsoft Store がアプリを更新できないようにするには、イメージを作成する前に、インターネット接続を外すか、監査モードで自動更新を無効にします。

  1. Import-Module Appx PowerShell コマンドレットを実行します。

  2. dism Import-Module実行します。

  3. Get-AppxPackage -AllUsers | Where PublisherId -eq 8wekyb3d8bbwe | Format-List -Property PackageFullName,PackageUserInformation を実行します。

    注:

    • この最後のコマンドレットの出力で、パッケージが [インストール済み] として表示されているユーザーを確認します。 これらのユーザー アカウントを参照コンピューターから削除するか、これらのユーザー アカウントを使用してコンピューターにログオンします。 次に、手順 4 のコマンドレットを実行してパッケージを Appx 削除します。
    • このコマンドは、Microsoft によって発行され、その参照コンピューターの任意のユーザーによってインストールされたすべてのパッケージを一覧表示します。 コンピューターは sysprepped されるため、これらのユーザー プロファイルではパッケージが不要になったと想定しています。
    • 他の発行元に属するアプリを手動でプロビジョニングした場合は、次のコマンドを実行して一覧表示します。
      Get-AppxPackage -AllUsers |Format-List -Property PackageFullName,PackageUserInformation
  4. Remove-AppxPackage -Package \<packagefullname> を実行します。

  5. 次のコマンドレットを実行して、プロビジョニングを削除します。

    Remove-AppxProvisionedPackage -Online -PackageName <packagefullname>

更新プログラムの問題から回復しようとすると、次の手順に従った後にアプリを再プロビジョニングできます。

注:

オフライン イメージにサービスを提供している場合、この問題は発生しません。 このシナリオでは、すべてのユーザーに対してプロビジョニングが自動的にクリアされます。 これには、コマンドを実行するユーザーも含まれます。

詳細情報

アプリを追加および削除する方法の詳細については、次を参照してください。