Информация
Запрошенная вами тема показана ниже. Однако эта тема не включена в библиотеку.

Пакеты приложений и их развертывание (приложения среды выполнения Windows)

[ Эта статья адресована разработчикам приложений среды выполнения Windows для Windows 8.x и Windows Phone 8.x. При разработке приложений для Windows 10 см. раздел последняя документация]

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

Пакет приложения представляет собой контейнер, созданный по стандарту Open Packing Conventions (OPC). Стандарт OPC определяет структурные методы для хранения данных и ресурсов приложения с использованием стандартного ZIP-файла. Дополнительную информацию об использовании Microsoft Visual Studio для развертывания пакетов приложений см. в разделе Развертывание приложений среды выполнения Windows с помощью Visual Studio.

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

Развертывание приложения среды выполнения Windows

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

В процессе обновления новая версия приложения скачивается и устанавливается в профиле пользователя. Сразу после этого старая версия удаляется с устройства. В отличие от установщика Windows, для развертывания приложения среды выполнения Windows не используются файлы исправлений или какие-то иные файлы.

Примечание  

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

Дополнительную информацию о развертывании см. в разделе Развертывание приложений среды выполнения Windows.

Пакеты приложений среды выполнения Windows — APPX

Все компоненты, определяющие приложение среды выполнения Windows, хранятся в пакете приложения среды выполнения Windows. Файл пакета приложения среды выполнения Windows имеет расширение APPX и служит единицей установки для приложения среды выполнения Windows. Пакеты приложений среды выполнения Windows являются файлами-контейнерами формата ZIP, которые определены в рамках стандартов Open Packaging Conventions (OPC) в ISO и ECMA. Каждый пакет приложения среды выполнения Windows содержит файлы полезных данных приложения, а также данные, необходимые для проверки, развертывания, обновления приложения и управления им. На высоком уровне каждый пакет приложения среды выполнения Windows содержит следующие элементы:

Полезная нагрузка приложения

Файлы программного кода и ресурсы приложения

Файлы полезных данных — это файлы программного кода и ресурсы, которые создаются при разработке приложения среды выполнения Windows.

Манифест приложения

Файл манифеста приложения (Package.appxmanifest)

В манифесте приложения объявляется удостоверение приложения, его возможности и данные для его развертывания и обновления. Подробнее о файле манифеста приложения см. в разделе Манифест пакета приложения.

Схема блоков приложения

Файл схемы блоков для пакета приложения (AppxBlockMap.xml)

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

Подпись приложения

Файл цифровой подписи пакета приложения (AppxSignature.p7x)

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

Описанные выше элементы образуют полностью автономное приложение среды выполнения Windows, которое можно развертывать в Windows 8 и более поздних версиях, а также в Windows Phone 8.1 и более поздних версиях. Файлы полезных данных и файл манифеста для приложения создает разработчик. Во время упаковки приложения Visual Studio автоматически добавляет в пакет файл схемы блоков приложения и файл подписи. Чтобы упаковать пакет вручную, можно использовать изолированную программу MakeAppx и служебные программы SignTool. В следующих разделах описывается упаковка и развертывание приложений среды выполнения Windows.

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

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

Name

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

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

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

Version

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

Примечание  Необходимо указывать все четыре части дескриптора версии.
 
ProcessorArchitecture

Целевая архитектура пакета приложения. Может иметь значение "x86", "x64", "arm" или "neutral". Во многих случаях это поле будет иметь значение "neutral", что представляет все архитектуры.

ResourceID

Необязательно.

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

Если вы создаете пакет вручную, откройте элемент Identity.

Формат пакета

Здесь описываются пакеты приложений, то есть формат APPX-файлов.

Пакеты приложений доступны только для чтения

