Введение

ClickOnce — это компонент Microsoft .NET Framework 2.0 и более поздних версий, поддерживающий развертывание приложений, разработанных с использованием Windows Forms или Windows Presentation Foundation. Он аналогичен Java Web Start для платформы Java или Zero Install для Linux.

Описание

Основной принцип ClickOnce заключается в упрощении развертывания приложений Windows. Кроме того, ClickOnce призван решить три другие проблемы, связанные с традиционными моделями развертывания: сложность обновления установленного приложения, влияние приложения на компьютер пользователя и необходимость прав администратора для установки приложений. Приложения, развернутые с помощью ClickOnce, считаются "минимально влияющими", поскольку они устанавливаются для конкретного пользователя, а не для всего компьютера. Для установки этих приложений не требуются права администратора. Каждое приложение ClickOnce изолировано от других, что означает, что одно приложение ClickOnce не может вызвать сбой в работе другого. ClickOnce использует механизм Code Access Security (CAS) для предотвращения вызова системных функций приложением ClickOnce из сети, обеспечивая тем самым безопасность данных и клиентской системы в целом.

Приложения

Модель ClickOnce поддерживает как устанавливаемые приложения (аналогичные традиционным приложениям Windows с интеграцией в меню "Пуск"), так и онлайн-приложения (приложения, работающие в браузере, которые не устанавливаются, а запускаются и кэшируются). Приложения ClickOnce можно развернуть на компьютере из интернет-расположения, сетевой папки или локального расположения файлов, например, с CD-ROM. Технология развертывания ClickOnce была интегрирована в Visual Studio 2005 и последующих версий. Она также поддерживается MSBuild, системой управления сборкой Microsoft.

Манифесты

Развертывание ClickOnce контролируется с помощью двух файлов манифеста XML: манифеста развертывания и манифеста приложения. Манифесты имеют тот же формат XML, что и реализация параллельных сборок. Манифест развертывания (*.application файл) описывает модель развертывания: текущую версию, поведение при обновлении, идентификацию издателя и цифровую подпись; этот манифест предназначен для создания администраторами, отвечающими за развертывание. Манифест приложения (*.exe.manifest файл) описывает сборки приложения, зависимые библиотеки и необходимые приложению разрешения. Этот файл предназначен для создания разработчиком приложения. Для запуска приложения ClickOnce пользователь нажимает на файл манифеста развертывания. В настоящее время ClickOnce запускается только в том случае, если URL-адрес манифеста развертывания открыт в Internet Explorer или Edge. Если URL развертывания запускается из другого приложения, например Outlook, Word или Excel, запуск приложения будет успешным только в том случае, если Internet Explorer или Edge установлены в качестве браузера по умолчанию.

Обновления

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

Поддержка браузера

Нативная поддержка приложений ClickOnce доступна только в Internet Explorer и Edge. С выпуском .NET Framework 3.5 с пакетом обновления 1, Microsoft включила в Firefox дополнение под названием .NET Framework Assistant, которое обеспечило поддержку ClickOnce в Firefox 3 и более поздних версиях. Первая версия этого расширения содержала проблему, из-за которой пользователи не могли удалить дополнение стандартным способом, как и другие дополнения; соответствующая кнопка "Удалить" в диалоговом окне "Дополнения" была неактивна. 6 мая 2009 года Microsoft выпустила обновление, устраняющее эту проблему, и опубликовала статью поддержки, помогающую пользователям вручную удалить этот компонент. Кроме того, более поздние версии .NET Framework Assistant, поставляемые с Windows 7 и .NET Framework 4, не содержали этой проблемы. Для других браузеров могут быть доступны сторонние расширения, добавляющие поддержку ClickOnce, например, ClickOnce для Google Chrome от Menarva Ltd.