Одна из наибольших работ, которая была проделана для улучшения Windows 8.1 — это та, при которой вы могли бы иметь приложение, которое сможет поддерживать целый ряд различных вариаций:
- архитектура процессора (x86, x64, ARM)
- язык (например, английский, французский)
- масштабирование дисплея (например, 80, 100, 140, 180)
- и даже больше эзотерических вариантов, таких как уровень поддержки DirectX
Как правило, эти вещи никак не отобразятся на системе пользователя и поэтому был смысл разделить код приложения и ресурсы, так, чтобы во время развертывания система была достаточно сообразительна, чтобы загрузить только те данные, которые необходимы для определенного пользователя (устройства).
В Windows 8.0 данной возможности не было, и различные архитектуры также были представлены в магазине отдельно, но для Windows 8.1 данный вариант изменяют пакеты ресурсов и объединение приложений.
Данный вариант очень подробно объясняется на MSDN и я понял, что это действительно стоит прочитать. В общем, мое упрощенное понимание:
- App Packages — новый тип пакета, который содержит только ресурсы для конкретной комбинации языка / масштабов / и т.д..
- App Packages могут быть объединены в комплект таким образом, что (например) архитектуры (x86/x64/ARM) могут оказаться в одной связке, а также ряд пакетов ресурсов, и все это можно выложить в магазин на одном дыхании
- Система стала умной и теперь во время развертывания она будет скачивать и устанавливать только то, что необходимо для конкретного пользователя на конкретном компьютере
Вот интересный пример на данную тему: Application resources and localization sample при сборе пакета которого можно заметить, как английские, так и французские, японские ресурсы, а также ресурсы (изображений в данном случае) в различных масштабах:
В итоге получится appxbundle файл (переименовываем его в ZIP-файл.).
И вы сможете увидеть разделенные ресурсы масштабов и языков (французский, японский). Обратите внимание, что не все ресурсы будут разделены, т.к. ресурсы для языка по умолчанию должны присутствовать.
Вы также можете покопаться в папке AppMetadata и увидеть XML, в котором описывается разделение. Вот что получилось в моем случае:
- <?xml version=»1.0″ encoding=»UTF-8″ standalone=»no»?>
- <Bundle xmlns=»http://schemas.microsoft.com/appx/2013/bundle» SchemaVersion=»1.0″>
- <Identity Name=»Microsoft.SDKSamples.ApplicationResources.CS» Publisher=»CN=Microsoft Corporation, O=Microsoft Corporation, L=Redmond, S=Washington, C=US» Version=»2013.919.1827.1392″/>
- <Packages>
- <Package Type=»application» Version=»1.0.0.0″ Architecture=»neutral» FileName=»ApplicationResources_1.0.0.0_AnyCPU_Debug.appx» Offset=»76″ Size=»161818″>
- <Resources>
- <Resource Language=»EN»/>
- </Resources>
- </Package>
- <Package Type=»resource» Version=»1.0.0.0″ ResourceId=»split.language-fr» FileName=»ApplicationResources_1.0.0.0_language-fr.appx» Offset=»161993″ Size=»4488″>
- <Resources>
- <Resource Language=»fr-fr»/>
- </Resources>
- </Package>
- <Package Type=»resource» Version=»1.0.0.0″ ResourceId=»split.language-ja» FileName=»ApplicationResources_1.0.0.0_language-ja.appx» Offset=»166580″ Size=»33307″>
- <Resources>
- <Resource Language=»ja»/>
- </Resources>
- </Package>
- <Package Type=»resource» Version=»1.0.0.0″ ResourceId=»split.scale-140″ FileName=»ApplicationResources_1.0.0.0_scale-140.appx» Offset=»199984″ Size=»22592″>
- <Resources>
- <Resource Scale=»140″/>
- </Resources>
- </Package>
- <Package Type=»resource» Version=»1.0.0.0″ ResourceId=»split.scale-180″ FileName=»ApplicationResources_1.0.0.0_scale-180.appx» Offset=»222673″ Size=»27150″>
- <Resources>
- <Resource Scale=»180″/>
- </Resources>
- </Package>
- </Packages>
- </Bundle>
Ссылка на источник: Windows 8.1–Resource Packages and App Bundles
Добавить комментарий