Создание пакетов приложений

С новыми наборами приложений Windows 8.1 процедура представления приложений становится проще, чем когда-либо. А пакеты ресурсов позволяют предложить дополнительные возможности (например, локализацию или ресурсы для дисплеев высокого разрешения) заинтересованным клиентам, не создавая чрезмерной нагрузки на дисковое пространство и полосу пропускания, и продавать приложение без этих дополнений тем клиентам, которым они не требуются.

Конкретные примеры использования наборов приложений для рационального развертывания см. в разделе Создание пакета игры Магазина Windows на базе DirectX и на странице для скачивания образцов игр с пакетами ресурсов.

Новые и усовершенствованные возможности Windows 8.1

Ресурсы приложения

В Windows 8.1 реализован новый тип пакетов для моделей приложений. Пакеты ресурсов позволяют разделить пакет основного приложения и дополнительные ресурсы (например, специфические ресурсы для французского языка — строки или изображения) и включить такие ресурсы в свой пакет. Таким образом, пакет ресурсов служит для настройки общего взаимодействия приложения с пользователем без скачивания и установки всех пакетов ресурсов на компьютер пользователя.

Пакет ресурсов используется по желанию, и от него не должен зависеть пакет приложения. Это означает, что пакет приложения должен содержать как минимум один набор ресурсов по умолчанию, который всегда можно использовать, если на компьютере не установлены пакеты ресурсов. Это позволяет выполнить два основных обещания.

  • Пакет приложения всегда можно установить и правильно запустить на любом компьютере без пакета ресурсов.

  • Если установлен неполный пакет ресурсов, у пакета приложения будет достаточно ресурсов для работы.

Пакет ресурсов служит двум целям в модели приложения:

  • Обеспечение потенциальных ресурсов, которые система управления ресурсами сможет использовать в ходе работы приложения для настройки взаимодействия приложения.

  • Предоставление метаданных, которые позволят пакету ресурсов использовать конкретный квалификатор ресурсов (например, масштаб пользователя, масштаб системы и возможности Microsoft DirectX).

Одному пакету ресурсов можно назначить только один квалификатор ресурсов. Зато ваше приложение может иметь много пакетов ресурсов.

Наборы приложений

Помимо пакетов ресурсов в Windows 8.1 появились наборы приложений (или пакеты .appxbundle), которые облегчают оптимизацию процесса создания и рассылки пакетов универсальных приложений Windows и пакетов ресурсов пользователям по всему миру.

Файлы полезных данных для набора приложений создает разработчик. Visual Studio создает и добавляет манифест набора. Когда Microsoft Visual Studio Express 2013 для Windows создает набор приложений, происходит автоматическое распределение ресурсов по отдельным пакетам, а в набор приложений добавляются карта блоков приложения и файлы подписей. Следующие элементы образуют полностью автономное приложение Магазина Windows, которое можно развертывать в Windows 8.1 и более поздних версиях.

Пакеты приложений (.appx)

Набор приложений может содержать несколько пакетов приложения, только если каждый из них предназначен для развертывания на определенной и отличной архитектуре. Например, он может одновременно содержать пакет X86.appx и пакет amd64.appx, но не два пакета amd64.appx.

Пакеты ресурсов (.appx)

Набор приложений содержит пакеты ресурсов (APPX-файлы) для языков, масштабов и уровней возможностей DirectX. Каждый набор приложений может содержать множество различных пакетов ресурсов для поддержки разных конфигураций устройств. Если в вашем приложении Магазина Windows есть прямые ссылки на пакеты ресурсов, вам следует в полной мере использовать систему управления ресурсами.

Примечание  Пакеты ресурсов ни в коем случае не должны содержать код.

Манифест набора приложений (AppxBundleManifest.xml)

Манифест набора приложений (файл с расширением APPXBUNDLEMANIFEST) содержит все данные о применимости имеющихся пакетов. Для каждого отдельного пакета в нем определен тип пакета ("пакет приложения" или "пакет ресурсов"), а также сведения о версии и назначении ресурса. В частности, для пакета приложения манифест набора приложений будет содержать сведения об архитектуре.

Вообще говоря, манифест набора приложений позволяет модели приложения Windows 8.1 знать содержимое набора приложений и в момент установки определять, какой пакет приложения и пакеты ресурсов следует установить на устройство пользователя.

