こんにちは。Windows サポート チームの沖です。
今回は、Windows 10 Version 1703 (RS2) 以前のバージョンから、Windows 10 Version 1709 (RS3) もしくは Windows 10 Version 1803 (RS4) へ機能アップデートをすることにより、UWPアプリで以下の事象が発生する場合があるという報告をいくつか受けておりますため、本ブログでは事象が発生した場合にお試し頂きたい手順をご紹介させて頂きます。
- タイルにピン留めできない。
- タイルのレイアウトがインポートできない。
- タスクバーにピン留めできない。
- タイルの右クリックで表示されるメニューに[スタートからピン留めを外す]のメニューがない、などメニューが不正。
- [設定]が起動できない。
※ 歯車アイコンから起動できない、右クリックから[設定]から起動できない、両方から起動できない。
- アイコンの表示が不正/タイルの表示が黒くなるなど不正。
- スタートメニューにアイコンが表示されない。
- ストアアプリをクリックしても起動しない。
- ストアアプリをクリックして起動しても直ぐに強制終了する。
尚、Windows 10 1809 (RS5) には既に本修正が含まれているため、1809 (RS5) 以降への機能アップデートでは発生しませんためご安心ください。
原因
Windows 10 Version 1703 以前と Windows 10 Version 1709 以降では、UWP アプリと [スタート] メニューが使用する内部的な情報の保持の方法に大きな差がございます。
Windows 10 Version 1703 以前では、 [スタート] パネル上のタイルの情報やアプリケーションの一覧情報は “Tile Data Layer” と呼ばれるユーザーごとのローカル キャッシュに独立して存在しておりましたが、Windows 10 Version 1709 以降では“Central State Repository” と呼ばれる全てのアプリ、パッケージ、タイル情報を集約して管理するデータベースを使用するよう変更が行われました。
そのため、Version 1703 以前の Windows 10 を Version 1709 または 1803 へ機能アップデートいただく際には、アップデートのプロセス内で “Tile Data Layer” 上の情報を“Central State Repository” に移行する処理が行われます。
この移行は、機能アップデートが完了しユーザーが初回サインインを行った際に行われますが、同時に、ユーザーとUWPアプリの関連付けも発生します。この二つの処理が偶発的に重なった結果 “Central State Repository” 上に重複したデータが登録されることがございます。
これにより、タイル情報やスタート メニューのアプリケーションの一覧とユーザーの一意な関係性が破壊され、データベースの制約に違反する状態となるため“Central State Repository” を完了することができなくなり、本事象に至る場合があることを確認しております。
発生する条件
これまでに寄せられているお問い合わせより、Windows 10 のマスタ イメージを作成する際に CopyProfile オプションを使用していると、比較的発生しやすい傾向がございます。
しかしながら、誠に恐れ入りますが、現時点で本事象が発生する明確な条件については弊社でも確認が出来ておりません。
本事象に合致していることの確認方法
本事象に合致している場合には、例えば、イベント ログへ以下のようなエラー コード 0x87AF0813 (SQLITE_E_CONSTRAINT_UNIQUE) を含むイベントが記録されます。
イベント例 1:
===============
ログの名前: Microsoft-Windows-AppXDeploymentServer/Operational
ソース: Microsoft-Windows-AppXDeployment-Server
イベント ID: 401
タスクのカテゴリ: (3)
レベル: エラー
キーワード: AppXDeploymentServer Keyword
説明:
エラー 0x87AF0813 が発生したため、 (AppxBundleManifest.xml) からのパッケージ Microsoft.WindowsCalculator_2018.402.631.0_neutral_~_8wekyb3d8bbwe に対する展開 Register 操作 (ターゲット ボリューム C:) に失敗しました。アプリの展開に関する問題の診断については、http://go.microsoft.com/fwlink/?LinkId=235160 を参照してください。
イベント例 2:
===============
ログの名前: Microsoft-Windows-StateRepository/Operational
ソース: Microsoft-Windows-StateRepository
イベント ID: 100
タスクのカテゴリ: (1)
レベル: エラー
キーワード: StateRepository Keyword
説明:
エラー 0x87AF0813: [sqlite3_step] #5 Database 2899A309DC0: Statement 2899C3DC940 OK: Try 1 (0ms) UNIQUE constraint failed: PrimaryTileUser.TileUniqueId, PrimaryTileUser._WorkId : SQL INSERT INTO PrimaryTileUser (_Revision, _WorkId, _Created, _Modified, PrimaryTile, User, State, TileUniqueId, _Dictionary) VALUES(?,?,?,?,?,?,?,?,?);
イベント例 3:
===============
ログの名前: Microsoft-Windows-AppReadiness/Admin
ソース: Microsoft-Windows-AppReadiness
イベント ID: 12
タスクのカテゴリ: (6)
レベル: エラー
キーワード: (128)
説明:
ユーザー 'testuser01' に対する Appx プレビュー タイルの生成に失敗しました: 。(結果: SQLITE_CONSTRAINT_UNIQUE)
イベント例 4:
===============
ログの名前: Microsoft-Windows-AppReadiness/Operational
ソース: Microsoft-Windows-AppReadiness
イベント ID: 11
タスクのカテゴリ: (6)
レベル: 警告
キーワード: (128)
説明:
例外が検出されました: SQLITE_CONSTRAINT_UNIQUE。
事象が発生した場合の対処
本事象が発生致しましたら、以下 2 つの操作をお試し頂きますようお願いいたします。
(1) 機能アップデート後のバージョンごとの以下以降の更新プログラムをご適用ください。
以下更新プログラムを適用後にログオンするユーザーについては、本ブログの冒頭でご紹介した事象が修正されておりますため適用により問題が発生しなくなるかご確認頂きますようお願いいたします。
※※※ 注意点 ※※※
機能アップデート後、以下の更新プログラムを適用する前にログオンを行ったユーザーについては、更新プログラムを適用しても事象が改善されない場合がございます。その場合には "更新プログラム適用後の操作" の手順を実施頂きますようお願いいたします。
▼ Windows 10 1709 の場合
September 26, 2018—KB4457136 (OS Build 16299.699)
https://support.microsoft.com/en-us/help/4457136
▼ Windows 10 1803 の場合
September 26, 2018—KB4458469 (OS Build 17134.320)
https://support.microsoft.com/en-us/help/4458469
(2) 更新プログラム適用後の操作
更新プログラムの適用を行っても引き続き、事象が発生しているユーザーにつきましては以下をお試し頂きますようお願いいたします。
アプリの再登録による復旧手順は事象の発生状況より下記の記載の通り複数ございます。
まずは方法 1 より順に実行いただいて都度アプリが起動できた場合には以降の手順実施は不要です。
------------------------------------------------------------
*方法1:UWP アプリの再インストール
// 特定の UWP アプリに対して実行する場合
1.PowerShellを起動(ユーザ権限)
2.以下のコマンドを実行
$repairePacakages = @("Microsoft.WindowsCalculator", "Microsoft.MicrosoftStickyNotes") $repairePacakages | ForEach-Object {
$PhotosManifestPath = (Get-AppxPackage -Name $_).InstallLocation + "Appxmanifest.xml"
Add-AppxPackage -Path $PhotosManifestPath -Register -DisableDevelopmentMode }
※ Microsoft.WindowsCalculator や Microsoft.MicrosoftStickyNotesは、Get-AppxPackage | ForEach-Object {$_.Name}で表示される名称を指定します。
// すべての UWP アプリに対して実行する方法
既に貴社でもお試し頂いております以下コマンドを実行することで再インストールを行うことが可能です。
Get-AppXPackage | Foreach {Add-AppxPackage -DisableDevelopmentMode -Register "$($_.InstallLocation)AppXManifest.xml"}
------------------------------------------------------------
*方法2:UWP アプリのパッケージから再インストール
(上書きインストール相当。アプリケーションによっては保存されているデータが上書きにより削除される可能性がございます。)
// 特定の UWP アプリに対して実行する場合
1.PowerShellを起動(ユーザ権限)
2.以下のコマンドを実行
$repairePacakages = @("Microsoft.WindowsCalculator", "Microsoft.MicrosoftStickyNotes") $repairePacakages | ForEach-Object {
Add-AppxPackage -MainPackage (Get-AppxPackage -Name $_).PackageFullName }
※ Microsoft.WindowsCalculator や Microsoft.MicrosoftStickyNotesは、Get-AppxPackage | ForEach-Object {$_.Name}で表示される名称を指定します。
// すべての UWP アプリに対して実行する方法
1.PowerShellを起動(ユーザ権限)
2.以下のコマンドを実行
Get-AppXPackage | Foreach {Add-AppxPackage -MainPackage $_.PackageFullName}
------------------------------------------------------------
*方法3:アプリケーションの起動に伴う登録
例として電卓及び、StickyNotes に関する手順となります。
以下実行すると電卓と StickyNotes が起動されます。
そのため、本手順を実施頂く場合には UWP アプリをご指定頂くようお願いいたします。
1.PowerShellを起動(ユーザ権限)
2.以下のコマンドを実行
$repairePacakages = @("Microsoft.WindowsCalculator", "Microsoft.MicrosoftStickyNotes") $repairePacakages | ForEach-Object {
$repaireFamilyName = (Get-AppxPackage -Name $_).PackageFamilyName
$repaireApplication = (Get-AppxPackage -Name $_ | Get-AppxPackageManifest).Package.Applications.Application.Id
Start-Process Shell:AppsFolder"$repaireFamilyName"!"$repaireApplication"
}
------------------------------------------------------------
*方法4:UWP アプリをインストール済みパッケージから削除してから再インストール
以下手順では、インストール済みの UWP アプリを削除後、プロビジョニング パッケージより
再度インストールを行う方法となります。
※本手順では UWP アプリを削除して、再インストールを行います。
※インストールを行った後に、次回の UWP アプリのアップデートが行われるまではスタート メニュー上で英語表記となる可能性がございますため、予めご了承ください。
// 特定の UWP アプリに対して実行する場合
1.PowerShellを起動(管理者権限)
2.以下のコマンドを実行
$repairePacakages = @("Microsoft.WindowsCalculator", "Microsoft.MicrosoftStickyNotes") $repairePacakages | ForEach-Object {
Get-AppxPackage -Name $_ | Remove-AppxPackage
$reinstallPackage = $_
Get-AppxProvisionedPackage -Online | Where-Object {if ($_.DisplayName -like $reinstallPackage){$repairePackageName=$_.PackageName}}
Add-AppxPackage -MainPackage $repairePackageName } ※ 英語版になりますが、次回のアップデート時に、日本語リソースがインストールされます。
// インストールされているすべての UWP アプリに対して実行する方法
以下は、インストールされている UWP アプリをすべて削除してから、プロビジョニング
パッケージより再度インストールする方法となります。
そのため、プロビジョニング パッケージに含まれていないパッケージ (ユーザーが個別に
インストールした UWP アプリなど。)は再インストールされません。
$repairePacakages = get-appxpackage
$repairePacakages | ForEach-Object {
Get-AppxPackage -Name $_ | Remove-AppxPackage
$reinstallPackage = $_.Name
Get-AppxProvisionedPackage -Online | Where-Object {if ($_.DisplayName -like $reinstallPackage){$repairePackageName=$_.PackageName}}
Add-AppxPackage -MainPackage $repairePackageName }
------------------------------------------------------------
その他の対処方法
上記更新プログラム (KB4457136/KB4458469) を機能アップデートを行うインストール イメージに統合 (あらかじめ含まれた状態) することで当初より本事象が発生しないよう、未然に防げる可能性がございます。
そのため、アップデートを実施されます際は上記の更新プログラムを統合頂いたインストール イメージでの機能アップデートをご検討頂けますと幸いでございます。
以上の通りお伝えいたします。
弊社製品の問題によりご迷惑をお掛け致しますことを重ねてお詫び申し上げます。