Развертывание WPF-приложений
97WPF --- Периферия WPF --- Развертывание WPF-приложений
Рано или поздно вы отпустите свое приложение WPF в "свободное плаванье". Хотя существуют десятки разных способов передать готовое приложение с компьютера разработчика на настольный компьютер конечного пользователя, большинство приложений WPF используют одну из описанных ниже стратегий развертывания:
- Запуск в браузере
Если создано WPF-приложение, состоящее из веб-страниц, его можно запускать прямо в браузере. Ничего устанавливать не понадобится. Однако приложение должно быть готово к тому, чтобы функционировать с очень небольшим набором привилегий. (Например, нельзя получать доступ к произвольным файлам, работать с системным реестром Windows, отображать всплывающие окна и т.д.)
- Развертывание через браузер
WPF-приложения тесно интегрированы со средством установки ClickOnce ("однократный щелчок"), которое позволяет пользователю запустить программу установки со страницы браузера. Лучше всего то, что приложения, установленные с помощью ClickOnce, могут быть сконфигурированы так, чтобы автоматически проверять наличие обновлений. Отрицательной стороной является то, что возможности по настройке установки ограничены, и нет никакого способа выполнить задачи конфигурирования системы (вроде модификации системного реестра Windows, создания базы данных и т.п.).
- Развертывание с помощью традиционной программы установки
Этот подход все еще существует в мире WPF. В случае выбора такого варианта придется решить, нужно ли создавать полноценный установочный пакет Microsoft Installer (MSI) или же обратиться к более простой (но и ограниченной) установке ClickOnce. Готовый установочный пакет можно распространять на CD-диске, во вложении сообщения электронной почты, через общедоступный сетевой ресурс и т.д.
Хотя ClickOnce была разработана как легковесная технология развертывания, которая не заменит полноценные программы установки, каждая новая версия добавляет к ней ряд новых возможностей. В .NET 4 установка ClickOnce может создавать значки рабочего стола и регистрировать типы файлов. Вдобавок .NET теперь устанавливает дополнение Firefox под названием Microsoft .NET Framework Assistant, которое позволяет пользователям запускать установки ClickOnce из браузеров Firefox и Internet Explorer (естественно, если это дополнение включено).
Хотя формально вполне допускается перемещать приложение .NET с одного компьютера на другой простым копированием содержащей его папки, все же профессиональные приложения часто требуют несколько большего. Например, может понадобиться добавить множество ярлыков в меню Start (Пуск), изменить настройки системного реестра либо установить дополнительные ресурсы (такие как специальный журнал регистрации событий или база данных). Для получения этих средств должна быть создана специальная программа установки.
Существует много вариантов создания программ установки. Можно воспользоваться коммерчески распространяемым продуктом типа InstallShield, либо создать установочный файл MSI с помощью шаблона Setup Project (Проект установки) в Visual Studio.
Традиционные программы установки предлагают пользователю хорошо знакомый интерфейс мастера установки, с изобилием средств для передачи файлов и выполнения разнообразных конфигурационных действий.
Другой вариант — применение системы развертывания ClickOnce, тесно интегрированной с WPF. Система ClickOnce обладает рядом ограничений (большинство из них связано с положенным в основу ClickOnce проектным решением), но обеспечивает два существенных преимущества:
поддержка установки со страницы браузера (которая может размещаться как во внутренней сети, так и в Интернете);
поддержка обновлений автоматической загрузки и установки обновлений.
Этих двух средств может оказаться недостаточно, чтобы соблазнить разработчиков отказаться от использования полноценных программ установки. Но если интересует простое, легковесное развертывание, которое работает через Интернет и поддерживает автоматическое обновление, то в этом случае ClickOnce — просто идеальный вариант.
Модель ClickOnce и частичное доверие
Обычные приложения WPF требуют полного доверия (full trust), потому что им нужны права доступа к неуправляемому коду для создания окна WPF. Это означает, что установка автономного приложения WPF посредством ClickOnce вызовет такое же препятствие со стороны системы безопасности, как и установка любого другого типа приложения из Интернета — в частности, браузер выдаст предупреждение безопасности. Если пользователь соглашается, устанавливаемое приложение получает возможность делать все, что разрешено делать в системе текущему пользователю.
ClickOnce работает иначе с более старыми приложениями Windows Forms. Приложения Windows Forms могут быть сконфигурированы на использование частичного доверия и затем развернуты с помощью ClickOnce. В лучшем случае это означает, что пользователь может устанавливать частично доверенное приложение Windows Forms через ClickOnce без какого-либо предупреждения безопасности или повышения привилегий.
Может показаться, что подход Windows Forms лучше, но WPF предусматривает возможность комбинировать частично доверенное программирование и технологию установки ClickOnce. Фокус заключается в использовании модели ХВАР. В такой ситуации приложение запускается в браузере, поэтому ему не нужно создавать каких-либо окон, и не нужны права доступа к неуправляемому коду. Более того, поскольку приложение доступно через URL (и затем кэшируется локально), пользователь всегда запускает последнюю, самую свежую версию.
При проектировании ClickOnce предполагалось иметь дело с простыми, прямолинейными приложениями. Развертывание ClickOnce, в частности, подходит для производственных приложений и внутреннего программного обеспечения компании. Обычно такие приложения выполняют свою работу, опираясь на данные и службы, предоставляемые серверами приложений среднего уровня. Как следствие, им не требуется привилегированный доступ к локальному компьютеру.
Эти приложения также развертываются в среде масштаба предприятия, которая может включать тысячи рабочих станций. В таких средах стоимость развертывания приложений и их обновления довольно значительна, особенно если все это должно поддерживаться администратором. В результате более важно предложить простой и прямолинейный процесс, нежели развитый пакет средств.
Модель ClickOnce также может иметь смысл для прикладных приложений, которые распространяются через Интернет, в частности, если эти приложения требуют частого обновления и не предъявляют строгих требований к установке. Однако ограничения ClickOnce (такие как недостаток гибкости в настройке мастера установки) делают эту модель непрактичной для сложных прикладных приложений, которые выдвигают детализированные требования к установке или нуждаются во взаимодействии с пользователем при выполнении ряда тонких конфигурационных шагов. В таких случаях понадобится создавать специальное приложение установки.
Чтобы установить приложение WPF с помощью ClickOnce, на компьютере уже должна быть установлена исполняющая среда .NET Framework. Это требование проверяется при первом запуске установки ClickOnce. Если исполняющая среда .NET Framework не установлена, отображается окно сообщения, которое поясняет суть проблемы и предлагает установить .NET с веб-сайта Microsoft.