Изготавливая образ Windows 8.1 с интеграцией обновлений я задавался вопросом о metro-приложениях. Официальных способов их обновления в образе я не нашел, поэтому пришлось разбираться вручную.
Методом сравнения слепков реестра до и после обновления встроенных metro-приложений было выяснено, что в реестре за них отвечают следующие ключи:
- HKLM\SOFTWARE\Classes\Local Settings\Software\Microsoft\Windows\CurrentVersion\AppModel\PackageRepository\Packages
- HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\Appx\AppxAllUserStore\Applications
- HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\Appx\AppxAllUserStore\Staged
В этих ключах определенным образом хранятся пути к приложениям и к файлам их манифестов. Вручную удалять-добавлять ключи и параметры нерационально, поэтому я сделал небольшое приложение для автоматизации (требуется .net Framework 4).
Для начала необходимо в папке
\Program Files\WindowsApps заменить старые версии приложений на новые, чтобы не потерять параметры безопасности NTFS, надежнее всего это сделать через
dism: захват папки с обновленными metro-приложениями из эталонной установки и последующее развертывание в необходимый образ. После замены файлов запустить мое приложение, которое просканирует все папки с приложениями и обновит необходимые ключи реестра.
Работоспособность проверена, приложения запускаются без каких-либо проблем.
Но есть некоторые недостатки (причину которых я еще не выяснил, возможно, не учтены какие-то ключи реестра, кто разберется, подскажите):
- В главном меню по умолчанию отсутствуют плитки metro-приложений
- Магазин Windows все равно находит и устанавливает обновления для приложений OneNote и Музыка — но установка этих обновлений не влияет на версию приложений
Предлагайте свои дополнения, кто разобрался в теме глубже.