Развертывание и безопасность 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). Дополнительные сведения см. в следующем разделе:
Развертывание классического приложения .NET с помощью ClickOnce
Развернуть настольное приложение .NET Framework с помощью ClickOnce.
Манифест развертывания описывает развертывание приложения. Это включает расположение манифеста приложения и версию приложения, которую должны запускать клиенты.
Заметка
В 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 Publish используются для указания времени и частоты проверки обновлений приложения. Поведение обновления можно указать в манифесте развертывания или его можно представить в качестве пользовательских вариантов в пользовательском интерфейсе приложения с помощью API ClickOnce. Кроме того, можно использовать свойства публикации, чтобы сделать обновления обязательными или откатить к более ранней версии. Дополнительные сведения см. в разделе Выбор стратегии обновления ClickOnce.
Сторонние установщики
Установщик ClickOnce можно настроить для установки сторонних компонентов вместе с приложением. Необходимо иметь распространяемый пакет (.exe или файл .msi) и описать его с языконезависимым манифестом продукта, а также добавив языковоспецифический манифест пакета. Дополнительные сведения см. в разделе Создание пакетов начальной загрузки.
Инструменты ClickOnce
В следующей таблице показаны средства, которые можно использовать для создания, редактирования, подписывания и повторного подписывания манифестов приложения и развертывания. Для .NET Core и .NET 5+параметры, аналогичные атрибутам MSBuild, задаются с помощью профиля публикации.
Инструмент | Описание |
---|---|
Страница безопасности , Дизайнер проектов | Подписывает манифесты приложения и развертывания. Для .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 с пакетом обновления 1 (SP1), 3.5 с пакетом обновления 1 (SP1), 4 |
Хром | 3.5 |
Microsoft Edge | 3.5 |