Дополнительные параметры ClickOnce

55

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

Многие из этих настроек дублируют детали, которые вы уже видели в мастере. Например, первые два текстовых поля позволяют выбрать местоположение публикации (место, куда будут помещены файлы ClickOnce) и местоположение установки (место, из которого пользователь запустит установку). Настройка Install Mode (Режим установки) позволяет выбрать, должно приложение устанавливаться на локальном компьютере или запускаться только в интерактивном режиме. Однако есть некоторые установки, которые в мастере не доступны.

Версия публикации

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

Ключевое отличие в том, что версия публикации является критерием, служащим для определения доступности нового обновления. Если пользователь запускает версию 1.5.0.0 приложения, а при этом доступна версия 1.5.0.1, то инфраструктура ClickOnce отобразит диалоговое окно обновления.

По умолчанию флажок Automatically Increment Revision with Each Publish (Автоматически увеличивать номер редакции с каждой публикацией) отмечен, и в этом случае финальная часть версии публикации (номер редакции) увеличивается на 1 после каждой публикации, так что 1.0.0.0 превращается в 1.0.0.1, затем в 1.0.0.2 и т.д.

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

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

Обновления

Щелкните на кнопке Updates (Обновления), чтобы отобразить диалоговое окно Application Updates (Обновления приложения). В этом окне можно выбрать стратегию обновлений:

Установка параметров обновления

Сначала необходимо указать, должно ли приложение проверять наличие обновлений, отметив флажок The application should check for updates (Приложение должно проверять наличие обновлений). Затем следует выбрать, когда должно происходить обновление. Для этого доступны два переключателя:

Before the application starts

Если использовать эту модель, то инфраструктура ClickOnce проверяет наличие обновлений приложения (на веб-сайте или сетевом ресурсе) при каждом запуске приложения пользователем. Если обновление обнаружено, оно устанавливается и затем запускается приложение. Эта опция — хороший выбор, если нужно гарантировать получение пользователем обновлений немедленно после их появления.

After the application starts

Если выбрать эту модель, то инфраструктура ClickOnce проверяет новые обновления после запуска приложения. Если обнаруживается обновленная версия, она устанавливается при следующем запуске приложения пользователем. Это — рекомендованная опция для большинства приложений, поскольку сокращает время загрузки.

Если отдается предпочтение проверке после запуска приложения, то такая проверка осуществляется в фоновом режиме. Можно выбрать выполнение проверки при каждом выполнении приложения (по умолчанию так и есть) или проверять реже, через какой-то интервал времени, например, один раз в несколько часов, дней или недель.

Можно также указать необходимую минимальную версию. Это можно использовать для того, чтобы сделать обновления обязательными. Например, если установить версию публикации 1.5.0.1 и минимальную версию 1.5.0.0, а затем опубликовать приложение, то любой пользователь, располагающий версией старше 1.5.0.0, будет вынужден выполнить обновление, прежде чем сможет запустить приложение (по умолчанию минимальная версия не устанавливается и все обновления необязательны).

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

Ассоциации файлов

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

Чтобы создать ассоциацию файла, щелкните на кнопке Options (Параметры) внутри вкладки Publish (Публикация). Откроется диалоговое окно Publish Options (Параметры публикации). В списке слева выберите элемент File Associations (Ассоциации файлов). Появится таблица, в которой можно ввести информацию об ассоциации файла:

Создание ассоциации файла

Каждая такая ассоциация требует четырех порций информации: расширение файла, текстовое описание, идентификатор программы (ProgID) и значок. ProgID — это текстовый код, уникально идентифицирующий тип файла. По соглашению он должен базироваться на имени и версии приложения, хотя на самом деле формат не имеет значения, если он уникален. Значок указывает на файл в проекте. Для того чтобы этот файл был включен в установку ClickOnce, его понадобится выбрать в окне Solution Explorer и установить Build Action (Действие сборки) в Content (Содержимое).

Для ассоциации файла не нужно указывать только одну деталь — имя или путь программы. Дело в том, что ClickOnce уже располагает этой информацией.

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

string commandLineFile = 
    AppDomain.CurrentDomain.SetupInformation.ActivationArguments.ActivationData[0]; 

Другой нюанс заключается в том, что местоположение файла передается в формате URI, как в file:///c:\MyApp\MyFile.testDoc. Это значит, что для получения действительного пути к файлу и очистке от защищенных пробелов (которые в URI транслируются в символ %20) понадобится следующий код:

Uri fileUri = new Uri(commandLineFile); 
string filePath = Uri.UnescapeDataString(flleUri.AbsolutePath);

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

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

Как уже упоминалось, щелчок на кнопке Options приводит к открытию диалогового окна Publish Options с дополнительными параметрами. Список слева позволяет выбрать необходимую группу настроек. Ранее были описаны настройки из группы Description и File Associations. В таблицах ниже перечислены параметры из групп Deployment (Развертывание) и Manifests (Манифесты):

Параметры из группы Deployment
Параметр Описание
Deployment web page
(Веб-страница развертывания)
Устанавливает имя страницы установки при веб-развертывании (по умолчанию — publish.htm).
Automatically generate deployment web page after every publish
(Автоматически генерировать веб-страницу развертывания после каждой публикации)
Если установлен (по умолчанию), веб-страница пересоздается при каждой публикации.
Open deployment web page after publish
(Открывать веб-страницу развертывания после публикации)
Если установлен (по умолчанию), Visual Studio запускает страницу установки в браузере после успешной публикации, чтобы можно было ее протестировать.
Use ".deploy" file extension
(Использовать файловое расширение .deploy)
Если установлен (по умолчанию), веб-страница установки всегда имеет расширение файла .deploy. Изменять этот параметр не следует, т.к. это расширение файла зарегистрировано на веб-сервере IIS и заблокировано, чтобы предотвратить подделку злоумышленниками.
For CD installations, automatically start Setup when CD is inserted
(Для установок из CD-дисков автоматически запускать установку при вставке CD-диска)
Если установлен, Visual Studio генерирует файл autorun.inf, чтобы обеспечить автоматический запуск программы установки немедленно после вставки CD-диска в привод.
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 приложению)
Установка этой опции позволяет приложению получать информацию URL от браузера, который запустил его, такую как аргументы строки запроса. Извлечь URI можно через класс ApplicationDeployment из пространства имен System.Deployment.Application. Для этого необходимо воспользоваться свойством ApplicationDeployment.CurrentDeployment.ActivationUri.
Use application manifest for trust information
(Использовать манифест приложения для подтверждения информации)
Если установлен, можно заново подписать манифест приложения после публикации. Обычно это делается для использования сертификата с именем компании. Данная информация появится в сообщении о доверии, которое пользователь видит при установке приложения.
Exclude deployment provider URL
(Исключить URL поставщика развертывания)
Если установлен, приложение будет автоматически проверять свое местоположение установки на предмет обновлений. Этот параметр можно использовать, если точное местоположение развертывания не известно, но, тем не менее, требуется автоматическое обновление ClickOnce.
Create desktop shortcut
(Создать ярлык на рабочем столе)
Если установлен, в дополнение к значку в меню Пуск процесс установки создаст значок на рабочем столе.
Пройди тесты
Лучший чат для C# программистов