Развертывание и безопасность технологии ClickOnce

ClickOnce — это технология развертывания, позволяющая создавать приложения Windows с возможностью самообновления, которые могут устанавливаться и запускаться с минимальным вмешательством пользователя. Visual Studio обеспечивает полную поддержку публикации и обновления приложений, развернутых с помощью технологии ClickOnce, если вы разработали проекты с помощью Visual Basic и Visual C#. Сведения о развертывании приложений Visual C++ см. в статье "Развертывание ClickOnce для приложений Visual C++".

Развертывание ClickOnce преодолевает три основных проблемы при развертывании:

  • Трудности обновления приложений. При развертывании установщика Microsoft Windows при каждом обновлении приложения пользователь может установить обновление, msp-файл и применить его к установленному продукту; При развертывании ClickOnce можно автоматически предоставлять обновления. Скачиваются только те части приложения, которые изменились, а затем все обновленное приложение переустановится из новой параллельной папки.

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

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

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

Что такое приложение ClickOnce?

Приложение ClickOnce — это любое приложение Windows Presentation Foundation (xbap), Windows Forms (.exe), консольное приложение (.exe) или решение Office (.dll), опубликованное с помощью технологии ClickOnce. Приложение ClickOnce можно опубликовать тремя разными способами: с веб-страницы, из сетевого файлового ресурса или устаревших носителей, таких как компакт-диск. Приложение ClickOnce можно установить на компьютере конечного пользователя и запустить локально, даже если компьютер находится в автономном режиме, или его можно запустить в режиме только в сети, не устанавливая ничего на компьютере конечного пользователя. Дополнительные сведения см. в статье "Выбор стратегии развертывания ClickOnce".

Приложения ClickOnce могут быть самообновляемыми; они могут проверять наличие новых версий по мере их доступности и автоматически заменять все обновленные файлы. Разработчик может указать поведение обновления; сетевой администратор также может управлять стратегиями обновления, например, устанавливая обязательность обновления. Обновления также можно откатить до более ранней версии конечным пользователем или администратором. Дополнительные сведения см. в статье "Выбор стратегии обновления ClickOnce".

Так как приложения ClickOnce изолированы, установка или запуск приложения ClickOnce не могут нарушить существующие приложения. Приложения ClickOnce являются автономными; каждое приложение ClickOnce устанавливается и запускается из защищенного кэша для каждого пользователя. Приложения ClickOnce выполняются в зонах безопасности Интернета или интрасети. При необходимости приложение может запросить повышение прав. Дополнительные сведения см. в разделе "Безопасные приложения ClickOnce".

Как работает безопасность ClickOnce

Базовая безопасность ClickOnce основана на сертификатах, политиках безопасности доступа к коду и запросе доверия ClickOnce.

Сертификаты

Сертификаты Authenticode используются для проверки подлинности издателя приложения. Используя Authenticode для развертывания приложений, ClickOnce помогает предотвратить вредную программу изображать себя в качестве законной программы, исходящей из установленного, надежного источника. При необходимости сертификаты также можно использовать для подписи манифестов приложения и развертывания, чтобы доказать, что файлы не были изменены. Дополнительные сведения см. в разделе ClickOnce и Authenticode. Сертификаты также можно использовать для настройки клиентских компьютеров для получения списка доверенных издателей. Если приложение поступает из доверенного издателя, его можно установить без какого-либо взаимодействия с пользователем. Для получения дополнительной информации см. раздел Общие сведения о развертывании доверенных приложений.

Управление доступом для кода

Безопасность доступа к коду помогает ограничить доступ к защищенным ресурсам. В большинстве случаев можно выбрать зоны Интернета или локальной интрасети, чтобы ограничить разрешения. Используйте страницу "Безопасность" в конструкторе проектов, чтобы запросить зону, соответствующую приложению. Вы также можете отлаживать приложения с ограниченными разрешениями для эмуляции пользовательского интерфейса. Дополнительные сведения см. в статье Управление доступом для кода для приложения ClickOnce.

Примечание.

В ClickOnce для .NET Core и .NET 5 или более поздней версии эта функция не поддерживается. Дополнительные сведения см. в разделе ClickOnce для .NET.

Запрос о доверии ClickOnce

Если приложение запрашивает больше разрешений, чем в зоне, пользователю может быть предложено принять решение о доверии. Конечный пользователь может решить, являются ли приложения ClickOnce, такие как приложения Windows Forms, приложения Windows Presentation Foundation, консольные приложения, приложения браузера XAML и решения Office доверенны для запуска. Дополнительные сведения см. в разделе "Практическое руководство. Настройка поведения запроса доверия ClickOnce".

Как работает развертывание ClickOnce

Базовая архитектура развертывания ClickOnce основана на двух XML-файлах манифеста: манифеста приложения и манифеста развертывания. Файлы используются для описания установки приложений ClickOnce, их обновления и обновления.

Публикация приложений ClickOnce

Манифест приложения описывает само приложение. К ним относятся сборки, зависимости и файлы, составляющие приложение, необходимые разрешения и расположение, в котором будут доступны обновления. Разработчик приложения создает манифест приложения с помощью мастера публикации в Visual Studio (средство публикации для .NET Core и .NET 5+) или Инструмент создания и изменения манифестов (Mage.exe) в пакете средств разработки программного обеспечения Windows (SDK). Дополнительные сведения см. в разделе:

Манифест развертывания содержит описание развертывания приложения. Это включает расположение манифеста приложения и версию приложения, которую должны запускать клиенты.

