Архитектура развертывания и общие сведения о приложениях, зависящих от платформы

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

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

Способ развертывания приложений Требования
Поставляется в плане — необходимо объявить зависимость от пакета Платформы в манифесте пакета.
— API развертывания требуется для распределенных приложений Microsoft Store и рекомендуется для распределенных приложений, не относящихся к Store, чтобы обеспечить установку зависимостей среды выполнения.
Упакованный с внешним расположением или неупакованный — Необходимо распространять среду выполнения с помощью установщика или путем установки необходимых пакетов MSIX напрямую.
— Дополнительные требования к среде выполнения. Необходимо инициализировать доступ к среде выполнения Windows App SDK через API начальной загрузки.

Дополнительные сведения об этих требованиях см. в следующих статьях:

Основные термины

В следующих разделах определяются ключевые термины для развертывания Windows App SDK и дополнительные сведения о некоторых из этих пакетов.

Термин Определение
среда выполнения Windows App SDK Пакеты MSIX, необходимые приложению для использования Windows App SDK. К этим пакетам относятся: Framework, Main, Singleton и DDLM. В зависимости от используемых функций и метода развертывания приложения вам потребуется определенный набор этих пакетов на целевом компьютере.
Пакет платформы Содержит двоичные файлы, используемые во время выполнения приложениями (большинство Windows App SDK функций). Платформа включает компонент начального загрузчика, который позволяет приложениям автоматически устанавливать последнюю версию Windows App SDK, которая будет обновляться регулярно.
Основной пакет Пакет, содержащий фоновые задачи для отслеживания динамических зависимостей и обеспечивающий автоматическое обновление пакета Платформы из Microsoft Store.
Одноэлементный пакет Содержит фоновые задачи, службы, расширения приложений и другие компоненты, не включенные в пакет платформы, например push-уведомления. Как правило, это один длительный процесс, который проходит через брокер между приложениями.
Пакет диспетчера времени существования динамических зависимостей (DDLM) Запрещает ОПЕРАЦИОННОй системе выполнять сервисные обновления пакетов MSIX, когда используется пакет с внешним расположением или неупакованное приложение.
Начальный загрузчик Локальный двоичный файл приложения, используемый пакетом с внешним расположением и неупакованными приложениями для поиска и загрузки наилучшего Windows App SDK соответствия версии по мере необходимости для приложения.
Подготовка Процесс установки и регистрации пакетов (включая файлы и разделы реестра) для всей системы, чтобы исключить необходимость повторной установки другими пользователями. Это можно сделать как в составе ОПЕРАЦИОННОй системы, так и во время установки приложения.
Установщик Относится к установщику .exe, который развертывает пакеты Framework, Main, Singleton и DDLM.
MSIX Современная технология установщика, позволяющая пользователям безопасно устанавливать приложение для каждого пользователя непосредственно из Microsoft Store или веб-сайта. На корпоративных или общих компьютерах приложения можно установить для всех пользователей с помощью PowerShell и MDM.

Пакет платформы

При создании приложения, использующего Windows App SDK, приложение ссылается на набор компонентов среды выполнения Windows App SDK, которые распространяются среди конечных пользователей через пакет платформы. Пакет платформы позволяет приложениям получать доступ к Windows App SDK компонентам через единый общий источник на устройстве пользователя, а не добавлять их в пакет приложения. Пакет платформы также содержит собственные ресурсы, такие как библиотеки DLL и определения API (регистрация COM и среда выполнения Windows). Эти ресурсы выполняются в контексте приложения, поэтому они наследуют возможности и привилегии приложения и не утверждают собственные возможности или привилегии. Дополнительные сведения о зависимостях пакетов платформы см. в статье Пакеты платформы MSIX и динамические зависимости.

Пакет платформы Windows App SDK — это пакет MSIX, который развертывается для конечных пользователей через Microsoft Store. Его можно легко и быстро обновить с помощью служебных выпусков, которые могут включать исправления безопасности и надежности. Все зависящие от платформы приложения, использующие Windows App SDK имеют зависимость от общего экземпляра пакета платформы, как показано на следующей схеме.

Схема доступа приложений к пакету платформы Windows App SDK

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

Схема получения приложений обновлений пакета платформы Windows App SDK

Так как совместимость приложений важна для корпорации Майкрософт и приложений, зависящих от Windows App SDK, пакет платформы Windows App SDK соответствует правилам семантического управления версиями 2.0.0. Это означает, что после выпуска версии 1.0 Windows App SDK пакет платформы Windows App SDK гарантирует совместимость между дополнительными изменениями версии и исправлениями, а критические изменения будут происходить только между основными обновлениями версии.

Одноэлементный пакет

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

Windows App SDK singleton требуется для включения push-уведомлений для неупакованных приложений и упакованных приложений Win32, использующих версии Windows ниже 20H1, которые не поддерживаются существующими классами PushNotificationTrigger и ToastNotificationActionTrigger UWP. Будущие Windows App SDK функции, которые не могут поддерживаться пакетом Framework, будут добавлены в одноэлементный пакет.

Дополнительные требования для неупакованных приложений

Начальный загрузчик

Начальный загрузчик — это библиотека, которая должна быть включена в пакет с внешним расположением или неупакованным приложением. Он предоставляет API начального загрузчика (см. раздел Использование среды выполнения Windows App SDK для приложений, упакованных с внешним расположением или неупакованных), который позволяет неупакованным приложениям выполнять следующие важные задачи:

  • Инициализируйте диспетчер времени существования динамических зависимостей (DDLM) для пакета платформы Windows App SDK.
  • Найдите и загрузите пакет платформы Windows App SDK в граф пакетов приложения.

Для выполнения этих задач пакет nuget использует инициализаторы модулей для подключения начального загрузчика. Просто задайте в <WindowsPackageType>None</WindowsPackageType> файле проекта. В сложных сценариях, если вы хотите контролировать инициализацию, вы можете вызвать API начального загрузчика непосредственно в коде запуска приложения (см. руководство. Использование API начального загрузчика в приложении, упаковавшемся с внешним расположением или неупакованном, в котором используется Windows App SDK), чтобы он правильно инициализировал систему для неупакованного приложения. Ваше приложение должно использовать API начального загрузчика, прежде чем оно сможет использовать Windows App SDK функции, такие как WinUI, жизненный цикл приложения, MRT Core и DWriteCore.

Библиотека начального загрузчика в выпуске Windows App SDK 1.0 включает:

  • Microsoft.WindowsAppRuntime.Bootstrap.dll (C++ и C#)
  • Microsoft.WindowsAppRuntime.Bootstrap.Net.dll (оболочка C#)

Dynamic Dependency Lifetime Manager (DDLM)

Цель DDLM — предотвратить обслуживание пакета платформы Windows App SDK, когда он используется неупакованным приложением. Он содержит сервер, который должен быть инициализирован начальным загрузчиком в начале запуска приложения, чтобы обеспечить эту функциональность.

Для каждой версии и архитектуры пакета платформы Windows App SDK существует один DDLM. Это означает, что на x64 компьютере у вас может быть и x86x64 версия DDLM для поддержки приложений обеих архитектур.

Дополнительные требования