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

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

Общие сведения

По умолчанию при создании проекта с помощью одного из шаблонов WinUI 3 в Visual Studio проект настраивается для сборки приложения в пакет MSIX с помощью одного проекта MSIX (см. статью Упаковка приложения с помощью одного проекта MSIX) или проекта упаковки приложений Windows (см. раздел Настройка классического приложения для упаковки MSIX в Visual Studio). Затем можно создать пакет MSIX для приложения, следуя инструкциям в статье Упаковка классического приложения или приложения UWP в Visual Studio. После создания пакета MSIX для приложения у вас есть несколько вариантов управления развертыванием MSIX.

Дополнительные сведения о пакетах, которые могут потребоваться упаковаемого приложения при использовании Windows App SDK, см. в статье Архитектура развертывания для Windows App SDK. К ним относятся пакеты Framework, Main и Singleton ; которые подписаны и опубликованы корпорацией Майкрософт. Существует два main требования к развертыванию упаковаемого приложения:

  1. Разверните пакет платформы Windows App SDK.
  2. Вызовите API развертывания.

Предварительные требования

Развертывание пакета платформы Windows App SDK

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

Стабильная версия

При установке стабильной версии выпуска (см. заметки о выпуске стабильного канала) пакета Windows App SDK NuGet на компьютере разработчика и создании проекта с помощью одного из предоставленных шаблонов проектов WinUI 3 созданный манифест пакета содержит элемент PackageDependency, указывающий зависимость от пакета платформы.

Однако при сборке пакета приложения вручную с помощью отдельного проекта упаковки приложений Windows необходимо объявить PackageReference в файле Application (package).wapproj , как показано ниже:

<ItemGroup>
   <PackageReference Include="Microsoft.WindowsAppSDK" Version="1.0.1">
       <IncludeAssets>build</IncludeAssets>
   </PackageReference>
</ItemGroup>

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

Предварительная версия

При установке предварительной версии (см. заметки о выпуске канала предварительной версии) пакета Windows App SDK NuGet на компьютере разработчика предварительная версия пакета платформы Windows App SDK развертывается во время сборки в качестве зависимости пакета NuGet.

Вызов API развертывания

См. также раздел Инициализация Windows App SDK.

API развертывания предоставляется пакетом платформы Windows App SDK и доступен в пространстве имен Microsoft.Windows.ApplicationModel.WindowsAppRuntime. Модель приложений Windows не поддерживает объявление зависимости от основного и одноэлементного пакетов. Поэтому API развертывания необходим по следующим причинам:

  1. Развертывание одноэлементного пакета для компонентов, отсутствуют в пакете Платформы (например, push-уведомлений).
  2. Развертывание основного пакета, который позволяет автоматически обновлять пакет Платформы из Microsoft Store.

Для упакованных приложений, которые не распространяются через Магазин, вы как разработчик несете ответственность за распространение пакета Платформы. Мы рекомендуем вызывать API развертывания, чтобы доставлять все критические обновления для обслуживания. Обратите внимание, что для использования компонентов за пределами пакета Платформы (например, push-уведомлений) необходимо развернуть пакет Singleton (это можно сделать с помощью API развертывания или путем повторного распространения пакетов MSIX с помощью собственного метода установки).

Важно!

В Windows App SDK версии 1.0 только упакованные приложения с полным доверием или с ограниченной возможностью packageManagement имеют разрешение на использование API развертывания для установки зависимостей пакета Main и Singleton. Поддержка упакованных приложений с частичным доверием будет добавлена в более поздних выпусках.

Api развертывания следует вызывать после инициализации процесса приложения, но до того, как приложение будет использовать Windows App SDK функции среды выполнения, использующие пакет Singleton (например, push-уведомления). Main методами API развертывания являются статические методы GetStatus и Initialize класса DeploymentManager.

  • Метод GetStatus возвращает текущее состояние развертывания Windows App SDK среды выполнения, загруженной в данный момент. Используйте этот метод, чтобы определить, требуется ли работа по установке пакетов среды выполнения Windows App SDK, прежде чем текущее приложение сможет использовать Windows App SDK функции.
  • Метод Initialize проверяет наличие всех необходимых пакетов до минимальной версии, необходимой для текущей загруженной среды выполнения Windows App SDK. Если отсутствуют зависимости пакета, метод пытается зарегистрировать эти отсутствующие пакеты. Начиная с Windows App SDK 1.1, метод Initialize также поддерживает возможность принудительного развертывания пакетов среды выполнения Windows App SDK. Это завершает работу всех процессов для пакетов основной и одноэлементной среды выполнения и, таким образом, прерывает работу служб (например, push-уведомления не будут доставлять уведомления в течение этого времени).

Пример приложения API развертывания

Дополнительные рекомендации по использованию методов GetStatus и Initialize класса DeploymentManager см. в доступном примере приложения.

Устранение ошибок установки

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

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

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

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