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


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

Проект пакета SDK для приложений Windows зависит от платформы по умолчанию. Чтобы перейти на автономное развертывание, выполните приведенные ниже действия (термины , зависящие от платформы и автономные , описаны в обзоре развертывания пакета SDK для приложений Для Windows).

  • В Visual Studio щелкните правой кнопкой мыши узел проекта приложения и выберите команду "Изменить файл проекта", чтобы открыть файл проекта приложения для редактирования. Для проекта C++ сначала щелкните Разгрузить проект.
  • В файле проекта приложения в разделе PropertyGroupдобавьте <WindowsAppSDKSelfContained>true</WindowsAppSDKSelfContained>, как показано на представленном ниже снимке экрана.

снимок экрана: свойство WindowsAppSDKSelfContained в файле проекта.

  • Сохраните и закройте файл проекта.
  • Щелкните Перезагрузить Проект.
  • Если вы используете проект упаковки приложений Windows (а не одиночный проект MSIX, который вы получаете при использовании пустого приложения, упакованного (WinUI 3 в классическом приложении)), то внесите все вышеуказанные изменения и в файл проекта для проекта упаковки.

Замечание

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

Примеры приложений см. в примерах автономного развертывания пакета SDK для Windows.

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

Замечание

Приложения .NET должны публиковаться в качестве автономных приложений и поэтому должны быть полностью автономными. См. этом примере, как настроить автономный .NET с профилями публикации. dotnet publish еще не поддерживается в пакете SDK для приложений Windows 1.1.

Замечание

Приложения C++ также должны использовать гибридные CRT, чтобы быть полностью самостоятельными. Импорт hybridCRT.props из Directory.Build.props является рекомендуемым способом настройки для всех проектов в решении (см. пример в Directory.Build.props). Упакованное приложение также должно задать <UseCrtSDKReferenceStaticWarning>false</UseCrtSDKReferenceStaticWarning> в файле проекта. Ознакомьтесь с примером приложения автономного развертывания по использованию гибридной CRT.

Если приложение упаковано (дополнительные сведения см. в разделе "Обзор развертывания"), зависимости пакета SDK для приложений Windows будут включены в пакет MSIX в виде содержимого. Развертывание приложения по-прежнему требует регистрации пакета MSIX, как и любого другого упаковаемого приложения.

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

Зависимости от дополнительных пакетов MSIX

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

Это означает, что если вы хотите использовать эти API в автономном приложении, то у вас есть следующие параметры:

  1. Вы можете сделать функциональность необязательной и активировать её только в том случае, если это возможно. Вызов метода IsSupported API (PushNotificationManager.IsSupported и AppNotificationManager.IsSupported) позволит динамически проверять, доступны ли API-интерфейсы вызывающему приложению в системе, на которую она работает.
    • Это обеспечивает безопасное, условное, необязательное использование API без ущерба для простоты автономного развертывания.
    • Только если службы ОС установлены за пределами развертывания вашего приложения, ваше приложение активирует необходимую функциональность. Но на самом деле есть некоторые случаи, когда API-интерфейсы будут работать даже без пакета Singleton, присутствующего; поэтому вызов IsSupported для проверки часто является хорошей идеей.
  2. Разверните необходимые пакеты MSIX в процессе установки приложения.
    • Это позволяет зависеть от API во всех сценариях. Но необходимость развертывания пакета MSIX для зависимостей в составе развертывания приложения может скомпрометировать простоту автономного развертывания.
  3. Не используйте API.
    • Рассмотрим альтернативные API, обеспечивающие аналогичную функциональность без дополнительных требований к развертыванию.

Выбор включения или отключения автоматической поддержки UndockedRegFreeWinRT

Свойство проекта WindowsAppSdkUndockedRegFreeWinRTInitialize появилось в версии 1.2 пакета SDK для приложений Windows (из стабильного канала). Если для этого свойства задано значение true, то он гарантирует, что при запуске приложения автоматически включена реализация пакета SDK для приложений без поддержки регистрации (UndockedRegFreeWinRT). Поддержка необходима для неупакованных автономных приложений.

По умолчанию WindowsAppSdkUndockedRegFreeWinRTInitialize имеет значение true, если WindowsAppSDKSelfContainedtrue и WindowsPackageType равно None и (начиная с версии 1.2 Windows App SDK) свойству проекта OutputType присвоено значение Exe или WinExe (т. е. проект создает исполняемый файл). Последнее условие заключается в том, чтобы предотвратить добавление автоматической поддержки UndockedRegFreeWinRT в библиотеки классов DLL и других не исполняемых файлов по умолчанию. Если вам требуется автоматическая поддержка UndockedRegFreeWinRT в неисполняемом файле (например, тестовая библиотека DLL, загружаемая исполняемым файлом узла, который не инициализирует UndockedRegFreeWinRT), то вы можете явно включить ее в своем проекте с помощью <WindowsAppSdkUndockedRegFreeWinRTInitialize>true</WindowsAppSdkUndockedRegFreeWinRTInitialize>.