Хотя пакеты приложений частично соответствуют стандарту OPC, мы не рекомендуем использовать существующие API для операций с OPC- или ZIP-файлами и редактирования пакетов приложений. После создания пакета приложения считайте, что он доступен только для чтения. Процессы Visual Studio и MakeAppx, которые создают пакеты Appx, автоматически создают и добавляют в пакет файл AppxBlockMap.xml. Если содержимое пакета меняется, то необходимо обновить файл схемы блоков пакета. Чтобы создать новый пакет и файл схемы блоков, необходимо перестроить пакет в Visual Studio с помощью команды MakeAppx или API IAppxPackageWriter собственного кода Windows 8.

Имена файлов полезных данных пакета приложения

Для соответствия стандарту OPC имена путей ко всем файлам, хранящимся в пакете приложения, должны иметь формат универсального кода ресурса (URI). Пути к файлам, не отвечающие стандарту URI, должны кодироваться знаками процента при сохранении в пакете, а при извлечении из пакета декодироваться в исходные пути. Например, файл полезных данных имеет путь и имя, содержащие пробелы и зарезервированные знаки URI "[" и "]":


\my pictures\kids party[3].jpg

Когда такой файл полезных данных сохраняется в пакете приложения, его путь принимает вид:


/my%20pictures/kids%20party%5B3%5D.jpg

Visual Studio, упаковщик приложений (MakeAppx) и API упаковки автоматически выполняют кодирование (знаками процента) и декодирование путей к файлам. Если извлечь файлы непосредственно из пакета приложения с помощью обычных программ или API для работы с ZIP-архивами, то пути к файлам могут оставаться закодированными знаками процента. Поэтому рекомендуется извлекать файлы из пакета приложения с помощью команды распаковки MakeAppx или API IAppxPackageReader.

Емкость пакетов приложений

Пакеты приложений имеют следующие ограничения по емкости приложений.

Емкость пакетаМаксимум
Количество файлов100 000 файлов
Размер пакета100 ГБ

 

Зарезервированные пути и имена файлов в пакете приложения

Следующие пути и имена файлов зарезервированы, и их нельзя использовать для файлов полезных данных приложений:

Зарезервированные пути и имена файловИспользуйте
/Package.appxmanifestЗарезервированное имя файла для манифеста пакета приложения, созданного разработчиком
/AppxBlockMap.xmlЗарезервированное имя файла для схемы блоков пакета приложения
/AppxSignature.p7xЗарезервированное имя файла для цифровой подписи Microsoft Authenticode пакета приложения
/[Content_Types].xmlЗарезервированное имя файла для метаданных типов содержимого, требуемых для пакета приложения стандартом OPC
/AppxMetadata/Зарезервированный путь к папке для файлов метаданных пакета приложения
/Microsoft.System.Package.Metadata/Зарезервированный путь к папке для файлов метаданных Майкрософт о развернутых пакетах приложений

 

Цифровые подписи пакетов приложений

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

  • Имя субъекта сертификата подписи кода должно соответствовать атрибуту Publisher, который указан в элементе Identity файла AppxManifest.xml в пакете приложения.
  • Хэш-алгоритм, используемый для подписания пакета приложения, должен соответствовать алгоритму, по которому создавался файл AppxBlockMap.xml в пакете приложения. Этот хэш-алгоритм указывается в атрибуте HashMethod элемента BlockMap.
  • Для пакета приложения нельзя задать отметку времени независимо от подписания. Если требуется отметка времени, то она должна задаваться во время подписания.
  • Пакеты приложений не поддерживают несколько вложенных подписей.

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

Декларативная установка

Развертывание приложения среды выполнения Windows — это полностью декларативный процесс, который основан на манифесте пакета приложения. В манифесте пакета приложения задаются желательные параметры интеграции с операционной системой. Например, в манифесте пакета приложения заявляется необходимость использования некоторого сопоставления типа файлов (JPG и т. п.) в операционной системе.

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

В манифесте пакета приложения можно объявить широкий спектр технологий в рамках установки приложения среды выполнения Windows.

Необходимые условия для приложения:  

