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

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

Обзор

Разработчики упакованных с внешним расположением и распакованными приложениями отвечают за развертывание необходимых пакетов среды выполнения windows App SDK для конечных пользователей. Это можно сделать, запустив установщик или установив пакеты MSIX напрямую. Эти параметры подробно описаны в разделе "Развертывание среды выполнения пакета SDK для приложений Windows" ниже.

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

Необходимые компоненты

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

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

    • Если компьютер разработки или компьютер развертывания работает под управлением Windows 11, убедитесь, включена ли загрузка неопубликованных данных:

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

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

      Примечание.

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

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

Упакованные с внешним расположением и распакованные приложения имеют два варианта для развертывания среды выполнения пакета SDK для приложений Windows:

Вариант 1. Использование установщика

Вы можете развернуть все пакеты среды выполнения пакета SDK для приложений Windows, выполнив установщик. Установщик доступен на сайте downloads for the Windows App SDK. При запуске установщика (.exe) вы увидите выходные данные, аналогичные следующим:

Deploying package: Microsoft.WindowsAppRuntime.1.0_0.318.928.0_x64__8wekyb3d8bbwe
Package deployment result : 0x0

Deploying package: Microsoft.WindowsAppRuntime.1.0_0.318.928.0_x86__8wekyb3d8bbwe
Package deployment result : 0x0

Deploying package: MicrosoftCorporationII.WindowsAppRuntime.Main.1.0_0.318.928.0_x64__8wekyb3d8bbwe
Package deployment result : 0x0
Provisioning result : 0x0

Deploying package: Microsoft.WindowsAppRuntime.Singleton_0.318.928.0_x64__8wekyb3d8bbwe
Package deployment result : 0x0
Provisioning result : 0x0

Deploying package: Microsoft.WinAppRuntime.DDLM.0.318.928.0-x6_0.318.928.0_x64__8wekyb3d8bbwe
Package deployment result : 0x0
Provisioning result : 0x0

Deploying package: Microsoft.WinAppRuntime.DDLM.0.318.928.0-x8_0.318.928.0_x86__8wekyb3d8bbwe
Package deployment result : 0x0
Provisioning result : 0x0

All install operations successful.

Установщик можно запустить без взаимодействия с пользователем и отключить все текстовые выходные данные с --quiet помощью параметра:

WindowsAppRuntimeInstall.exe --quiet

Вы также можете принудительно обновить пакеты MSIX и завершить работу всех текущих процессов пакета SDK для приложений Windows с помощью этого --force параметра. Эта функция представлена в версии 1.1.

WindowsAppRuntimeInstall.exe --force

Чтобы просмотреть все параметры командной строки установщика, выполните команду WindowsAppRuntimeInstall --h.

После завершения установки можно запустить пакет с внешним расположением или распаковкой приложения. Пример создания и запуска упаковаемого с внешним расположением или распаковки приложения, использующего пакет SDK для приложений Windows, см . в руководстве. Использование API загрузчика в приложении, упакованом с внешним расположением или распаковкой, использующим пакет SDK для приложений Windows.

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

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

Вы можете автоматически запускать и отслеживать настройку пакета SDK для приложений Windows, показывая собственное представление хода выполнения установки с помощью ShellExecute. Установщик пакета SDK для приложений Windows автоматически распаковывает пакет WINDOWS App MSIX и вызывает метод PackageManager.AddPackageAsync для завершения установки. Это очень похоже на другие установщики среды выполнения, которые вы могли использовать, например .NET, Visual C++или DirectX.

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

Пример установщика

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

Устранение неполадок

Коды возврата

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

Код возврата Description
0x0 Установка пакета или подготовка успешно завершена.
0x80073d06 Не удалось установить один или несколько пакетов.
0x80070005 Не удалось установить или подготовить систему, так как приложение не работает с повышенными привилегиями или пользователь, выполняющий установку, не имеет прав администратора.

Ошибки установки

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

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

Вариант 2. Развертывание пакетов среды выполнения пакета sdk для приложений Windows напрямую

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

Пример, демонстрирующий, как программа установки может устанавливать пакеты MSIX, см . в файле install.cpp в коде установщика пакета SDK для приложений Windows.

