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


Выбор модели упаковки для приложения Windows

Замечание

Создание нового приложения WinUI 3? Вы уже упакованы по умолчанию. Эта страница предназначена для разработчиков, которые должны сделать явный выбор , как правило, при переносе существующего приложения, развертывании на корпоративных компьютерах или добавлении функций Windows в приложение, которое изначально не было упаковано.

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

Начните с сценария

Я независимый разработчик, публикующий в Microsoft Store

Используйте упакованое приложение MSIX. Для магазина требуется упаковка MSIX. Приложения WinUI 3, созданные в Visual Studio, упаковываются по умолчанию— вам не нужно вносить изменения. Вы получаете чистые установки, автоматические обновления и доступ ко всем функциям, включаемых в пакет, например уведомлениям и фоновым задачам.

Распространение упаковаемого приложения


"Я создаю корпоративное приложение, развернутое с помощью Intune или Configuration Manager"

Начнем с пакета; рассмотрите возможность использования внешнего размещения, если у вас уже есть существующий установщик.

  • Если вы создаете новое приложение, используйте MSIX. Она бесшовно интегрируется с Intune и SCCM/ConfigMgr и предоставляет полное идентифицирование пакета.
  • Если у вас есть существующее приложение с собственным установщиком , который нельзя заменить, используйте упаковку с внешним расположением. Это дает индикацию идентичности пакета приложения и доступ к функциям, в том числе уведомлениям и фоновым задачам, без изменения способа или места развертывания.
  • Если вашему приложению действительно не нужны функции, требующие проверки личности Windows, и вы контролируете среду развертывания, распакованные приложения работают, но как только вы попытаетесь добавить уведомления или функции, основанные на искусственном интеллекте, вы столкнетесь с проблемами.

развертывание упакованных приложений (пакет SDK для приложений Для Windows)
Предоставить идентификацию пакета путем интеграции с внешним расположением


Я являюсь независимым поставщиком программного обеспечения (ISV), предоставляющим прямую загрузку с моим собственным установщиком.

Используйте упаковку с внешним расположением (ранее называемые разреженными пакетами).

Это оптимальный вариант для существующих приложений Win32/WPF/WinForms, которые устанавливаются с помощью собственного установщика (NSIS, WiX, InstallShield и т. д.) и не хотят заменять его на MSIX. Вы регистрируете легкий пакет идентификаций вместе с существующим установщиком, ваши двоичные файлы остаются на своих местах, и вы разблокируете полный набор функций Windows, защищенных удостоверением пакета.

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

Присвоить идентификатор пакета посредством упаковки с внешним расположением
Добавление пакета идентификации в Visual Studio


"Я создаю внутреннюю программу или программу разработчика"

В непакованном виде допустимо — с оговорками.

Приложения без упаковки являются наиболее простыми для создания и развертывания: xcopy, robocopy или простой скрипт – всё, что вам нужно. Пакет SDK для приложений Windows работает в распакованных приложениях с помощью NuGet. Но некоторые функции не будут доступны, и если позже вы решите, что они вам нужны, обратная идентификация пакета является нетривиальной задачей.

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


Упаковка моделей на первый взгляд

Модель Идентификатор пакета Монтажник Магазин, подходящий лучше всего подходит для
Упаковано (MSIX) ✅ Да MSIX заменяет установщик ✅ Да Новые приложения, публикация в магазине, корпоративное управление мобильными устройствами
Упаковка с внешним расположением ✅ Да Ваш существующий установщик ❌ Нет Существующие приложения с собственным установщиком, ISV
Распаковка ❌ Нет XCopy / скрипт ❌ Нет Внутренние средства, служебные программы разработки, простые сценарии

Функции, которым требуется идентификатор пакета

Эти функции Windows работают только в приложениях с идентификатором пакета — либо с помощью полной упаковки MSIX, либо упаковка с внешним размещением.

Функция Примечания
Уведомления о приложении (всплывающее уведомление) AppNotificationManager требуется идентификатор пакета
Фоновые задачи Для регистрации требуется идентификатор пакета
API Windows AI (Phi Silica, OCR и т. д.) Для большинства API Windows AI требуется удостоверение пакета
Push-уведомления (WNS) Регистрация канала требует идентификации пакета
Общий целевой объект Объявлено в манифесте пакета
Пользовательские расширения контекстного меню Объявлен в манифесте пакета
Сопоставления типов файлов и протоколов Для богатых ассоциаций требуется идентификатор пакета
Задачи запуска Требуется идентификация пакета
Службы приложений Требуется идентификация пакета

Подсказка

Если вы используете неупакованную версию и сталкиваетесь с ошибками E_ILLEGAL_METHOD_CALL или APPMODEL_ERROR_NO_PACKAGE при вызове API Windows, это требование идентификатора пакета. Рассмотрите упаковку с внешним расположением как наименее проблемное решение.

Упаковка для внешнего хранения

Упаковка с внешним расположением (также называемая разреженными пакетами) позволяет зарегистрировать небольшой пакет идентификатора наряду с вашим существующим приложением, не изменяя установщик, местоположения двоичных файлов или процесс обновления. Она появилась в Windows 10 версии 2004 (сборка 19041).

Вы предоставляете:

  • Манифест пакета (XML-файл, описывающий идентификатор приложения)
  • Подписанный .msix, содержащий только манифест (без двоичных файлов)

Ваш существующий установщик регистрирует этот пакет идентичности, и Windows считает ваше приложение обладающим идентичностью пакета с этого момента.

Это отличается от полной упаковки MSIX:

MSIX Внешнее расположение
Заменяет ваш установщик Да Нет
Двоичные файлы внутри пакета Да Нет (внешний)
Магазин, подходящий Да Нет
Идентификатор пакета Да Да
Механизм обновления Обновление MSIX Ваш существующий механизм

Полное пошаговое руководство: Идентификация пакета путём упаковки с внешним местоположением

Зависимое от фреймворка и самодостаточное развертывание

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

  • Зависящая от платформы среда выполнения пакета SDK для приложений Windows должна быть установлена на компьютере пользователя. Меньший размер приложения; зависит от присутствия среды выполнения или её автоматической установки.
  • Самодостаточный: все двоичные файлы Windows App SDK поставляются с вашим приложением. Больший объем; нет требования к внешней среде выполнения. Хорошо подходит для заблокированных корпоративных сред.

Развертывание автономных приложений