Обзор установки приложения через ClickOnce Печать
Добавил(а) microsin   

Технология развертывания приложения ClickOnce позволяет Вам создать самостоятельно обновляющиеся приложения Windows, которые могут быть установлены и запущены с минимальными усилиями со стороны пользователя. Публикация ClickOnce призвана преодолеть 3 главные проблемы, свойственные традиционным методам развертывания/установки приложения:

Сложность в обновлении приложений. При развертывании с помощью Microsoft Windows Installer всякий раз, когда обновляется приложение, пользователь должен переустановить все приложение полностью, что обычно требует административных привилегий. При развертывании ClickOnce обновления можно предоставлять автоматически. Загрузятся только те части приложения, которые были изменены, и затем полное, обновленное приложение будет заново установлено в новой папке.
Нежелательное воздействие на компьютер пользователя. При развертывании с помощью Microsoft Windows Installer приложения часто полагаются на использование общих программных компонентов, что потенциально приводит к конфликтам версий. При развертывании ClickOnce каждое приложение содержит в себе все необходимое, и никак не влияет на другие приложения.
Безопасность, права доступа. Windows Installer при установке требует наличия прав администратора, для обычного пользователя разрешена только ограниченная установка. ClickOnce дает возможность пользователям с ограниченными привилегиями устанавливать приложение, и дает только разрешение Code Access Security, необходимое для приложения.

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

Что из себя представляет приложение ClickOnce? Установлено, что ClickOnce применяется для развертывания любых приложений Windows Presentation Foundation (WPF), Windows Forms или консольных (приложений командной строки). Вы можете публиковать приложение ClickOnce тремя разными способами: с Web-станицы, с сетевой общей папки (network file share), или с любого носителя данных наподобие папки на диске или CD-ROM. Приложение ClickOnce может быть установлено на компьютере пользователя, и запущено на нем локально даже тогда, когда этот компьютер отключен от сети (offline), или даже приложение может быть запущено только в режиме подключения к сети (online-only mode), без какой-либо постоянной установки на компьютер пользователя. Для получения дополнительной информации см. [2].

Приложения ClickOnce могут обновлять сами себя; они могут проверять наличие более новой версии, и автоматически заменить любые обновленные файлы. Разработчик может задать поведение обновления; администратор сети также может управлять стратегиями обновлений, например помечая обновление как обязательное. Обновления также можно откатить назад к предыдущей версии конечным пользователем или администратором [2].

Из-за того, что приложения ClickOnce по сути изолированы (не влияют на общую рабочую среду и мало зависят от неё), инсталляция или запуск приложения ClickOnce не может повредить существующие приложения. Приложения ClickOnce полностью самодостаточны; каждое приложение ClickOnce устанавливается и запускается безопасно, индивидуально для каждого пользователя, потому что для каждого пользователя существует отдельная копия приложения в кэше приложения, находящемся в профиле пользователя. По умолчанию приложения ClickOnce запускаются в зонах безопасности Internet (внешняя общая мировая сеть) или Intranet (большая внутренняя сеть организации). Если это необходимо, приложение может выдать запрос на повышение привилегий (request elevated security permissions, см. [3]). 

Как работает развертывание ClickOnce. Ядро архитектуры публикации ClickOnce основано на 2 файлах манифеста XML: application manifest и deployment manifest. 

Application manifest описывает само приложение, включая сборки, зависимости и файлы, которые входят в состав приложения, требуемые разрешения и место нахождения доступных обновлений. Разработчик приложения создает application manifest с помощью Publish Wizard в Visual Studio 2005, или с помощью утилиты генерации манифеста (manifest generation tool Mage.exe) в .NET Framework SDK. Для дополнительной информации см. [4]. 

Deployment manifest описывает, как приложение развертывается, включая место нахождения application manifest и версию приложения, которое должны запустить клиенты. Администратор создает deployment с помощью manifest generation tool (Mage.exe), входящего в состав .NET Framework SDK.

Примечание: Publish Wizard в Microsoft Visual Studio 2005 также генерирует deployment manifest.

После того, как deployment manifest создан, он копируется в место развертывания (deployment location). Это может быть Web-сервер, общая сетевая папка или носитель данных наподобие CD. Application manifest и все файлы приложения также копируются в место развертывания, которое указывается в deployment manifest. Это может быть то же самое место, что и место развертывания, или это может быть другое место. Когда используется мастер публикации (Publish Wizard) в Microsoft Visual Studio 2005, эти операции копирования выполняются автоматически.

Примечание: если разработчик является также и администратором, т. е. имеет привилегии Administrator для Web-сайта или общей сетевой папки (file share), куда будет копироваться deployment manifest, то этот манифест представляет все, что требуется. Если разработчик не администратор, то администратор должен использовать инструмент командной строки чтобы обновить и подписать манифест.

