Приложения Windows: упаковка, развертывание и процесс
Примечание.
Некоторые сведения относятся к предварительной версии продукта, в которую перед коммерческим выпуском могут быть внесены существенные изменения. Майкрософт не предоставляет никаких гарантий, явных или подразумеваемых, относительно приведенных здесь сведений.
В этом разделе рассматриваются варианты, касающиеся:
- Будет ли ваше приложение упаковано.
- Как развернуть или распространить приложение и как он будет установлен.
- Процесс выполнения вашего приложения— как он будет изолирован; и какие API будут доступны для него.
Эти решения можно принимать как для новых, так и для существующих приложений. Но если вы все еще находитесь на этапе планирования для нового приложения, прежде чем начать думать о приведенных выше рекомендациях, сначала определите, какую платформу разработки и пользовательский интерфейс (пользовательский интерфейс) вы будете использовать для вашего приложения. И для этого решения см . общие сведения о вариантах разработки Windows.
Упакованный или распакованный
Решение о том, чтобы приложение было упакованным или распакованным, сначала определяется понятием, известным как удостоверение пакета, которое мы рассмотрим в этом разделе. Если вам этого не нужно, решение сводится к требуемому интерфейсу установщика для себя и для ваших пользователей. Давайте рассмотрим детали этих вещей.
Многие функции расширения Windows, включая фоновые задачи, уведомления, динамические плитки, пользовательские расширения контекстного меню и целевые объекты общего доступа, могут использоваться приложением только в том случае, если это приложение имеет удостоверение пакета во время выполнения. Это связано с тем, что операционная система (ОС) должна иметь возможность идентифицировать вызывающий объект соответствующего API. См. сведения о функциях, требующих удостоверения пакета.
- Если вам нужно использовать любую из этих функций, приложение должно иметь удостоверение пакета. Поэтому это должно быть упаковаемое приложение (упакованные приложения являются единственным типом, имеющим удостоверение пакета). Упаковаемое приложение упаковано с помощью технологии MSIX (см. раздел "Что такое MSIX?").
- Для нового приложения процесс упаковки выполняется прямо (а в конце этого раздела приведены сведения о том, как это сделать).
- Для некоторых существующих приложений можно следовать тому же процессу упаковки, что и для нового приложения. Но поскольку некоторые существующие приложения еще не готовы ко всем их содержимому, которые будут присутствовать в пакете MSIX, существует возможность упаковки приложения с внешним расположением. Это позволяет приложению иметь удостоверение пакета; Таким образом, возможность использовать те функции, которые требуют его. Дополнительные сведения см. в разделе "Предоставление удостоверения пакета" путем упаковки с внешним расположением.
- Даже если вам не нужно использовать какие-либо из этих функций, то создание упаковаемого приложения по-прежнему является хорошей идеей. Он дает пользователям самый простой способ установить, удалить и обновить приложение. Дополнительные сведения см. в разделе "Развертывание,распространение и установка " в этом разделе.
- Но создание распакованных приложений является вариантом.
Вывод заключается в том, что упакованные приложения являются единственным типом, который имеет удостоверение пакета (и у них есть лучший интерфейс установки). У непакованного приложения нет удостоверения пакета; поэтому он не может использовать api и функции, упомянутые выше.
Дополнительные сведения о пакетном и распаковке см. в разделе "Общие сведения о развертывании", в частности о преимуществах и недостатках упаковки приложения в этом разделе. В этом разделе также упоминается пакет с параметром внешнего расположения .
Дополнительные сведения о настройке приложения в виде упакованных или распакованных:
- Приложения WinUI 3 (пакет SDK для приложений Windows). См.
AppxPackage
свойство проекта Visual Studio в свойствах проекта и см. в статье "Создание первого проекта WinUI 3 (пакет SDK для приложений Windows). - Классические приложения. См. статью "Настройка классического приложения для упаковки MSIX".
- приложения универсальная платформа Windows (UWP). Приложения UWP уже настроены как упакованные; и эта конфигурация не может быть изменена.
Также см. раздел Диспетчер пакетов Windows и клиентского раздела WinGet в этом разделе.
Развертывание, распространение и установка
- Упаковаемое приложение упаковано с помощью технологии MSIX.
- Упаковаемое приложение также устанавливается с помощью MSIX. Но если вы решили упаковать с внешним расположением, то вы можете подумать об этом как о модели "bring-your-own-installer". Таким образом, с этим параметром будет работать некоторый установщик. Дополнительные сведения см. в разделе "Предоставление удостоверения пакета" путем упаковки с внешним расположением.
- Распаковка приложения не включает MSIX вообще.
Итак, почему важно, упаковано ли ваше приложение?
- Кроме того, MSIX позволяет пользователям легко устанавливать, удалять и обновлять приложение. Удаление является чистым— при удалении приложения система восстанавливается в том же состоянии, в которое она находилась до установки; артефакты не остаются позади.
- Это приложение также поддерживает добавочные и автоматические обновления.
- Microsoft Store оптимизирует для приложений такого рода (хотя их можно использовать в Магазине или вне него).
- Это простой путь для использования с помощью подключения приложения MSIX (для виртуальных машин Виртуального рабочего стола Azure). Дополнительные сведения см. в разделе "Что такое подключение приложения MSIX?".
- Подписанный пакет получает преимущества от сильного защиты от незаконного изменения. Это преимущество еще больше, чем для непакованного приложения, установленного в программных файлах.
Также см. раздел Диспетчер пакетов Windows и клиентского раздела WinGet в этом разделе.
AppContainer или Средний IL
Возможность запуска приложения в AppContainer или нет, является вопросом безопасности. Процесс приложения AppContainer и его дочерние процессы выполняются в упрощенном контейнере приложений, где они могут получить доступ только к ресурсам, которые специально предоставляются им. И они изолированы с помощью файловой системы и виртуализации реестра. В результате приложения, реализованные в AppContainer, не могут быть взломаны, чтобы разрешить вредоносные действия за пределами ограниченных назначенных ресурсов.
Упакованные или распакованные приложения можно настроить для запуска в AppContainer. Но процесс более простой для упакованных приложений. Если приложение не является приложением AppContainer, это среднее приложение IL .
Дополнительные сведения см. в разделе AppContainer для устаревших приложений и приложений MSIX AppContainer.
Сведения о настройке приложения для запуска в AppContainer или medium IL:
- Приложения WinUI 3 (пакет SDK для приложений Windows). См.
uap10:TrustLevel
атрибут манифеста пакета приложения в разделе "Настройка проекта WinUI 3 для AppContainer". - Классические приложения. См.
TrustLevel
свойство проекта Visual Studio в приложениях APPContainer MSIX (в разделе, соответствующем вашему типу приложения). - приложения универсальная платформа Windows (UWP). Приложения UWP уже настроены для запуска в AppContainer; и эта конфигурация не может быть изменена.
Помните, что у распакованных приложений нет манифеста пакета приложения. Поэтому для распакованных приложений вы объявляете решение AppContainer-or-Medium-IL в файле проекта вместо манифеста пакета приложения.
Изоляция приложений Win32
Внимание
Функция, описанная в этом разделе, доступна в предварительной версии предварительной версии Предварительной версии Windows.
Изоляция приложений Win32 — это предстоящая функция безопасности в Windows, которая в случае компрометации приложения помогает содержать ущерб и защищать выбор конфиденциальности пользователей. Эта функция основана на основе AppContainers и компонентов, которые виртуализировать ресурсы и предоставляют брокеру доступ к другим ресурсам. Документация и инструменты, помогающие изолировать приложения, см . в репозитории изоляции приложений Win32.
Возможности приложения
Возможности приложений (например, internetClient, location, микрофон и bluetooth) в основном относятся к упакованным приложениям, которые выполняются в AppContainer. Таким образом, это включает все приложения универсальная платформа Windows (UWP) и некоторые классические приложения.
Но есть некоторые сценарии, в которых даже среднее приложение IL (т . е. не приложение AppContainer) должно объявлять возможность. Одним из примеров является возможность ограниченного доступа runFullTrust .
Дополнительные сведения о возможностях приложений, о типах приложений, к ним и их настройке, см . в объявлениях возможностей приложений. Вы настраиваете возможности в манифесте пакета приложения; и именно поэтому они применяются только к упакованным приложениям.
Виды приложений
Классические приложения и приложения универсальная платформа Windows (UWP) являются двумя основными типами приложений, хотя в семействе классических приложений существует несколько типов приложений. Выбор платформы пользовательского интерфейса —WinForms, WPF, Win32, Direct 2D/3D, UWP или WinUI 3 — это один из вариантов, не зависящих от конфигураций, описанных в этом разделе.
Но давайте рассмотрим, как эти типы приложений могут отличаться друг от друга с точки зрения упаковки, развертывания и процесса.
Во-первых, все приложения UWP упаковываются и запускаются в AppContainer. Но для классических приложений все более гибко. Вы можете упаковать классическое приложение или нет. И независимо от этого решения вы можете настроить классическое приложение как AppContainer или среднее приложение IL.
Поставляется в плане | Распаковка | |
---|---|---|
AppContainer | Классические приложения приложения универсальной платформы Windows; |
Классические приложения |
Средний IL | Классические приложения | Классические приложения |
Для упакованных приложений, чтобы настроить нужный тип приложения, используйте uap10:RuntimeBehavior
атрибут в манифесте пакета приложения (см . раздел "Приложение" (Windows 10)).
- Классические приложения — это Windows
.exe
, как правило, с основной функцией или функцией точки входа WinMain. Чтобы настроить приложение в качестве классического приложения, задайте дляuap10:RuntimeBehavior
параметра packagedClassicApp или win32App.- Значение packagedClassicApp указывает либо приложение WinUI 3 (пакет SDK для приложений Windows), либо приложение мост для классических приложений (Centennial). Разница заключается в том, что приложение Centennial выполняется в AppContainer.
- И "win32App" означает любой другой вид приложения Win32 (включая приложение, упакованое с внешним расположением).
- Наконец, для параметра
uap10:RuntimeBehavior
"windowsApp" предоставляется приложение UWP.
Все варианты разработки приложений см. в разделе "Разработка приложений Windows": параметры и функции.
Пакет SDK для приложений Windows — зависимый от платформы или автономный
Если вы разрабатываете или обслуживаете приложение, которое использует пакет SDK для приложений Для Windows, то у вас есть дополнительное решение. Так как существует два способа развертывания пакета SDK для приложений Windows, от которого зависит ваше приложение:
- Зависимость от платформы (по умолчанию). Приложению требуется среда выполнения пакета SDK для приложений Windows и (или) Framework, которые будут присутствовать на целевом компьютере.
- Замкнутый. Ваше приложение содержит его зависимости пакета SDK для приложений Windows.
Дополнительные сведения см. в разделе "Обзор развертывания пакета SDK для приложений Windows".
Диспетчер пакетов Windows и клиент WinGet
Диспетчер пакетов может помочь пользователям установить или обновить или настроить программное обеспечение, автоматизируя рабочий процесс. Диспетчеры пакетов могут помочь установить любое программное обеспечение, но они, как правило, используются в основном для установки средств разработчика. Таким образом, если вы создаете средство разработчика, то вы можете быть частично заинтересованы в этом варианте. Но вот как это работает:
- Вы, как разработчик программного обеспечения, определите диспетчер пакетов (в виде декларативных инструкций) все части, необходимые для успешной установки продукта.
- А затем, когда пользователь устанавливает программное обеспечение, диспетчер пакетов следует декларативным инструкциям по автоматизации рабочего процесса установки и настройки.
Результатом является сокращение времени, затраченного на подготовку среды пользователя, и повышение совместимости между установленными компонентами. И вы можете использовать Диспетчер пакетов Windows для распространения упакованных или распакованных приложений в таких форматах, как .msix
, .msi
и .exe
.
Windows developer