Для успешного развертывания приложения операционная система должна удовлетворять всем условиям этого приложения, которые приводятся в манифесте пакета приложения. Например, если в версии операционной системы доступен новый API, который вызывается приложением среды выполнения Windows, то в приложении объявляется необходимое условие, задающее минимальную версию операционной системы. В этом случае перед установкой приложения на конечном устройстве должна быть нужная операционная система. В Windows 8 и Windows Phone 8.1, а также в их более поздних версиях в манифесте пакета приложения можно объявлять следующие ключевые типы необходимых условий.

OSMinVersion

Задает минимальную версию операционной системы и платформы модели приложений, в которых разрешается выполнение данного приложения.

OSMaxVersionTested

Задает максимальную версию операционной системы, в которой приложение тестировалось разработчиком и заведомо работоспособно. По этому полю необходимого условия операционная система определяет проблемы с совместимостью приложения, которые могут обнаружиться при его использовании. Например, если приложение вызывает некоторый API из пакета SDK Windows 8, а в следующей версии операционной системы этот API изменяется, то приложение может работать неправильно. Это поле необходимого условия гарантирует, что операционная система может выявить и исправить такие нарушения, чтобы приложение продолжало работать во всех последующих версиях операционной системы.

Возможности

Для приложений среды выполнения Windows, которым необходим программный доступ к ресурсам пользователя, например к папке "Изображения" или к подключенным устройствам, таким как веб-камера, необходимо объявить соответствующую возможность. Чтобы предоставить приложению доступ к этим ресурсам, необходимо объявить возможности в манифесте пакета приложения. Возможности можно объявить с помощью конструктора манифестов в Visual Studio или добавить вручную в манифест пакета, как описано в разделе Определение возможностей в манифесте пакета. Дополнительную информацию о возможностях см. в разделе Объявление возможностей приложения.

Зависимости:  

В Магазине находится уникальный набор пакетов приложений, которые содержат компоненты операционной системы, обслуживаемые независимо от нее. Приложения среды выполнения Windows могут использовать эти пакеты приложений, объявив зависимость в манифесте пакета приложения. Такие компоненты, содержащиеся в пакетах приложений, размещенных в Магазине, называются библиотеками компонентов операционной системы. Когда приложение устанавливается на устройстве, Магазин обеспечивает наличие нужной версии библиотеки компонентов. К таким библиотекам относятся: библиотека Windows для JavaScript, библиотеки времени выполнения C++ (CRT) и PlayReady DRM. Они необходимы для создания приложений среды выполнения Windows. Когда приложение развертывается из Магазина, операционная система обрабатывает объявленную зависимость, скачивая и устанавливая необходимую библиотеку компонентов вместе с приложением, которое скачивается из Магазина.

Для параллельной загрузки приложений Магазина Windows (для тестирования или развертывания в корпоративной среде) во время развертывания пакета приложения необходимо указать библиотеку компонентов Windows.

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

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

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

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

Пакеты приложений (расширение APPX)

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

Пакеты ресурсов (расширение APPX)

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

Примечание  Пакеты ресурсов ни в коем случае не должны содержать код.
 
Манифест набора приложений (AppxBundleManifest.xml)

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

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

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

<?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)

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

Пакеты ресурсов

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

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

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

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

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

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

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

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

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

Жесткая привязка

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

Обновление Windows 8.1 :  В начальном выпуске Windows 8.1 жесткая привязка ограничивалась только приложениями из Магазина Windows. Для обновления Windows 8.1 жесткая привязка также включена для параллельно загруженных корпоративных приложений. Подробнее о параллельной загрузке: Развертывание корпоративных приложений.

Развертывание для отдельных пользователей

Примечание  

Приложения среды выполнения Windows развертываются отдельно для каждого пользователя. Это значит, что развертывание распространяется только на учетную запись пользователя, который устанавливает приложение. Кроме того, в среде с несколькими пользователями ни один пользователь не знает, какие приложения устанавливались другими пользователями. Например, пусть пользователь А установил приложение "Блокнот", а пользователь Б установил приложение "Калькулятор". В этом сценарии пользователь А и пользователь Б не знают, какие другие приложения установлены на данном компьютере (изоляция приложений).