Сценарии развертывания

  • Установка системы среды выполнения пакета SDK для приложений Для Windows: установка системы изменяет компьютер для всех пользователей, включая новых пользователей, добавленных в будущем. Если приложение работает с повышенными привилегиями, и пользователь, выполняющий установку, имеет права администратора, установщик регистрирует пакеты MSIX на уровне системы, вызвав ProvisionPackageForAllUsersAsync. Если регистрация на уровне системы не выполнена, установка будет выполнена только для текущего пользователя, выполняющего установку. В управляемой корпоративной среде ИТ-администратор должен иметь возможность подготавливать всех пользователей как обычно.

  • Архитектуры, распространяемые установщиком пакета SDK для приложений Windows: установщик пакета SDK для приложений Windows доступен в x86x64 и Arm64 архитектурах. Каждая версия установщика включает пакеты MSIX для этой конкретной архитектуры. Например, если запустить файл x86 WindowsAppRuntimeInstall.exe на устройстве x64 или Arm64, установщик развернет пакеты для этой архитектуры устройства.

  • Все пакеты MSIX пакета SDK для приложений Windows уже установлены на компьютере: пакеты MSIX устанавливаются в системное расположение только с одной копией на диске. Если приложение пытается установить пакет SDK для приложений Windows, когда все зависимости пакета MSIX уже установлены на компьютере, установка не выполняется.

  • На компьютере не устанавливается один или несколько пакетов MSIX пакета SDK для приложений Windows: при развертывании пакета SDK для приложений Windows всегда пытается установить все пакеты MSIX (платформа, основной, однотонный, DDLM), чтобы обеспечить установку всех зависимостей и не прерывать работу с конечным пользователем.

Требования к среде выполнения для приложений, упакованных с внешним расположением или распаковкой

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

Использование среды выполнения пакета SDK для приложений Windows

Упакованные с внешним расположением и распакованными приложениями должны вызывать API начальной загрузки для использования пакета SDK для приложений Windows во время выполнения. Это необходимо, прежде чем приложение сможет использовать такие функции пакета SDK для приложений Windows, как WinUI, жизненный цикл приложений, MRT Core и DWriteCore. Компонент начальной загрузки позволяет упаковывать внешние приложения и распаковывать приложения для выполнения следующих важных задач:

  • Найдите и загрузите пакет пакета SDK для приложений Для Windows в граф пакетов приложения.
  • Инициализировать диспетчер времени существования динамических зависимостей (DDLM) для пакета платформы sdk для приложений Windows. Цель DDLM заключается в том, чтобы предотвратить обслуживание пакета пакета sdk для приложений Для Windows во время его использования упакованным с внешним расположением или распакованным приложением.

Самый простой способ загрузить среду выполнения пакета SDK для приложений Windows для упакованных с внешним расположением и распаковкой приложений — задать <WindowsPackageType>None</WindowsPackageType> свойство в файле проекта (CSPROJ или .VCXPROJ). Вы также можете вызвать API начальной загрузки непосредственно в коде запуска приложения, чтобы получить больше контроля над инициализацией. Дополнительные сведения см. в разделе "Использование среды выполнения пакета SDK для приложений Windows", упакованных с внешним расположением или распаковкой и учебником. Используйте API загрузчика в приложении, упакованом с внешним расположением или распаковкой, использующим пакет SDK для приложений Windows.

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

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

Справочник по другим пакетам платформы с помощью API динамических зависимостей

Если вы хотите использовать функции в других пакетах платформы за пределами пакета SDK для приложений Windows (например, DirectX), упакованные с внешним расположением и распакованными приложениями, могут вызывать API динамических зависимостей. Помимо компонента начальной загрузки пакет SDK для приложений Windows также предоставляет более широкий набор функций C/C++ и классов WinRT, реализующих API динамической зависимости. Этот API предназначен для динамической ссылки на любой пакет платформы во время выполнения.

Дополнительные сведения см. в статье Использование пакетов платформы MSIX динамически из классического приложения и примера динамических зависимостей

Развертывание winmd-файлов на целевом компьютере

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