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


Приложения Windows: упаковка, развертывание и процесс

Примечание.

Некоторые сведения относятся к предварительной версии продукта, в которую перед коммерческим выпуском могут быть внесены существенные изменения. Майкрософт не предоставляет никаких гарантий, явных или подразумеваемых, относительно приведенных здесь сведений.

В этом разделе рассматриваются варианты, касающиеся:

  • Будет ли ваше приложение упаковано.
  • Как развернуть или распространить приложение и как он будет установлен.
  • Процесс выполнения вашего приложения— как он будет изолирован; и какие API будут доступны для него.

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

Упакованный или распакованный

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

Многие функции расширения Windows, включая фоновые задачи, уведомления, динамические плитки, пользовательские расширения контекстного меню и целевые объекты общего доступа, могут использоваться приложением только в том случае, если это приложение имеет удостоверение пакета во время выполнения. Это связано с тем, что операционная система (ОС) должна иметь возможность идентифицировать вызывающий объект соответствующего API. См. сведения о функциях, требующих удостоверения пакета.

  • Если вам нужно использовать любую из этих функций, приложение должно иметь удостоверение пакета. Поэтому это должно быть упаковаемое приложение (упакованные приложения являются единственным типом, имеющим удостоверение пакета). Упаковаемое приложение упаковано с помощью технологии MSIX (см. раздел "Что такое MSIX?").
    • Для нового приложения процесс упаковки выполняется прямо (а в конце этого раздела приведены сведения о том, как это сделать).
    • Для некоторых существующих приложений можно следовать тому же процессу упаковки, что и для нового приложения. Но поскольку некоторые существующие приложения еще не готовы ко всем их содержимому, которые будут присутствовать в пакете MSIX, существует возможность упаковки приложения с внешним расположением. Это позволяет приложению иметь удостоверение пакета; Таким образом, возможность использовать те функции, которые требуют его. Дополнительные сведения см. в разделе "Предоставление удостоверения пакета" путем упаковки с внешним расположением.
  • Даже если вам не нужно использовать какие-либо из этих функций, то создание упаковаемого приложения по-прежнему является хорошей идеей. Он дает пользователям самый простой способ установить, удалить и обновить приложение. Дополнительные сведения см. в разделе "Развертывание,распространение и установка " в этом разделе.
  • Но создание распакованных приложений является вариантом.

Вывод заключается в том, что упакованные приложения являются единственным типом, который имеет удостоверение пакета (и у них есть лучший интерфейс установки). У непакованного приложения нет удостоверения пакета; поэтому он не может использовать api и функции, упомянутые выше.

Дополнительные сведения о пакетном и распаковке см. в разделе "Общие сведения о развертывании", в частности о преимуществах и недостатках упаковки приложения в этом разделе. В этом разделе также упоминается пакет с параметром внешнего расположения .

Дополнительные сведения о настройке приложения в виде упакованных или распакованных:

Также см. раздел Диспетчер пакетов Windows и клиентского раздела WinGet в этом разделе.

Развертывание, распространение и установка

  • Упаковаемое приложение упаковано с помощью технологии MSIX.
  • Распаковка приложения не включает 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.