Ниже приведен пример файла манифеста набора приложений.

<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<Bundle xmlns="http://schemas.microsoft.com/appx/2013/bundle" SchemaVersion="1.0">
  <Identity Name="Example" Publisher="CN=ExamplePublisher" Version="2013.101.312.1053"/>
  <Packages>
    <Package Type="application" Version="1.0.0.5" Architecture="x86" FileName="AppPackage_X86.appx" Offset="49" Size="3207">
      <Resources>
        <Resource Language="en-us"/>
        <Resource Scale="100" />
      </Resources>
    </Package>
    <Package Type="application" Version="1.0.0.4" Architecture="x64" FileName="AppPackage_X64.appx" Offset="3329" Size="3204">
      <Resources>
        <Resource Language="en-us"/>
        <Resource Scale="100" />
      </Resources>
    </Package>
    <Package Type="resource" Version="1.0.0.0" ResourceId="French" FileName="ResourcePackage_French.appx" Offset="6606" Size="1423">
      <Resources>
        <Resource Language="fr"/>
        <Resource Language="fr-fr"/>
        <Resource Language="fr-ca"/>
      </Resources>
    </Package>
    <Package Type="resource" Version="1.0.0.3" ResourceId="HiRes" FileName="ResourcePackage_HiRes.appx" Offset="8111" Size="1584">
      <Resources>
        <Resource Scale="140"/>
      </Resources>
    </Package>
  </Packages>
</Bundle>

Схема блоков приложения (AppxBlockMap.xml)

В файле схемы блоков перечислены все файлы, входящие в набор (помимо пакетов приложений и ресурсов), с указанием хэш-значений шифрования, по которым операционная система проверяет целостность файлов и оптимизирует обновление для приложения. Дополнительные сведения о файле схемы блоков см. в разделе Схема блоков пакета приложения.

Подпись приложения (AppxSignature.p7x)

Подпись набора приложений гарантирует, что пакет и его содержимое не изменялись после подписания. Если сертификат подписи проходит проверку как сертификат доверенного корневого центра сертификации, то подпись также определяет, кто подписал пакет. Пакет обычно подписывается издателем или автором приложения.

Примечание  Если вы хотите вручную создать набор приложения, вы можете использовать служебные программы MakeAppx и SignTool. Дополнительные сведения о создании и развертывании набора универсальных приложений Windows см. в документе об упаковке, развертывании и выполнении запросов к приложениям Магазина Windows.

Идентификатор пакета

Как и в случае с пакетами приложений Windows 8, одним из важнейших элементов набора приложений является 5-компонентный кортеж, который определяет набор. Он называется идентификатором пакета и содержит следующие данные.

СвойствоОписание
Имя

Общее имя для пакета приложения. Например, "myCompany.mySuite.myApp".

Примечание  Это имя не обязательно отображается на плитке приложения.
Publisher

Издатель приложения Магазина Windows. В большинстве случаев издатель совпадает с учетной записью, которая использовалась для регистрации учетной записи разработчика Windows 8.

Version

Дескриптор версии, состоящий из четырех блоков цифр (в формате "основная.дополнительная.сборка.редакция"), который используется для выпуска следующих версий приложения (например, "1.0.0.0").

ProcessorArchitecture

По умолчанию выбрано нейтральное значение.

ResourceID

По умолчанию выбрано "~".

 

Развертывание набора приложений

При развертывании набора приложений через Магазин Windows выполняется следующая последовательность действий.

процесс создания пакетов приложений

Процесс развертывания приложения Магазина Windows состоит из нескольких этапов. Сначала Windows 8.1 получает и проверяет манифест набора приложений, схему блоков набора приложений и подпись набора приложений. Затем Windows 8.1 проверяет манифест набора, чтобы убедиться, что в наборе есть приложение, которое можно развернуть в текущей архитектуре. Обнаружив подходящий пакет приложения, Windows 8.1 проверяет, выполняются ли условия для развертывания пакета приложения, чтобы гарантировать успешное развертывание приложения.

Далее Windows 8.1 определяет подмножество применимых пакетов ресурсов для развертывания и помещает эти двоичные файлы пакетов в каталог \WindowsApps\. Наконец, Windows 8.1 регистрирует пакет приложения и пакеты ресурсов в учетной записи пользователя.

