13 января 2017 г.

Часть 1. Clickonce приложение. Пример создания в Visual Studio.

Краткое описание.

Microsoft предоставили возможность облегчить труд программистов под Desktop, а именно, процесс установки и обновления вашего приложения на компьютерах пользователей через ClickOnce. Способ достаточно простой и на серверной стороне, которая предоставляет доступ к экземпляру приложения, не требуется никаких дополнительных сервисов, кроме тех которые поддерживают доступ к опубликованному контенту. Клиент сам занимается своим обновлением путем скачивания заведомо сформированных файлов приложения и манифеста. Если у пользователя установлен .NET Framework, то в его составе имеется Engine, которая будет осуществлять процесс установки. От разработчика будет требоваться только контроль за версией приложения.

Из чего состоит ClickOnce приложение?

Для начала, что бы не было путаницы, советую уяснить в голове две вещи:
  • "Клиентское приложение" - приложение разработанное вами, и именно его планируется устанавливать вашим клиентам.
  • "ClickOnce приложение" - подготовленное для развертывания "клиентское приложение" и дающее возможность себя устанавливать и обновлять.
Какие минимальные требования к клиентскому приложению?
  • У вашего решения, которое планируется разворачивать, должен быть хотя бы один исполняемый модуль (*.exe file). Он будет являться "Точкой входа" для вашего запускаемого приложения
  • Так же сам исполняемый модуль должен быть написан для .NET, иначе у вас не получится создать ClickOnce приложение. НО! При это можно создать .NET Launcher, который после установки запускать ваше Native приложение.

Как создается ClickOnce приложение штатными средствами в Visual Studio? 

  • Для демонстрации Клиентское приложение, которые будем конвертировать в ClickOnce Приложение состоять из 2 файлов:

    Исполняемого модуля (WpfApplication4.exe) и (WpfApplication4.exe.config) файла конфигурации. При запуске отображается версия исполняемого файла и путь запуска:

  • Используя Visual Studio достаточно выбрать ваш исполняемый модуль, зайти в свойства проекта и найти закладку "Publish"


Publish folder = "E:\ClieckOnceRoot\" это путь локальной директории, её я добавил как виртуальный каталог на IIS в корень "Default Web Site". По умолчанию "Default Web Site" сайт слушает 80-й порт и значит папка будет доступна по адресу "http://localhost/publishroot/". Publish Version - это уже непосредственно номер версии ClickOnce приложения. Если не указывать абсолютный путь для Publish folder, тогда папка будет размещена по адресу %YOURPROJECTPATH%\Путь.
Внимание! Если у вас идет какой-то свой инкремент для файлов сборок, то он не обязательно должен совпадать с версией публикации.



После нажатие на кнопку "Publish Now" произойдет публикация файлов в указанную директорию. В итоге в папке E:\ClickOnceRoot окажутся:
  • WpfApplication4.application - Файл приложения в котором хранятся все предустановленные настройки, зависимости и ключи. И является лаунчером вашего приложения. После запуска этого файла из браузера или из локальной директории появится окно ниже с возможностью начать установку приложения:

  • publish.htm - стандартная страница с кнопкой установки. Перейдя по ссылке http://localhost/publishroot/publish.htm она будет иметь вид (рисунок ниже), по нажатию на кнопку Install начнется установка с вэб страницы.
  • Setup.exe - файл так же является лаунчером приложения, как уже было сказано выше, но основная задача это загрузка необходимого для запуска приложения Заранее заданных пакетов.
Почему я пометил как заранее? Очень часто наличие NET Framework является требованием к рабочей станции для администратора системы. Но при установки вашего приложения администратор системы не всегда может помнить, что для вашего приложения требуются ещё какие то обновления. В итоге непонятные ошибки при установке. Согласитесь, было бы круто, если бы клиент в полуавтоматическом режиме устанавливал все, что ему нужно для запуска? В ClickOnce можно сделать это задав параметры в окне при нажатии на [Prerequisites]:
Мастер изначально выбрал "Microsoft .NET Framework 4 (x86 and x64)" так как мой исполняемый модуль приложения WpfApplication4 имеет такой Target Framework. Так же у меня был выбран "Windows Installer" - он по умолчанию выбирается всегда, так как требуется для установки любого пакета MSI. Снизу можно выбрать места установки, если у клиентов будет доступ в интернет, то можно выбрать установка с сайта производителя, если это заказное ПО для какой-то организации, у которых чаще всего есть ограничения на доступ во внешнюю сеть, тогда можно воспользоваться установкой из указанного места. Ссылка на установку How to: Install Prerequisites with a ClickOnce Application
Снимок ниже это пример запуска Setup.exe на клиенте у котором нет .NET Framework 4:

Если изначально на компьютере стоит не подходящий для работы .NET Framework. Тогда запуск WpfApplication4.application пройдет с ошибкой:

  • Application Files\ В этой папке будут появляться и оставаться все версии вашего приложения после каждой публикации. Сразу скажу, что данный подход свойственен сборке через [Publish now] в Visual Studio.
  • Application Files\WpfApplication4_1_0_0_10\ (Пример одной из папок) 
В любой из данных папок располагаются файлы клиентского приложения с добавленным расширением .deploy (в Options можно убрать добавление его). Deploy файлы - это обычные файлы клиента без каких либо изменений, с добавленным расширением .deploy.

Возникает вопрос: "Зачем использовать добавление .deploy  к файлам, если ClickOnce приложение без проблем устанавливается и без этого расширения?" - если отсутствие данного расширения не влияет на развёртывание вашего приложения, то можно без него обойтись. Но если вы разворачиваете приложение через Web и в качестве хостинг службы используете IIS, тогда у вас могу возникнуть проблемы с клиентом при скачивании .config файлов и возможно каких то других, потому что политика безопасности IIS не позволяет без дополнительных разрешений скачивать все подряд. А добавив .deploy вы избавляете себя от проблем с особенностями Web сервисов.
  • Application Files\WpfApplication4_1_0_0_10\WpfApplication4.application  - аналогичный по содержанию файл корневого каталога
  • Application Files\WpfApplication4_1_0_0_10\WpfApplication4.exe.manifest - самый важный файл в папке, содержащий всю информацию о развёртываемых файлах. Такую как контрольная сумму каждого файла, их размеры версия и тип.
Внимание! Стоит помнить, что ваше приложение может устанавливаться и с сетевом ресурсе \\computer\.




Комментариев нет:

Отправить комментарий