Изоляция приложений

Примечание  

Изоляция приложений в операционной системе ограничивается пользовательской частью приложения среды выполнения Windows. Все остальные данные приложения хранятся в месте, к которому операционная система имеет доступ. Например, пусть пользователь А установил приложение "Калькулятор" и пользователь Б тоже установил приложение "Калькулятор". В этом случае на диске будет храниться только одна копия двоичных файлов приложения "Калькулятор" (%ProgramFiles%\WindowsApps), а доступ к ним будут иметь оба пользователя. Пользователь А не видит данных приложения пользователя Б, и наоборот. Двоичные файлы среды выполнения являются общими, однако данные приложения изолируются.

Каталог %ProgramFiles%\WindowsApps нельзя изменять. Это требование распространяется и на базовый каталог %ProgramFiles%, а также каталоги %ProgramData% и %UserProfile%.

Наличие нескольких версий

Примечание  

Помимо хранения всех двоичных файлов приложений Магазина Windows для всех пользователей системы, каталог WindowsApps также может содержать несколько версий одного приложения Магазина Windows. Например, пусть пользователь А и пользователь Б установили приложение "Блокнот", но пользователь А обновил его до версии 2, а пользователь Б — нет. В этом случае в операционной системе будут существовать две версии приложения "Блокнот". Поскольку для каждого пользователя установлена только одна версия, то версии не вызывают конфликт.

Пакеты зависимостей обрабатываются таким же образом.

Развертывание приложений среды выполнения Windows

В следующих разделах описан порядок действий по установке, обновлению и удалению приложений среды выполнения Windows.

Установка приложений среды выполнения Windows

На следующем рисунке показан порядок действий по установке приложений среды выполнения Windows.

Порядок установки приложений Магазина Windows

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

Развертывание: проверка

На следующем рисунке показано выполнение ОС проверки развертывания:

Развертывание: проверка установки

Когда пользователь запускает установку приложения среды выполнения Windows, ОС должна выполнить следующие проверки перед началом развертывания.

Удовлетворение условия OSMinVersion

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

Удовлетворение требований к зависимостям

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

Наличие достаточного места на диске

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

Приложение пока не развернуто

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

Ресурсы приложения должны пройти проверку подписи

Для каждого файла в пакете приложения необходимо проверить целостность по элементу BlockMap, который уже прошел проверку.

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

На следующем рисунке показано сохранение пакета ОС:

Развертывание: сохранение пакета

Когда модель приложения определяет, что пакет можно развертывать на устройстве, ОС сохраняет содержимое пакета на диске в каталоге %ProgramFiles%\WindowsApps в новом каталоге с именем, соответствующим идентификатору пакета:


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

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

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

На следующем рисунке показана регистрация пакета ОС:

Развертывание: регистрация пакета

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

Обновление приложений среды выполнения Windows

На следующем рисунке показан порядок действий по обновлению приложений среды выполнения Windows.

Развертывание: обновление

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

Развертывание: проверка для обновления

На следующем рисунке показано выполнение ОС проверки развертывания обновления:

Развертывание: проверка обновления

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

Сохранение пакета (разностное скачивание)

На следующем рисунке показано сохранение пакета ОС:

Развертывание: сохранение обновления

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

Файл не был изменен

Файл жестко привязывается к расположению папки обновленного пакета.

Блоки в файле не были изменены

Не изменившиеся блоки копируются в папку обновленного пакета.

Блоки в файле были изменены

Изменившиеся блоки помечаются как скачанные из источника.

Обновлен весь файл

Весь файл будет скачан из источника.

Файл более не существует

Файл не будет использоваться для обновления.

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

Регистрация пакета для обновления

На следующем рисунке показана регистрация пакета ОС:

Развертывание: регистрация обновленного пакета

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

Используемые приложения

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

Данные приложения

