После одного из обновлений перестали запускаться некоторые Modern Apps. Т.е., совсем. Появляется контур окна, несколько секунд ожидания, все схлопывается.
В логах отображается событие:
Event ID 5973 Activation of app Microsoft.Windows.Photos_8wekyb3d8bbwe!App failed with error: The app didn't start in the required time. See the Microsoft-Windows-TWinUI/Operational log for additional information.
Судя по форумам, я такой не один, и однозначного решения нет. Идиотский совет Microsoft сделать переустановку или обновление поверх, а также создать новый аккаунт и, если там все будет запускать хорошо (т. е., может и не будет?), то мигрировать туда — всю эту бредятину сразу отбрасываем. Считаю, что это, вообще, издевательство такое советовать и мнение мое о Microsoft в целом и Windows в частности сильно пошатнулось.
Единственная полезная информация от Империи — расстановка прав на папки и ключи реестра для приложений
В моем случае, приложения запускались из другого аккаунта, поэтому вариант с неверными правами я сразу исключил.
Совет сделать проверку системных файлов SFC /SCANNOW лишен смысла. Приложения делятся на два типа: системные (System Apps) и приложения магазина (Windows Apps).
К системным относятся, например, Microsoft Edge Browser, Cortana, Start Menu. Они являются частью Windows и лежат в папке C:\Windows\SystemApps. В их случае SFC /SCANNOW может помочь устранить поврежденные файлы.
К Windows Apps относятся приложения, загружаемые из магазина (не суть, что некоторые уже предустановлены в Windows). Это Calculator, Weather, News, Sports, Windows Store, Phone, Messaging, People, Camera, Sound Recorder, Music, Video, Xbox, Maps, Alarms, Photos, Skype, Money, One Note и т. д. Путь к ним C:\Program Files\WindowsApps и C:\Users\*имя_профиля*\AppData\Local\Packages. В их случае использование SFC /SCANNOW бессмысленно.
Т.е., мой случай. Ищем решение дальше.
Следующее предлагаемое на форумах решение — выполнить перерегистрацию приложений. В PowerShell выполнить команду:
Add-AppxPackage -register "C:\Program Files\WindowsApps\*имя_приложения*\AppxManifest.xml" -DisableDevelopmentMode
Имя приложения можно узнать из результатов команды
Get-AppXPackage *ключевое_слово_в_имени*
например, таким ключевым словом может быть calculator или photos (В английской версии эти слова совпадают с названиями приложений, в русской не знаю как).
Так, вызов
Get-AppXPackage *photos*
покажет примерно такое имя:
Microsoft.Windows.Photos_16.325.12390.0_x86__8wekyb3d8bbwe
Его и нужно подстваить в команду перерегистрации.
Пакетно перерегистровать все можно командой
Get-AppXPackage | Foreach {Add-AppxPackage -DisableDevelopmentMode -Register "$($_.InstallLocation)\AppXManifest.xml -Verbose}"
Это позволит переустановить приложения для текущего пользователя. Для переустановки для всех пользователей нужно добавить ключ -AllUsers:
Get-AppXPackage -AllUsers | Foreach {Add-AppxPackage -DisableDevelopmentMode -Register "$($_.InstallLocation)\AppXManifest.xml -Verbose}"
В интернете нет единого мнения, нужно ли запускать консоль с правами администратора или от имени текущего пользователя. Похоже, что от имени текущего, потому что при запуске от админа мне удавалось завершить перерегистрацию, но приложение по прежнему не работало. Поэтому начиная с этого шага даем текущему аккаунту права администратора, тем более, они еще пригодятся дальше.
Итак, увы, но мне перерегистрация не помогла. Получаю ошибку:
Add-AppxPackage : Deployment failed with HRESULT: 0x80073CF6, Package could not be registered. (Exception from HRESULT: 0x80073CF6)
NOTE: For additional information, look for [ActivityId] f0edc05f-cbad-0001-dc1d-eef0adcbd101 in the Event Log or use the command line Get-AppxLog -ActivityID
f0edc05f-cbad-0001-dc1d-eef0adcbd101
Здесь есть подсказка. Чтобы посмотреть логи нужно ввести команду
Get-AppxLog -ActivityID f0edc05f-cbad-0001-dc1d-eef0adcbd101
После некоторого молчания она выведет много-много текста, нас интересует самый конец. Ищем там все, что касается ошибок. Например:
Windows cannot find the resource package manifest in the bundle file: C:\Program
Files\WindowsApps\Microsoft.Windows.Photos_16.325.12390.0_neutral_split.scale-100_8wekyb3d8bbwe\AppxManifest.xml.
Проверяем путь. Здесь первое препятствие. Права на папку C:\ProgramData\Microsoft\Windows\AppRepository\ принадлежат TrustedInstaller, поэтому сперва придется стать владельцем папки и субконтейнеров.
Теперь можно зайти внутрь и убедиться, что, таки да, папки Microsoft.Windows.Photos_16.325.12390.0_neutral_split.scale-100_8wekyb3d8bbwe нет, но есть Microsoft.Windows.Photos_16.325.12390.0_neutral_split.scale-125_8wekyb3d8bbwe
Причем, для более ранних версий приложения есть обе папки. Что это такое я не знаю, похоже на указание масштаба экрана, потому что у меня 125%.
Создаем папку с нужным именем, копируем туда содержимое имеющейся папки. Повторяем перерегистрацию. На этот раз она проходит успешно, приложение работает. После чего возвращаем права обратно - безопасность, все-таки.
Прим. Для системных приложений, например, Edge, перерегистрация выглядит так:
Add-AppxPackage -register "C:\Windows\SystemApps\Microsoft.MicrosoftEdge_8wekyb3d8bbwe\AppxManifest.xml" -DisableDevelopmentMode