К основному контенту

Технология ClickOnce

ClickOnce позволяет создавать и опубликовывать Windows-приложения, которые устанавливаются, обновляются и запускаются с минимальным вмешательством со стороны пользователя.
Хорошая статья с примером представлена на CodeProject.
Для более близкого знакомства, рассмотрим все особенности на примере.


Итак, создадим WPF-приложение, назовем его ClickOnceApp:


После того, как мы убедились, что наше приложение работает, переходим в свойства проекта.



Одним из пунктов создания защищенных приложений ClickOnce является выбор зоны с полным или частичным доверием.
Войдем во вкладку Security. В этой вкладке мы можем настроить параметры управления доступа для кода приложения.


Управление доступом для кода — это механизм на платформе .NET Framework, позволяющий ограничить доступ кода к защищенным ресурсам и операциям.

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

Теперь перейдем во вкладку Publish


Для начала нам необходимо определиться со стратегией развертывания.
Ниже перечисляются следующие три стратегии развертывания:

  • установка из Интернета или общего сетевого ресурса;
  • установка с компакт-диска;
  • запуск приложения из Интернета или общего сетевого ресурса.
Подробное описание в статье Выбор стратегии развертывания ClickOnce.
Настроим местоположение, в которое Visual Studio будет помещать файлы приложения и манифесты.
В поле Publishing Folder Location можно ввести местоположение для публикации с использованием одного из форматов:

  • Чтобы опубликовать на веб-сервере, введите URL-адрес, используя формат http://www.microsoft.com/имя_приложения.
  • Чтобы опубликовать в общей папке или на пути к диску, введите путь, используя либо UNC-путь (\\сервер\имя_приложения), либо путь к файлу (C:\Deploy\имя_приложения).
  • Чтобы опубликовать на FTP-сервере, введите путь, используя формат ftp://ftp.microsoft.com/имя_приложения.
 Или же можно по кнопке обзора() выбрать нужное местоположение:



Для примера выберем папочку Deploy на диске C:\


Ниже в поле Installation URL указывается место, куда пользователь переходит для загрузки и установки приложения. Места куда было первоначально опубликовано приложение и место для загрузки, могут не совпадать.
Далее определим режим установки приложения. В области Install Mode and Settings отметим нужный вариант:

  • Приложение доступно только из сети.
  • Приложение будет доступно в автономном режиме. 
 По кнопке Application Files откроется диалоговое окно, в котором отобразятся все файлы в проекте, не содержащие кода, которые развертываются вместе с приложением. В некоторых случаях может потребоваться не публиковать определенные файлы либо устанавливать определенные файлы на основании условий.
Но VS 2010 предоставляет возможность помечать файлы как фалы данных или как необходимые, включать и исключать их, а так же создавать группы файлов для условной установки.  
В нашем случае имеется одна группа файлов с именем обязательно, куда включены exe-файл и манифест приложения, который описывает текущую версию, содержит пути ко всем файлам.
Для добавления файлов необходимо в свойствах файла в Build Action установить значение Content. После этого они по умолчанию будут отмечены как включенные. Они могут быть включены, исключены или помечены как файлы данных.

Подробнее о задании файлов, публикуемых с помощью ClickOnce на MSDN.

По кнопке Prerequisites… откроется окно, в котором можно выбрать набор необходимых компонентов, которые должны комплектоваться вместе с приложением. 



Тем самым мы обеспечиваем установку правильной версии платформы .NET на локальный компьютер.

Вместо комплектации и публикации необходимых компонентов можно также указать место загрузки для компонентов. В дополнение к определенному заранее списку необходимых компонентов в список можно добавить свои собственные компоненты (
Создание пакетов загрузчика). 
Далее переходим к настройке обновлений приложения. По кнопке Updates… откроется следующее окно:
 

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

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

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

Когда необходимо, чтобы пользователи запускали обновленную версию приложения в обязательном порядке, проверка До запуска приложения является единственным способом гарантировать, что более старая версия не сможет быть запущена.
По окончанию настройки данных параметров, установим версию публикации.
Свойство ClickOnce Publish Version определяет, будет ли публикуемое приложение рассматриваться как обновление. При каждом увеличении номера версии приложение будет публиковаться как обновление. Никогда не уменьшайте номер версии, поскольку это может вызвать непредсказуемое поведение обновления.
По умолчанию Visual Studio автоматически увеличивает номер Revision версии Publish Version при каждой публикации приложения. Для отключения данной функции необходимо снять галку у Automatically increment revision with each publish. 


 

Если приложение ClickOnce устанавливается на локальную машину в меню Пуск и в список Установка и удаление программ, то по умолчанию отображаемое имя и имя сборки приложения совпадают. Это можно изменить. Для этого открываем окно Publish Options по нажатию кнопки Options….


В области Description можно изменить:

  • язык публикации (по умолчанию устанавливаются язык и региональные параметры компьютера разработки) - Publish language,
  • отображаемое имя в меню Пуск и Установка и удаление программ, после установки приложения (по умолчанию отображаемое имя такое же, что и
    имя сборки приложения) – Product name,
  • веб-страницу или общую папку, куда пользователи могут перейти для получения сведений о приложении (свойство является необязательным; если оно предоставляется, URL-адрес отображается в диалоговом окне Установка и удаление программ для элемента приложения) – Support URL,
  • имя издателя – Publisher name,
  • специальное имя папки в меню Пуск, куда будет установлено приложение – Suite name.
Для доступа к параметрам развертывания нужно перейти в Deployment


В нем можно определить:

  • имя для веб-страницы, где будет развернуто приложение (по умолчанию Publish.htm) - Deployment web page,
  • задать автоматическое создание страницы после завершения каждой публикации - Automatically generate deployment web page after every publish,
  • открывать страницу после публикации - Open deployment web page after publish,
  • использовать расширение файла.deploy - Use ".deploy" file extension,
  • при установки с CD запускать autorun.inf - For CD installations, automatically start Setup when CD is inserted.
  • Проверка файлов, загруженных с веб-сервера (отслеживание процесса загрузки каждого файла, уведомлене о файлах, которые не могут быть загружены) - Verify files uploaded to a web server.

Для того чтобы изменить некоторые параметры манифеста, необходимо перейти в область Manifests


Где можно:

  • Блокировка запуска приложения после установки - Block application from being activated via a URL.
  • Разрешить передачу параметров URL в приложение - Allow URL parameters to be passed to application.(см. подробнее)
  • Использовать манифест приложения в качестве сведений о доверии. Выбор этого параметра позволит повторно подписать манифест приложения (при помощи сертификата) с собственным Именем издателя, Названием продукта и URL-адресом поддержки (то есть, с названием своей компании и именем приложения) (по умолчанию во время развертывания используется сертификат Microsoft) - Use application manifest for trust information.
  • Исключить URL-адрес поставщика развертывания. URL-адрес поставщика развертывания может быть исключен из манифеста для случаев, в которых обновления для приложения должны поступать из расположения, неизвестного во время исходной публикации. После публикации приложения поиск обновлений будет выполняться в расположении, из которого установлено приложение - Exclude deployment provider URL.
  • Создать ярлык на рабочем столе - Create desktop shortcut.
Так же можно настроить параметры сопоставления файлов, для чего нужно перейти в область File Associations
Еще одну вкладку в Конструкторе Проекта, которую не стоит упускать из вида, и это Signing. Позволяет подписывать манифесты приложений и развертывания, а также сборки, используя подпись со строгим именем.


Подпись манифестов приложений и развертывания представляет собой процесс, отличный от подписи сборки.

Данные расположения файла-ключа различаются для подписания манифестов и подписания сборок. При подписании манифестов данные ключа хранятся в зашифрованной базе данных вашего компьютера и в хранилище сертификатов текущего пользователя Windows. При подписании сборок данные ключа хранятся только в зашифрованной базе данных компьютера.
Основные параметры для этой вкладки описаны в статье Страница "Подписывание"в конструкторе проектов

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

  • Либо в главном меню выбрать Build|Publish «название проекта»

  • Либо в конструкторе проекта на вкладке Publish выбрать либо Publish Wizard…(мастер публикации) и Publish Now

 

По окончанию в выбранной папке публикации появятся необходимые и заданные файлы.  




Для более подробного изучения на
MSDN много статей по этой теме.

Комментарии

Популярные сообщения из этого блога

Настройка отправки отчетов по выполнению задач плана обслуживания баз данных на SQL Server

Предыдущую статью я посвятила разработке плана обслуживания баз данных SharePoint 2010. В этой статье я, как и обещала, опишу, как настроить отправку писем с отчетами о выполнении задач из плана на конкретный почтовый ящик.

SharePoint Timer service could not start (SPTimerV4).

При работе SharePoint внезапно возникла ошибка, указывающая на проблему работы SPTimerV 4. После того как я поставила очередное обновление на сервер SharePoint и попыталась запустить после этого psconfig. В ответ на запрос я получила следующее сообщение:

История о том, как мы строили новую Ферму SharePoint по "старым чертежам".

Глава 2.Начало строительства.

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