Windows 8 ではデフォルトでいくつかのストアアプリがインストールされています。
# 既定でプロビジョニング済みの WinRT アプリ
ストアアプリを更新した場合、Sysprep を実行した場合にエラーが発生することがあります。
Removing or Updating Windows 8 built-in Windows Store apps causes Sysprep to fail
最新のストアアプリをインストールした状態で Sysprep を実行するための方法についてまとめてみたいと思います。
更新の仕方の技術情報は以下のものになります。
アプリの追加と削除の方法
以下の画像は Windows 8 Enterprise Edition でデフォルトでインストールされているストアアプリで更新が可能なものとなります。
これらのストアアプリを更新した状態で Sysprep を実行してみると以下のようにエラーが発生します。
Sysprep を実行した際のエラーですが、[C:WindowsSystem32SysprepPanthersetuperr.log] に出力がされます。以下はログファイルの内容です。
2013-06-02 15:18:15, Error SYSPRP Package Microsoft.Reader_6.2.9200.20623_x64__8wekyb3d8bbwe was installed for a user, but not provisioned for all users. This package will not function properly in the sysprep image. |
2013-06-02 15:18:15, Error SYSPRP Package Microsoft.Reader_6.2.9200.20623_x64__8wekyb3d8bbwe was installed for a user, but not provisioned for all users. This package will not function properly in the sysprep image.
最初に発生しているエラーは上記のものですね。
ビルトインでインストールされているストアアプリをアップデートしてしまうと Sysprep 時にエラーとなってしまうようです。
ストアアプリをアップデートしない状態であれば、Sysprep を実行することは可能です。
アップデートしてしまった場合は、アップデートしたストアアプリをアンインストールする必要があるようです。
インストールされたストアアプリ (サイドローディングされた WinRT アプリを含む) ですが管理者として実行した PowerShell で Get-AppxPackage Get-AppxProvisionedPackage コマンドレットを使用することで確認することができます。
App Installation Cmdlets in Windows PowerShell を見ると関連するコマンドレットを調べることができそうですね。
デフォルトでインストールされているものに関しては以下のようなコマンドで取得できます。
Get-AppxPackage -AllUser | Where PublisherId -eq 8wekyb3d8bbwe | Format-List -Property PackageFullName,PackageUserInformation |
ストアアプリを削除する場合には以下のようなコマンドを実行します。
# 以下のコマンドはインストールメディアでインストールされるストアアプリを削除するものになります。
Get-AppxPackage -AllUser | Where PublisherId -eq 8wekyb3d8bbwe | Remove-AppxPackage |
パッケージを削除するとスタート画面からもアプリケーションが削除されます。
この状態であればアップデートしてしまった場合も Sysprep をかけることができるようになると思います。
なお、ストアアプリのですが、
- インストールされたアプリケーション
- プロビジョニングされたアプリケーション
の 2 種類があります。
インストールされているアプリケーションはストアアプリから任意にインストールしたアプリケーションになります。
このアプリケーションは Sysprep した際には再度明示的にインストールをする必要があります。
プロビジョニングされたアプリケーションは初回ログイン時に自動的にインストールされるアプリケーションになります。
Remove-AppxPackage はインストールされているアプリケーションの削除になりますので、ログイン時にインストールされるアプリケーションに関しては削除されていません。
そのため、新規ユーザーの初回ログイン時にはプロビジョニングされたアプリケーションがインストールされます。
初回ログイン時にアプリケーションをインストールされないようにするためにはプロビジョニングされたアプリケーションの削除を行います。
プロビジョニングされたアプリケーションを削除する場合には以下のコマンドを実行します。
Get-AppxProvisionedPackage -Online | Where PublisherId -eq 8wekyb3d8bbwe | Remove-AppxProvisionedPackage -Online |
インストールされているアプリケーションとプロビジョニングされているアプリケーションの管理は別のようですので、プロビジョニングされているアプリケーションのバージョンを最新にするためには、一度プロビジョニングされているアプリケーションを削除してから追加する必要があるようです。
Sysprep 実行時のエラーに関しては、インストールされたアプリケーションの更新によるもののようですので、プロビジョニングされたアプリケーションについては削除しなくてもエラーは回避できると思います。
プロビジョニングされたアプリケーションとインストールされたアプリケーションは個別のバージョン管理となるようですので、インストールされているアプリケーションを更新してもプロビジョニングされたアプリケーションのバージョンは変わらないようです。
初回ログイン時に展開されるストアアプリを最新のバージョンにするためにはプロビジョニングされたアプリケーションのバージョンを変更する必要があるようです。
Add-ProvisionedPackage ではパッケージの appx を指定する必要があるのですが、ストアアプリから特定のアプリケーションを追加するための方法が見つかりませんでした…。
特定のストアアプリを含めて展開をしたいという要望があった場合は、それが実現可能なのかは注意したほうがよいかもしれないですね。
# ストアアプリをプロビジョニングされたアプリケーションとして追加するための公開されている情報が見つからなかったので、インシデントを使って実現可能かを問い合わせないといけなさそうですが。