Примечание.

В ClickOnce для .NET Core 3.1 и .NET 5 или более поздней версии используйте dotnet-mage.exe вместо Mage.exe. Дополнительные сведения см. в разделе ClickOnce для .NET.

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

После создания манифест развертывания копируется в расположение развертывания. Это может быть веб-сервер, сетевой файловый ресурс или устаревший носитель, например компакт-диск. Манифест приложения и все файлы приложения также копируются в расположение развертывания, указанное в манифесте развертывания. Оно может совпадать с местом развертывания или отличаться от него. При использовании мастера публикации в Visual Studio операции копирования выполняются автоматически.

Установка приложений ClickOnce

После развертывания в расположении развертывания конечные пользователи могут скачать и установить приложение, щелкнув значок, представляющий файл манифеста развертывания на веб-странице или в папке. В большинстве случаев конечный пользователь предоставляет простое диалоговое окно с просьбой подтвердить установку, после чего выполняется установка, и приложение запускается без дополнительного вмешательства. В случаях, когда приложению требуются повышенные разрешения или если приложение не подписано доверенным сертификатом, диалоговое окно также просит пользователя предоставить разрешение, прежде чем установка может продолжиться. Несмотря на то, что установки ClickOnce предназначены для каждого пользователя, повышение разрешений может потребоваться, если необходимы необходимые условия, требующие прав администратора. Дополнительные сведения о повышенных разрешениях см. в разделе "Защита приложений ClickOnce".

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

Приложение можно добавить в меню "Пуск" пользователя и в группу "Добавить или удалить программы" в панель управления. В отличие от других технологий развертывания, ничего не добавляется в папку Program Files или реестр, а права администратора не требуются для установки.

Примечание.

Кроме того, можно запретить добавлению приложения в меню "Пуск " и группе "Добавить или удалить программы ", что делает его поведение как веб-приложение. Дополнительные сведения см. в статье "Выбор стратегии развертывания ClickOnce".

Обновление приложений ClickOnce

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

Примечание.

Мастер публикации в Visual Studio можно использовать для выполнения этих действий. Для .NET Core и .NET 5+ средство публикации предоставляет следующие действия.

Помимо размещения развертывания в манифесте развертывания также содержится размещение обновления (веб-страница или общий сетевой ресурс), проверяемое приложением на наличие обновленных версий. Свойства публикации clickOnce используются для указания времени и частоты проверки обновлений приложения. Поведение обновления можно указать в манифесте развертывания или его можно представить в качестве пользовательских вариантов в пользовательском интерфейсе приложения с помощью API ClickOnce. Кроме того, в свойствах публикации может указываться обязательность обновлений или откат к предыдущей версии. Дополнительные сведения см. в разделе "Выбор стратегии обновления ClickOnce".

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

Установщик ClickOnce можно настроить для установки сторонних компонентов вместе с приложением. Необходимо иметь распространяемый пакет (.exe или файл .msi) и описать пакет с манифестом продукта, нейтральным языком, и манифестом пакета для конкретного языка. Дополнительные сведения см. в разделе "Создание пакетов начальной загрузки".

Инструменты ClickOnce

В следующей таблице показаны средства, которые можно использовать для создания, редактирования, подписывания и повторного подписывания манифестов приложения и развертывания. Для .NET Core и .NET 5+параметры, аналогичные атрибутам MSBuild, задаются с помощью профиля публикации.

Средство Description
Страница "Безопасность" в конструкторе проектов Подписывает манифесты приложения и развертывания. Для .NET Core и .NET 5+эти параметры находятся в профиле публикации.
Страница публикации в конструкторе проектов Создает и редактирует манифесты приложения и развертывания для приложений Visual Basic и Visual C#. Для .NET Core и .NET 5+эти параметры находятся в профиле публикации.
Mage.exe (инструмент создания и изменения манифестов) Создает манифесты приложения и развертывания для приложений Visual Basic, Visual C# и Visual C++.

Подписывает и повторно подписывает манифесты приложения и развертывания.

Можно запускать из пакетных скриптов и командной строки.
dotnetmage.exe (Инструмент создания и изменения манифестов) Создает манифесты приложения и развертывания для приложений .NET 5+ C# и Visual Basic. Использование эквивалентно Mage.exe.

Подписывает и повторно подписывает манифесты приложения и развертывания.

Можно запускать из пакетных скриптов и командной строки.
MageUI.exe (инструмент создания и изменения манифестов, графический клиент) Создает и редактирует манифесты приложения и развертывания.

Подписывает и повторно подписывает манифесты приложения и развертывания.
Задача GenerateApplicationManifest Создает манифест приложения.

Можно запустить из MSBuild. Дополнительные сведения см. в разделе Справка по MSBuild.
Задача GenerateDeploymentManifest Создает манифест развертывания.

Можно запустить из MSBuild. Дополнительные сведения см. в разделе Справка по MSBuild.
Задача SignFile Подписывает манифесты приложения и развертывания.

Можно запустить из MSBuild. Дополнительные сведения см. в разделе Справка по MSBuild.
Microsoft.Build.Tasks.Deployment.ManifestUtilities Разработка собственного приложения для создания манифестов приложения и развертывания.

В следующей таблице показана версия платформа .NET Framework, необходимая для поддержки приложений ClickOnce в этих браузерах.

Браузер Версия платформы .NET Framework
Firefox 2.0 SP1, 3.5 SP1, 4
Chrome 3.5
Microsoft Edge 3.5