Windows 8以降のSysprep嵌りポイント

とかにもありますが、メンテナンスタスク走るとダメとか、ストアアプリが更新されてるとダメとか。

あとちょっと手順を間違って嵌ったのでそのログ載せておきます。(本来はこのケースにはならないはず)

前提: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時は注意しましょう。

広告

コメントを残す

以下に詳細を記入するか、アイコンをクリックしてログインしてください。

WordPress.com ロゴ

WordPress.com アカウントを使ってコメントしています。 ログアウト / 変更 )

Twitter 画像

Twitter アカウントを使ってコメントしています。 ログアウト / 変更 )

Facebook の写真

Facebook アカウントを使ってコメントしています。 ログアウト / 変更 )

Google+ フォト

Google+ アカウントを使ってコメントしています。 ログアウト / 変更 )

%s と連携中