Данные приложения имеют версию, которая ведется независимо от приложения среды выполнения Windows. Поэтому если значение ApplicationData.Version не обновлялось вместе с обновлением приложения среды выполнения Windows, то обновление приложения среды выполнения не влияет на состояние приложения.

Удаление файлов пакета

На следующем рисунке показано удаление ОС обновленного пакета:

Развертывание: удаление файлов обновленного пакета

После успешного завершения операции регистрации пакет помечается к удалению из операционной системы (если существующая версия пакета не используется другими пользователями). Сначала ОС копирует папку пакета существующей версии приложения в каталог %ProgramFiles%\WindowsApps\Deleted. Когда не выполняются никакие другие операции развертывания, ОС удаляет папку пакета существующей версии приложения.

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

Удаление приложений среды выполнения Windows

На следующем рисунке показан порядок действий по удалению приложений среды выполнения Windows.

Развертывание: удаление

Примечание  Пакеты устанавливаются отдельно для каждого пользователя на компьютере и удаляются также отдельно для каждого пользователя. Если приложение Магазина Windows установлено для нескольких пользователей, то при удалении выполняется только отмена регистрации для текущего пользователя. Например, если пользователь А и пользователь Б установили приложение "Калькулятор", а пользователь А удаляет это приложение, то оно удаляется только для пользователя А и остается для пользователя Б. Процесс удаления состоит из тех же основных этапов, что и процесс обновления.

Отмена регистрации пакета

На следующем рисунке показана отмена регистрации ОС обновленного пакета:

Развертывание: отмена регистрации удаленного пакета

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

Примечание  После возвращения PLM операция удаления продолжает отмену регистрации приложения среды выполнения Windows в учетной записи пользователя. Операция продолжается даже в случае, если PLM не было успешным.
 

Удаление файлов пакета

На следующем рисунке показано удаление ОС удаленного пакета:

Развертывание: удаление файлов удаленного пакета

После успешного завершения операции отмены регистрации пакет помечается к удалению из операционной системы (если пакет не используется другими пользователями). Сначала ОС копирует папку пакета приложения в каталог %ProgramFiles%\WindowsApps\Deleted. Когда не выполняются никакие другие операции развертывания, ОС удаляет папку пакета приложения.

Примечание  

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

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

Начиная с Windows 8.1 и Windows Phone 8.1 вы можете развертывать наборы приложений с целью оптимизации процесса создания и рассылки ваших приложений.

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

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

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

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

Проверка

Когда пользователь запускает установку приложения среды выполнения Windows, ОС должна выполнить следующие проверки перед началом развертывания.

ТестУсловия

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

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

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

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

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

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

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

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

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

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

 

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

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

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

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

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

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

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

Windows 8.1 и более поздней версии:  scale-100, scale-140 и scale-180

Windows Phone 8.1 и более поздние версии:  scale-100, scale-140 и scale-240

Функциональный уровень DirectX

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

 

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

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

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

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

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

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

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

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

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

Инвентаризация пакетов

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

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

Вопросы и ответы

Как установить несколько пакетов одновременно?

Чтобы установить несколько пакетов, можно вызвать API упаковки несколько раз или один раз для всего набора устанавливаемых пакетов. Базовая реализация модели приложения поддерживает любое количество пакетов приложений, ожидающих развертывания. Однако для каждого пользователя поддерживается не более 3 одновременных операций сохранения (до 7 суммарно в операционной системе), плюс в каждый момент времени в операционной системе может выполняться только одна операция регистрации.

Что произойдет, если пакет уже установлен?

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

Можно ли сделать обновление обязательным?

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

Примечание  

В корпоративной среде можно реализовать принудительное обновление посредством групповой политики.

Как можно откатить обновление до предыдущей версии?

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

Могу ли я перемещать мои каталоги %ProgramFiles%, %ProgramData% или %UserProfile%?

Для приложений среды выполнения Windows восстановление не поддерживается и приведет к ошибкам при использовании приложения.

Интерфейсы программирования для упаковки и развертывания

Среда выполнения Windows

Win32/COM

 

 

Показ: