Пётр Алексеев Доцент кафедры «Радиоэлектронных систем управления» (И4) БГТУ «Военмех» Microsoft TechDays http://www.techdays.ru Что такое ClickOnce? ClickOnce с помощью Visual Studio Взаимодействие ClickOnce с кодом Как устроен ClickOnce Зачем обходиться без Visual Studio? MSBuild, Mage и MageUI Microsoft TechDays http://www.techdays.ru ClickOnce – это технология развёртывания оконных и консольных приложений с возможностью автоматического обновления Обновление приложения целиком или только его отдельных частей Установка производится в специальную папку «кэш ClickOnce» Изменяемые данные приложения сохраняются в папку данных ClickOnce Для установки не требуются права администратора Приложения могут распространяться через Web, локальную сеть или на дисках Приложения XBAP (XAML Browser Application) основаны на ClickOnce Microsoft TechDays http://www.techdays.ru Microsoft TechDays http://www.techdays.ru Сборка System.Deployment Область имён System.Deployment.Application Ключевой класс ApplicationDeployment Возможности Узнать, развёрнуто ли данное приложение с помощью ClickOnce IsNetworkDeployed Узнать, первый ли запуск приложения IsFirstRun Узнать параметры запуска приложения ActivationUri Узнать номер версии развёрнутого приложения CurrentVersion Проверить наличие обновлений CheckForUpdate, CheckForUpdateAsync, CheckForDetailedUpdate Установить обновление Update, UpdateAsync Узнать, когда была последняя проверка обновления TimeOfLastUpdateCheck Загрузка необязательных файлов и сборок по требованию DownloadFileGroup, DownloadFileGroupAsync Особенности отладки http://msdn.microsoft.com/ruru/library/ms228671.aspx Microsoft TechDays http://www.techdays.ru Microsoft TechDays http://www.techdays.ru Манифест приложения Приложение Сборки Зависимости Дополнительные файлы Необходимые разрешения безопасности Расположение обновлений Манифест развёртывания Развёртывание приложения Расположение манифеста приложения Версия приложения для запуска клиентами Файлы и сборки приложения Microsoft TechDays http://www.techdays.ru Папка Application Files Имя_Приложения_1_0_0_0 Имя_Приложения.application Имя_Приложения.exe.manifest Файлы и папки приложения Имя_Приложения_1_0_0_1 Имя_Приложения_1_0_0_2 Имя_Приложения.application setup.exe Microsoft TechDays http://www.techdays.ru Зачем это надо? Если не хватает возможностей, предоставляемых Visual Studio Если необходимо выполнять развёртывание по расписанию или автоматически после интеграции Как это сделать? MSBuild Mage Microsoft TechDays http://www.techdays.ru Эквивалент команды Publish msbuild /target:publish Не копирует файлы в место назначения Номер ревизии не инкрементируется Управление msbuild /target:publish /property:BootstrapperEnabled=false – не генерировать загрузчик setup.exe Другие команды TargetZone=LocalIntranet (Internet, Custom) PublisherName=SomeCompany ProductName=SomeProduct PublishUrl=http://localhost/SomeProduct ApplicationVersion=1.0.0.* (1.0.0.5) ApplicationRevision=5 Install=true UpdateEnabled=true UpdateMode=Foreground (Background) UpdateInterval=3 UpdateIntervalUnits=Days (Weeks, Hours) UpdateUrlEnabled=false IsWebBootstrapper=true Microsoft TechDays http://www.techdays.ru Microsoft TechDays http://www.techdays.ru Сборка приложения Удаление папки app.publish (папка публикации) Создание папок app.publish app.publish\Application Files app.publish\Application Files\Имя_Приложения_Номер_Версии Копирование файлов Файлы и папки приложения в app.publish\Application Files\Имя_Приложения_Номер_Версии Работа с манифестами Создание и заполнение манифеста приложения в соответствии с содержимым папки app.publish\Application Files\Имя_Приложения_Номер_Версии Подписание манифеста приложения Создание манифеста развёртывания Привязка манифеста развёртывания к манифесту приложения Подписание манифеста развёртывания Копирование содержимого папки app.publish в место расположения дистрибутива Microsoft TechDays http://www.techdays.ru Mage и MageUI входят в состав SDK .NET Framework SDK for Windows Vista Visual Studio 2008 Назначение Создание и редактирование манифестов приложения и развёртывания Создание сертификатов makecert.exe -sv MyKey.pvk -n "CN=Test" MyKey.cer pvk2pfx.exe -pvk MyKey.pvk -spc MyKey.cer -pfx MyPfx.pfx -po 123 Создание и подписание манифестов – делаем посредством графического интерфейса пользователя MageUI Создание папок и работа с файлами – делаем вручную Microsoft TechDays http://www.techdays.ru Microsoft TechDays http://www.techdays.ru Используем ранее созданный сертификат Создание манифеста приложения Mage -New Application -FromDirectory "app.publish\Application Files\SampleApp_1_0_0_10" -Version 1.0.0.10 -ToFile "app.publish\Application Files\SampleApp_1_0_0_10\SampleApp.exe.manifest" Подписание манифеста приложения Mage -Sign "app.publish\Application Files\SampleApp_1_0_0_10\SampleApp.exe.manifest" -CertFile MyPfx.pfx -pwd 123 Создание манифеста развёртывания Mage -New Deployment -AppManifest "app.publish\Application Files\SampleApp_1_0_0_10\SampleApp.exe.manifest" -ToFile "app.publish\SampleApp.application" Настройка манифеста развёртывания Mage -Update "app.publish\SampleApp.application" -Version 1.0.0.10 MinVersion 1.0.0.10 -ProviderUrl "C:\Test" -Publisher "Sample publisher" Подписание манифеста развёртывания Mage -Sign "app.publish\SampleApp.application" -CertFile MyPfx.pfx pwd 123 Microsoft TechDays http://www.techdays.ru Microsoft TechDays http://www.techdays.ru Развёртывание с помощью Visual Studio удобно, но имеет и ограничения Использование MSBuild позволяет автоматизировать развёртывание Применение MageUI и Mage позволяет делать тонкую настройку развёртывания Развёртывание приложений, не ориентированных на ClickOnce Добавление в дистрибутив любых файлов Создание новых манифестов не обязательно – можно один раз создать их с помощью Visual Studio, а потом модифицировать Microsoft TechDays http://www.techdays.ru http://msdn.microsoft.com/ruru/library/t71a733d.aspx http://msdn.microsoft.com/ruru/vbasic/ms789088.aspx http://msdn.microsoft.com/ruru/library/system.deployment.application.aspx http://blogs.msdn.com/maximelamure/archive/2007/ 01/24/create-your-own-pfx-file-for-clickonce.aspx http://netobf.com/obf_click_once_about http://www.softwarepunk.com/ffclickonce http://www.rsdn.ru/article/dotnet/WinForms20.xml#E Y1BG http://blogs.msdn.com/saurabh/archive/2005/10/28/4 86106.aspx Microsoft TechDays http://www.techdays.ru © 2007 Microsoft Corporation. All rights reserved. Microsoft, Windows, Windows Vista and other product names are or may be registered trademarks and/or trademarks in the U.S. and/or other countries. The information herein is for informational purposes only and represents the current view of Microsoft Corporation as of the date of this presentation. Because Microsoft must respond to changing market conditions, it should not be interpreted to be a commitment on the part of Microsoft, and Microsoft cannot guarantee the accuracy of any information provided after the date of this presentation. MICROSOFT MAKES NO WARRANTIES, EXPRESS, IMPLIED OR STATUTORY, AS TO THE INFORMATION IN THIS PRESENTATION. Microsoft TechDays http://www.techdays.ru