После того, как deployment manifest размещен в место развертывания, конечные пользователи могут загрузить и установить приложение кликом на иконку, представляющую файл deployment manifest на Web-страничке или в папке. Для большинства случаев конечному пользователю показывается простое окно диалога, запрашивающее подтверждение инсталляции, после чего без всяких дополнительных вопросов начнется инсталляция, после чего установленное приложение автоматически запустится. В случаях, когда приложению требуется повышение привилегий (elevated permissions), окно диалога запросит у пользователя разрешение на предоставления разрешения, после чего установка может продолжится.

После установки приложение добавляется в меню Пуск (Start menu) и в список установленных приложений (Add/Remove Programs group) Панели Управления операционной системы Windows (Control Panel). В отличие от других технологий развертывания, ничего не добавляется ни в папку Program Files, ни в реестр, ни на рабочий стол, и для инсталляции не требуется административных привилегий.

Примечание: есть возможность предотвратить добавление приложения в меню Пуск и в список установленных приложений, в результате получится эффект поведения наподобие Web-приложения [2].

Когда разработчик приложения создает обновленную версию приложения, он также генерирует новый application manifest, и копирует файлы в место развертывания - обычно это папка одного и того же уровня по отношению к оригинальной папке развертывания приложения. Администратор обновляет deployment manifest, чтобы указать на место размещения новой версии приложения.

Примечание: для выполнения этих шагов может использоваться Publish Wizard из Microsoft Visual Studio 2005.

В дополнение к месту развертывания deployment manifest также содержит место нахождения обновления (update location, это может быть Web-страничка или общая сетевая папка, network file share), где приложение проверяет наличие обновленных версий. Свойства публикации (ClickOnce Publish) также используются для для указания, когда и как часто приложение должно проверять наличие обновлений. Поведение обновления может быть задано в deployment manifest, или это может быть представлено как выбор пользователя в интерфейсе самого приложения с помощью ClickOnce API. Дополнительно свойства публикации могут сделать обновления обязательными, или можно задать откат к более ранней версии [5].

В следующей таблице сравниваются возможности техники развертывания ClickOnce и традиционной техники установки Windows Installer:

Функция ClickOnce Windows Installer
Автоматическое обновление(1) Да Да
Откат обратно после инсталляции(2) Да Нет
Обновление с Web-страницы Да Нет
Установка никак не влияет на общие программные компоненты операционной системы и на другие установленные приложения Да Нет
Предоставленные разрешения безопасности Даются только те разрешения, которые необходимы для работы приложения (что безопаснее). По умолчанию даются разрешения полного доверия Full Trust (менее безопасно).
Требуемые разрешения безопасности Зона Internet или Intranet (Full Trust для инсталляции CD-ROM) Administrator
Подписывание сертификатом манифеста развертывания (deployment manifest) Да Нет
Интерфейс пользователя при установке Простейший, почти не требуется взаимодействие с пользователем. Мастер, проводящий пользователя по шагам установки.
Инсталляция сборок по запросу Да Нет
Инсталляция общих файлов Нет Да
Инсталляция драйверов Нет Да (с настраиваемыми действиями)
Инсталляция в глобальный кэш сборок (Global Assembly Cache) Нет Да
Инсталляция сразу для нескольких пользователей Нет Да
Добавление ярлыка приложения в меню Пуск Да Да
Добавление приложения в группу автозапуска (Startup) Нет Да
Добавление приложение в меню Favorites Нет Да
Регистрация типов файлов Нет Да
Доступ к реестру во время установки(3) Ограниченный Да
Внесение изменений в двоичных файлах (binary patching) Нет Да
Место установки приложения Кэш приложений (ClickOnce application cache). Поменять это никак нельзя. Папка Program Files по умолчанию. Можно задать при установке выбор папки для приложения.

Примечания:

(1) При использовании Windows Installer Вы должны реализовать обновление программно в коде приложения.
(2) При использовании ClickOnce откат назад доступен в стандартной оснастке Установка и удаление программ (Add/Remove Programs).
(3) Развертывание ClickOnce может получить доступ к ветви реестра HKEY_LOCAL_MACHINE (HKLM) только с наличием разрешения полного доверия (Full Trust permission).

[Ссылки]

1. ClickOnce Deployment Overview site:msdn.microsoft.com.
2. Choosing a ClickOnce Deployment Strategy site:msdn.microsoft.com.
3. ClickOnce Deployment and Security site:msdn.microsoft.com.
4. How to: Publish a ClickOnce Application site:msdn.microsoft.com.
5. Choosing a ClickOnce Update Strategy site:msdn.microsoft.com.
6. Выбор стратегии развертывания site:msdn.microsoft.com.
7. Развертывание и безопасность технологии ClickOnce site:msdn.microsoft.com.