Проверка

Чтобы можно было приступить к развертыванию, система Windows 8.1 сразу после того, как пользователь запустит установку приложения Магазина Windows, должна выполнить следующие проверки.

ТестУсловия

Поддержка архитектуры

Набор может содержать до трех пакетов приложений, предназначенных для определенных архитектур, каждый из которых указан в манифесте набора.

Минимальная версия операционной системы

В манифесте пакета приложения задаются необходимые условия. В них указываются требования к определенной минимальной версии операционной системы. Например, Windows 8.1 соответствует номер версии 6.3. Дополнительные сведения о необходимых условиях для приложения см. в разделе Необходимые условия для создания пакетов приложений.

Зависимости приложений

В приложении Магазина Windows может быть указана зависимость от другого пакета компонентов для добавления функций, необходимых приложению. Подробнее о зависимостях приложений см. в подразделе Зависимости раздела "Пакеты приложений и их развертывание (приложения Магазина Windows)".

Дисковое пространство

Каждому приложению Магазина Windows требуется определенное дисковое пространство для развертывания. Если места для развертывания пакета недостаточно, то развертывание завершается ошибкой.

Проверка подписи

Каждый файл в пакете приложения должен пройти проверку на целостность по уже проверенной схеме BlockMap.

 

Применимость пакетов

После того как Windows 8.1 проверит, может ли набор приложений быть развернут в системе, она определяет, какие пакеты ресурсов следует развернуть вместе с пакетом приложения, чтобы оптимизировать взаимодействие пользователя при работе с приложением. Применимость проверяется по трем квалификаторам ресурсов.

КвалификаторОписание

Язык пользователя

Все языки, добавленные пользователем в список предпочитаемых языков, учитываются при определении итогового набора применимых для данного развертывания пакетов языковых ресурсов. Windows 8.1 поддерживает множество языковых стандартов и языков для пакетов ресурсов.

Масштаб системы

Значения масштаба для всех мониторов используются для определения итогового набора применимых пакетов ресурсов масштабов, которые будут развертываться. Windows 8.1 поддерживает три коэффициента масштабирования для пакетов ресурсов: scale-100 (масштаб-100), scale-140 (масштаб-140) и scale-180 (масштаб-180).

Уровень возможностей DirectX

Все уровни возможностей DirectX, имеющиеся в системе, используются для определения итогового набора применимых пакетов ресурсов DirectX, которые будут развертываться. Windows 8.1 поддерживает для пакетов ресурсов DirectX три уровня возможностей: DXFL-DX9, DXFL-DX10 и DXFL-DX11.

 

Сохранение пакета

После того как Windows 8.1 определит, что набор приложений может быть развернут в системе, и выберет пакеты для развертывания, выполняется скачивание содержимого пакета в каталог \WindowsApps\. Для каждого скачиваемого пакета создается новый каталог, в имени которого используется идентификатор пакета.

<Package Name>_<Version>_<Architecture>_<ResourceID>_<Publisher Hash>

Сохранение выполняется посредством серии запросов, отправляемых подсистемой развертывания в источник пакета. Источник обрабатывает эти запросы и возвращает данные в подсистему развертывания, которая распаковывает их, проверяет по BlockMap и копирует в соответствующий файл.

Регистрация пакета

Регистрация пакета — это заключительный этап развертывания. На этом этапе выполняются две основные операции:

  • Расширения, объявленные в манифесте пакета приложения, регистрируются в операционной системе. Это обеспечивает глубокую интеграцию приложения и операционной системы. Например, если нужно, чтобы приложение открывало текстовые файлы (с расширением TXT), объявите расширение FileTypeAssociation в XML-коде в манифесте вашего пакета приложения и укажите тип файлов ".txt".

    Во время развертывания этот XML-код преобразуется в набор изменений системы, которые необходимо выполнить, чтобы правильно зарегистрировать приложение для обработки TXT-файлов. Затем эти изменения применяются моделью приложения от имени приложения. Модель приложения поддерживает множество различных расширений. Подробнее об этих расширениях см. в разделе Контракты приложений и расширения.

  • Все пакеты ресурсов регистрируются в системе управления ресурсами и могут потом использоваться для оптимизации взаимодействия с пользователем при выполнении приложения.

 

 

Показ: