Пример публикации ClickOnce

164

Прежде чем приступить к публикации ClickOnce, понадобится некоторая базовая информация о проекте. Дважды щелкните на узле Properties (Свойства) в окне Solution Explorer и перейдите на вкладку Publish (Публикация). Вы увидите настройки, показанные на рисунке:

Настройки ClickOnce проекта

Смысл всех настроек будет объяснен далее, а сначала следует указать некоторые базовые детали публикации.

Настройка издателя и продукта

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

Чтобы указать эту информацию, щелкните на кнопке Options (Параметры). Откроется диалоговое окно Publish Options (Параметры публикации) с набором дополнительных настроек, разнесенных по нескольким группам. Как показано на рисунке ниже, в списке слева выбран элемент Description (Описание), а справа находятся текстовые поля, которые позволяют указать ключевые детали: Publisher Name (Имя издателя), Suite Name (Имя комплекта) и Product Name (Имя продукта):

Указание некоторой базовой информации о проекте

Эти детали важны, потому что они используются для создания иерархии меню Пуск. Если задается необязательное имя комплекта, ClickOnce создаст ярлык приложения в форме [Имя издателя] --> [Имя комплекта] --> [Имя продукта]. Если имя комплекта не указано, ClickOnce создаст ярлык [Имя издателя] --> [Имя продукта]. Ниже показано как будет выглядеть ярлык программы в меню Пуск:

Ярлыки ClickOnce

Если указан URL-адрес поддержки, ClickOnce создаст дополнительный ярлык [Имя продукта] online support. Когда пользователь щелкнет на нем, запустится браузер и загрузит указанную страницу.

URL-адрес ошибки — это ссылка на веб-сайт, который будет показан (в диалоговом окне), если при попытке установки приложения возникнет ошибка.

Запуск мастера публикации

Простейший способ сконфигурировать настройки ClickOnce состоит в том, чтобы щелкнуть на кнопке Publish Wizard (Мастер публикации) внизу окна свойств, показанного на первом рисунке. В результате запустится мастер, который проведет через несколько простых шагов, чтобы собрать важную информацию. Этот мастер не предоставляет доступ ко всем средствам ClickOnce, однако это самый быстрый способ начать.

Первым выбором в мастере публикации будет выбор местоположения для публикации приложения:

Выбор местоположения публикации

В выборе местоположения первой публикации приложения нет ничего особо важного, поскольку это не обязательно то же самое место, где позже будут размещаться установочные файлы. Другими словами, можно опубликовать в локальном каталоге и затем передать файлы на веб-сервер. Единственный нюанс — перед запуском мастера публикации необходимо знать конечное место расположения файлов, поскольку эту информацию придется указывать. Без нее не будет работать функция автоматического обновления.

Разумеется, можно публиковать приложение непосредственно в конечное расположение, но это не обязательно. Фактически, локальное построение установки часто представляет собой простейший путь. Чтобы понять, как это работает, начните с выбора локального пути (например, C:\Temp\ClickOnceApp). Затем щелкните на кнопке Next (Далее). После этого возникает реальный вопрос — как пользователи будут устанавливать это приложение?

Выбор типа установки

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

Есть один случай, когда диалоговое окно, показанное на рисунке выше, не отображается. Если в качестве местоположения публикации вводится виртуальный каталог на веб-сервере (другими словами, URL-адрес, начинающийся с http://), то мастер предположит, что это окончательное местоположение установки.

На рисунке выше показаны три доступных выбора. Можно создать установку на сетевом файловом ресурсе, на веб-сервере или же на CD- либо DVD-диске. Ниже рассматриваются все варианты.

Публикация на сетевом файловом ресурсе

В этом случае все пользователи сети получат доступ к установке, перейдя по определенному пути UNC и запустив находящийся там файл по имени setup.exe.

Пусть UNC — это сетевой путь в форме \\ИмяКомпьютера\ИмяОбщегоРесурса. Сетевой диск использовать нельзя, поскольку он зависит от настроек системы (так что разные пользователи могут иметь разные настройки сетевых дисков). Чтобы обеспечить автоматические обновления, инфраструктура ClickOnce должна знать точно, где она сможет найти установочные файлы, и это то же самое место, где будут развернуты обновления.

Публикация для веб-сервера

Установку для веб-сервера можно создать в локальной корпоративной сети или в Интернете. Visual Studio сгенерирует HTML-файл по имени publish.htm, который упростит процесс. Пользователь запросит эту страницу в своем браузере и щелкнет на ссылке для загрузки и установки приложения.

Существует несколько способов передачи файлов на веб-сервер. Чтобы воспользоваться двухшаговым подходом (опубликовать файлы локально, а затем передать их в нужное место), просто следует скопировать файлы из локального каталога на веб-сервер, используя соответствующий механизм (вроде FTP). Удостоверьтесь, что при этом сохраняется структура каталогов.

Для опубликования файлов непосредственно на веб-сервере, минуя предварительное тестирование, есть два выбора. Если применяется IIS, и текущая учетная запись пользователя обладает достаточными привилегиями для создания нового виртуального каталога на веб-сервере (или загрузки файлов в существующий виртуальный каталог), можно опубликовать файлы непосредственно на веб-сервер. Просто укажите путь к виртуальному каталогу на первом шаге мастера. Например, в качестве местоположения публикации можно использовать http://ИмяКомпьютера/ИмяВиртуальногоКаталога (в случае корпоративной сети) или http://ДоменноеИмя/ИмяВиртуальногоКаталога (для сервера, находящегося в Интернете).

Также можно публиковать непосредственно на веб-сервер через FTP. В Интернете это часто бывает обязательным требованием (в отличие от корпоративной сети). В этом случае Visual Studio установит соединение с веб-сервером и передаст туда файлы ClickOnce no FTP. При этом для установки соединения будет запрошено имя пользователя и пароль.

Публикация для CD- и DVD-диска

В случае выбора публикации на установочный носитель вроде CD- или DVD-диска все равно понадобится решить, планируются ли автоматические обновления. Некоторые организации используют исключительно развертывание с помощью CD-дисков, в то время как другие применяют его в дополнение к веб-развертыванию или развертыванию через сетевые ресурсы. На третьем шаге мастера выбираются опции для этого конкретного случая:

Поддержка автоматических обновлений

Здесь доступны следующие варианты:

Интерактивный и автономный режимы

В случае создания развертывания для веб-сервера или сетевого ресурса должна быть установлена дополнительная опция:

Поддержка использования в автономном режиме

Выбор по умолчанию заключается в создании приложения, доступного в интерактивном и автономном режиме, которое запускается независимо от того, может пользователь подключиться к месту публикации или нет. В этом случае ярлык для запуска приложения добавляется в меню Пуск.

Если выбрано создание приложения, доступного только в интерактивном режиме, то пользователю для запуска приложения будет требоваться каждый раз обращаться к месту публикации. (На веб-странице publish.htm будет отображаться кнопка Run (Запуск) вместо Install (Установка).) Это исключит вероятность запуска старых версий приложения после применения обновлений. Данная часть модели развертывания аналогична веб-приложениям.

Когда создается приложение, доступное только в интерактивном режиме, оно по-прежнему будет загружаться (в локально кэшируемое местоположение) при первом запуске.

Таким образом, хотя первоначальное время запуска может быть больше (из-за первоначальной загрузки), приложение будет работать так же быстро, как любое обычное установленное Windows-приложение. Однако приложение не может быть запущено, если пользователь не подключен к сети или Интернету, что делает его неподходящим для мобильных пользователей (например, пользователей ноутбуков, которым не всегда доступно подключение к Интернету).

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

Если компьютер находится в интерактивном режиме, то приложение проверит наличие новых версий в месте, где опубликовано приложение. При наличии обновлений приложение предложит пользователю установить их. Позже будет показано, как сконфигурировать эту политику. При публикации для CD-диска отсутствует выбор для создания приложения, доступного только в интерактивном режиме.

Это — последний выбор в мастере публикации. Щелкните на кнопке Next, чтобы просмотреть итоговую информацию и затем на кнопке Finish (Готово) для генерации файлов развертывания и копирования их в место, указанное на первом шаге. В этот момент можно быстро переопубликовать приложение, щелкнув на кнопке Publish Now (Опубликовать сейчас) либо выбрав в меню пункт Build --> Publish [Имя приложения] (Сборка --> Опубликовать [Имя приложения]).

Развернутая файловая структура

Технология ClickOnce использует довольно простую структуру каталогов. Она создает файл setup.exe в указанном месте и подкаталог для приложения. Например, при развертывании приложения по имени ClickOnceText в каталоге с:\ClickOnceTest появляются следующие файлы:

с:\ClickOnceTest\setup.exe 
с:\ClickOnceTest\publish.htm 
с:\ClickOnceTest\ClickOnceTest.application 
с:\ClickOnceTest\ClickOnceTest_1_0_0_0.application 
с:\ClickOnceTest\ClickOnceTest_1_0_0_0\ClickOnceTest.exe.deploy 
с:\ClickOnceTest\ClickOnceTest_1_0_0_0\ClickOnceTest.exe.manifest

Файл publish.htm присутствует только в случае публикации на веб-сервере. Файлы .manifest и .application хранят информацию о необходимых файлах, настройках обновлений и прочие детали. (С подробной информацией об этих файлах и их XML-файлом можно ознакомиться в справочной системе MSDN.) Файлы .manifest и .application снабжаются электронной подписью во время публикации, поэтому не могут модифицироваться вручную. В случае внесения изменений ClickOnce заметит разницу и откажется устанавливать приложение.

По мере публикации новых версий приложения ClickOnce будет добавлять новые подкаталоги для каждой новой версии. Например, изменение опубликованной версии приложения на 1.0.0.1 приводит к появлению нового каталога:

с:\ClickOnceTest\ClickOnceTest_1_0_0_1\ClickOnceTest.exe.deploy 
с:\ClickOnceTest\ClickOnceTest_1_0_0_1\ClickOnceTest.exe.manifest

После запуска программа setup.exe отработает процесс установки всего обязательного программного обеспечения (такого как .NET Framework) и затем установит наиболее свежую версию приложения.

Лучший чат для C# программистов