Поделиться через


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

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

Overview

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

Для получения дополнительной информации о пакетах, которые могут понадобиться вашему упакованному приложению при использовании Windows App SDK, см. статью Архитектура развертывания Windows App SDK. Those include the Framework, Main, and Singleton packages; which are all signed and published by Microsoft. Существует два основных требования к развертыванию упаковаемого приложения:

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

Prerequisites

Развертывание пакета сред программирования Windows App SDK

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

Stable version

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

However, if you build your app package manually using a separate Windows Application Packaging Project, then you must declare a PackageReference in your Application (package).wapproj file, like the following:

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

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

Preview version

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

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

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

The Deployment API is provided by the Windows App SDK framework package, and is available in the Microsoft.Windows.ApplicationModel.WindowsAppRuntime namespace. Модель приложения Windows не поддерживает объявление зависимости от пакетов Main и Singleton. Поэтому API развертывания требуется по следующим причинам:

  1. Развертывание пакета Singleton для функций, не входящих в пакет Framework (например, push-уведомлений).
  2. Для развертывания основного пакета, который необходимо установить для автоматического обновления пакета Framework из магазина Microsoft.

For packaged apps that are not distributed through the Store, you as the developer are responsible for distributing the Framework package. Мы рекомендуем вызвать API развертывания, чтобы все критически важные обновления обслуживания были доставлены. Обратите внимание, что для использования функций за пределами пакета Платформы (например, push-уведомлений) необходимо развернуть пакет Singleton (это можно сделать с помощью API развертывания или путем распространения пакетов MSIX с помощью собственного метода установки).

Important

In Windows App SDK version 1.0, only packaged apps that are full trust or that have the packageManagement restricted capability have the permission to use the Deployment API to install the Main and Singleton package dependencies. Поддержка упакованных приложений с частичным доверием будет добавлена в будущих выпусках.

После инициализации процесса приложения необходимо вызвать API развертывания, но прежде чем приложение использует функции среды выполнения пакета SDK для Приложений Windows, использующие пакет Singleton (например, push-уведомления). The main methods of the Deployment API are the static GetStatus and Initialize methods of the DeploymentManager class.

  • The GetStatus method returns the current deployment status of the Windows App SDK runtime that's currently loaded. Используйте этот метод, чтобы определить, требуется ли установка пакетов среды выполнения пакета sdk для приложений Windows, прежде чем текущее приложение сможет использовать функции пакета SDK для приложений Windows.
  • The Initialize method verifies whether all required packages are present to a minimum version needed by the Windows App SDK runtime that's currently loaded. Если отсутствуют зависимости пакетов, метод пытается зарегистрировать эти отсутствующие пакеты. Beginning in Windows App SDK 1.1, the Initialize method also supports the option to force-deploy the Windows App SDK runtime packages. That shuts down any processes for the Main and Singleton runtime packages, and thus interrupts their services (for example, push notifications won't deliver notifications during this time). You should call Initialize only once. You don't need to call Initialize for apps deployed via the Start Without Debugging and Start Debugging commands in Visual Studio.

Important

Значением по умолчанию свойства <WindowsAppSdkDeploymentManagerInitialize> Visual Studio является true. So if you wish to call DeploymentManager.Initialize explicitly, then set <WindowsAppSdkDeploymentManagerInitialize>false</WindowsAppSdkDeploymentManagerInitialize> in your Visual Studio project file.

Образец приложения API для развертывания

For additional guidance on how to use the GetStatus and Initialize methods of the DeploymentManager class, explore the available sample app.

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

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

For example, if your app is not full trust, or doesn't have the packageManagement restricted capability, then you'll get an ACCESS_DENIED error code. Чтобы просмотреть другие коды ошибок, которые могут возникнуть, и их возможные причины, см. статью об устранении неполадок, связанных с упаковкой, развертыванием и запросами приложений Windows.

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

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