とかにもありますが、メンテナンスタスク走るとダメとか、ストアアプリが更新されてるとダメとか。
あとちょっと手順を間違って嵌ったのでそのログ載せておきます。(本来はこのケースにはならないはず)
前提:SysprepするPCで別ユーザー作っていろいろテストしてた → その後ユーザー削除してSysprepしようとしてる状況
Sysprepすると、こんな感じのエラーになります。
2014-08-18 09:29:19, Error SYSPRP Package Microsoft.Internal.Media.PlayReadyClient_2.3.1678.1_x64__8wekyb3d8bbwe was installed for a user, but not provisioned for all users. This package will not function properly in the sysprep image. 2014-08-18 09:29:19, Error SYSPRP Failed to remove apps for the current user: 0x80073cf2. 2014-08-18 09:29:19, Error SYSPRP Exit code of RemoveAllApps thread was 0x3cf2. 2014-08-18 09:29:19, Error [0x0f0082] SYSPRP ActionPlatform::LaunchModule: Failure occurred while executing 'SysprepGeneralize' from C:\Windows\System32\AppxSysprep.dll; dwRet = 0x3cf2 2014-08-18 09:29:19, Error SYSPRP ActionPlatform::ExecuteAction: Error in executing action; dwRet = 0x3cf2 2014-08-18 09:29:19, Error SYSPRP ActionPlatform::ExecuteActionList: Error in execute actions; dwRet = 0x3cf2 2014-08-18 09:29:19, Error SYSPRP SysprepSession::Execute: Error in executing actions from C:\Windows\System32\Sysprep\ActionFiles\Generalize.xml; dwRet = 0x3cf2 2014-08-18 09:29:19, Error SYSPRP RunPlatformActions:Failed while executing SysprepSession actions; dwRet = 0x3cf2 2014-08-18 09:29:19, Error [0x0f0070] SYSPRP RunExternalDlls:An error occurred while running registry sysprep DLLs, halting sysprep execution. dwRet = 0x3cf2 2014-08-18 09:29:19, Error [0x0f00a8] SYSPRP WinMain:Hit failure while processing sysprep generalize internal providers; hr = 0x80073cf2
この例だとMicrosoft.Internal.Media.PlayReadyClient_2.3.1678.1_x64__8wekyb3d8bbweというストアアプリのパッケージがインストールされてるけど、全ユーザー用にプロビジョニングされてない云々。
まぁよくわからないので消しましょう。
消すのはこんな感じでパッケージ一覧から対象を絞ってRemove-AppxPackageすればいいのですが
Get-AppxPackage -AllUsers | Where Name -Like "Microsoft.Internal.Media.PlayReadyClient" | Remove-AppxPackage
実はインストールしたと思われるユーザーが既に居ないのでこんな感じのエラーになります。
Remove-AppxPackage : 次の HRESULT で展開に失敗しました: 0x80073CF1, パッケージが見つかりませんでした。 Microsoft.Internal.Media.PlayReadyClient_2.3.1678.1_x64__8wekyb3d8bbwe を削除できません。このパッケージは現在のユーザー によってインストールされていません。Get-AppxPackage を使用して、インストール済みのパッケージの一覧を確認してください。 注意: 詳細については、イベント ログで [ActivityId] 9eaa6891-ba86-0000-cb6b-aa9e86bacf01 を検索するか、コマンド ラインの Get-AppxLog -ActivityID 9eaa6891-ba86-0000-cb6b-aa9e86bacf01 を使用してください 発生場所 行:1 文字:91 + ... ReadyClient" | Remove-AppxPackage + ~~~~~~~~~~~~~~~~~~ + CategoryInfo : ObjectNotFound: (Microsoft.Inter...__8wekyb3d8bbwe:String) [Remove-AppxPackage], PSInval idOperationException + FullyQualifiedErrorId : DeploymentError,Microsoft.Windows.Appx.PackageManager.Commands.RemoveAppxPackageCommand
パッケージの情報を見てみると
PS C:\Users\Administrator> Get-AppxPackage -AllUsers | Where Name -Like "Microsoft.Internal.Media.PlayReadyClient" Name : Microsoft.Internal.Media.PlayReadyClient Publisher : CN=Microsoft Corporation, O=Microsoft Corporation, L=Redmond, S=Washington, C=US Architecture : X64 ResourceId : Version : 2.3.1678.1 PackageFullName : Microsoft.Internal.Media.PlayReadyClient_2.3.1678.1_x64__8wekyb3d8bbwe InstallLocation : IsFramework : True PackageFamilyName : Microsoft.Internal.Media.PlayReadyClient_8wekyb3d8bbwe PublisherId : 8wekyb3d8bbwe PackageUserInformation : {S-1-5-21-3666498170-41186751-951461201-500 [不明なユーザー]: Installed} IsResourcePackage : False IsBundle : False IsDevelopmentMode : False
「不明なユーザー」(Unknown User)になってます。よくわからないけど、Remove-AppxPackageだと削除できない様子、、、
しょうがないのでレジストリから上記のNameで(パッケージ名で)検索してHitするキー(2個ぐらい)を消したり、Program Filesから実体のファイルを消したりしましたが、Get-AppxPackageは C:\ProgramData\Microsoft\Windows\AppRepository\PackageRepository.edb のEDBファイルの中を見てる様子。(このフォルダにもパッケージの情報(XMLファイル)があるので、そちら消してもかわらず)
うーんしょうがないなぁということでAppXSvc(AppX Deployment Service)を止めて、PackageRepository.edbやedb.chk、edb.logなどEDBファイル関連消してサービス起動するとPackageRepository.edbは再生成されるのですがどうもリビルドされず空っぽ。(Get-AppxPackageが空になる)
という感じでどうしようもなくなりました。ストアアプリの一覧のリフレッシュ方法があった気がするんですが思い出せないのでどうしようもなくなりました。やれやれ。
どうでもいいけどEDB見るならRemove-AppxPackageで強制的に削除するとか何かしら救済処置が無いとどうしようもないんではないでしょうか。まだまだWindows Storeアプリは(主にエンタープライズ向けの機能やらが)こなれてないですねー。
というわけでSysprep時は注意しましょう。