Регистрация Главная Сообщество
Сообщения за день Справка Регистрация
Навигация
Zhyk.org LIVE! Реклама на Zhyk.org Правила Форума Награды и достижения Доска "почета"

Ответ
 
Опции темы
Старый 08.08.2010, 17:13   #1
-= Элитный Мастер =-
 Главнокомандующий
Аватар для Kitsune
 
Kitsune сломал счётчик популярности :(Kitsune сломал счётчик популярности :(Kitsune сломал счётчик популярности :(Kitsune сломал счётчик популярности :(Kitsune сломал счётчик популярности :(Kitsune сломал счётчик популярности :(Kitsune сломал счётчик популярности :(Kitsune сломал счётчик популярности :(Kitsune сломал счётчик популярности :(Kitsune сломал счётчик популярности :(Kitsune сломал счётчик популярности :(
Регистрация: 20.01.2010
Сообщений: 1,539
Популярность: 22780
Золото Zhyk.Ru: 600
Сказал(а) спасибо: 43
Поблагодарили 1,717 раз(а) в 538 сообщениях
 
По умолчанию Автообновление. ClickOnce .NET Version

> Автообновление средствами ClickOnce <

В данном гайде речь пойдет о том, как создать само обновляющийся продукт средствами Visual Studio.

Теория:
  • ClickOnce — технология Майкрософт для развертывания Windows Form или Windows Presentation Foundation приложений. Она подобна технологии Java Web Start для Java Platform. Данная технология доступна с версии .NET 2.0 и выше.

Конечный материал данной статьи (скрин):
  • [Ссылки могут видеть только зарегистрированные пользователи. ]

  • [Ссылки могут видеть только зарегистрированные пользователи. ]

  • [Ссылки могут видеть только зарегистрированные пользователи. ]

  • [Ссылки могут видеть только зарегистрированные пользователи. ]

Создание приложения:
  • Сейчас мы разберем как из кода можно взаимодействовать с ClickOnce сборками.
  • Для реализации проекта мне потребовалось 2 формы:
    • frmMain.cs
      главная форма нашего приложения
    • frmUpdater.cs
      Форма обновления проекта

  • Все классы, которые нам понадобятся находятся в пространстве имен System.Deployment.Application. Соответственно нам надо будет его подключить в коде.
    Код:
    using System.Deployment.Application;
  • Код frmMain.cs (главной формы приложения):
    Код:
    using System;
    using System.Collections.Generic;
    using System.ComponentModel;
    using System.Data;
    using System.Drawing;
    using System.Text;
    using System.Windows.Forms;
    
    using System.Deployment.Application;
    
    namespace SelfUpdatableApp
    {
        public partial class frmMain : Form
        {
            // Объект класса, через который мы получим
            // всю необходимую информацию
            private ApplicationDeployment updater;
    
            public frmMain()
            {
                InitializeComponent();
    
                // Назначим обработчик события загрузки формы
                this.Load += new EventHandler(Form1_Load);
            }
    
            // Собственно сам обработчик
            private void Form1_Load(object sender, EventArgs e)
            {
                // Осуществляем проверку. Если приложение установлено через ClickOnce
                if (ApplicationDeployment.IsNetworkDeployed)
                {
                    // То мы инициализируем объект объявленный выше, указывая ссылку на текущиую развертку
                    updater = ApplicationDeployment.CurrentDeployment;
                    // Пишем в лейбле текущую версию развертки.
                    this.lVersion.Text = "Версия: " + ApplicationDeployment.CurrentDeployment.CurrentVersion;
                }
                // в противном случаи
                else
                {
                    this.lVersion.Text = "Версия не была установлена через ClickOnce.";
                    // выключаем кнопку обновления
                    this.bCheck.Enabled = false;
                }
            }
    
            // Обработчик события нажатия на кнопку "Проверить обновления"
            private void bCheck_Click(object sender, EventArgs e)
            {
                // Если сборка установлена через ClickOnce, то объект будет не null
                // соответственно мы перейдом дальше по коду
                if (updater != null)
                {
                    // Метод CheckForUpdate вернет True, если есть доступные обновления
                    if (updater.CheckForUpdate())
                    {
                        // Если таковые есть, то мы показываем форму автообновления
                        new frmUpdater().ShowDialog();
                    }
                    else
                    {
                        // Если обновлений нет, сообщаем об этом
                        MessageBox.Show("У вас самая последняя версия.");
                    }
                }
            }
        }
    }
  • Код frmUpdater.cs (формы автообновления):
    Код:
    using System;
    using System.Collections.Generic;
    using System.ComponentModel;
    using System.Data;
    using System.Drawing;
    using System.Text;
    using System.Windows.Forms;
    
    using System.Deployment.Application;
    
    namespace SelfUpdatableApp
    {
        public partial class frmUpdater : Form
        {
            // Все тот же объект
            private ApplicationDeployment updater;
    
            public frmUpdater()
            {
                InitializeComponent();
    
                // По скольку формы мы показываем только в том случаи если развертка через ClickOnce установлена
                // то здесь мы можем не делать проверки дополнительные
                updater = ApplicationDeployment.CurrentDeployment;
                // Указываем обработчики событий: изменения прогресса и завершения обновления
                updater.UpdateProgressChanged += new DeploymentProgressChangedEventHandler(updater_UpdateProgressChanged);
                updater.UpdateCompleted += new AsyncCompletedEventHandler(updater_UpdateCompleted);
            }
    
            // Обработчик события изменения прогресса
            private void updater_UpdateProgressChanged(object sender, DeploymentProgressChangedEventArgs e)
            {
                this.pBar.Value = e.ProgressPercentage;
            }
    
            // Обработчик события заверешния обновления
            private void updater_UpdateCompleted(object sender, AsyncCompletedEventArgs e)
            {
                MessageBox.Show("Обновление закончено. Нажмите ОК для перезапуска приложения.");
                // После нажатия на ОК, приложение перезапуститься
                Application.Restart();
            }
    
            private void bUpdater_Click(object sender, EventArgs e)
            {
                // Начать обновление асинхронно
                updater.UpdateAsync();
            }
    
            private void bCancel_Click(object sender, EventArgs e)
            {
                // Отмена обновления
                this.DialogResult = DialogResult.Cancel;
            }
        }
    }

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

      [Ссылки могут видеть только зарегистрированные пользователи. ]

      Правой кнопкой мыши щелкнуть по названию проекта и выбрать Properties.

      [Ссылки могут видеть только зарегистрированные пользователи. ]

    2. Через верхнее меню:

      [Ссылки могут видеть только зарегистрированные пользователи. ]

  • Попав в настройки, нас интересует только одна вкладка:


    [Ссылки могут видеть только зарегистрированные пользователи. ]

    Примечание:
    • Путь, куда будет сохранен установщик после публикации вы можете выбрать свой, например C:\Deploy.
    • Версию продукта вы тоже можете выбрать самостоятельно.
    • Галочка под версией означает, что после каждой публикации самое последнее число в версии будет увеличиваться на 1.

  • Кнопки в правой части:
    • Application Files
      Здесь мы можем выбрать какие файлы из проекта мы включаем в развертку, а какие нет.
    • Prerequesites
      Здесь мы можем указать компоненты, которые необходимы для полноценной работы нашего приложения. Допустим .NET Framework 3.5SP1, а так же настроить откуда будут взяты эти компоненты.
    • Updates
      Здесь мы настраиваем как у нас будет происходить обновления:

      [Ссылки могут видеть только зарегистрированные пользователи. ]

    • Options

      [Ссылки могут видеть только зарегистрированные пользователи. ]

  • Нам нужен на Publish Wizzard
    Перед нам появится мастер публикации.
    1. На первой страницу мы выбираем, куда будет сохранена развертка. Допустим C:\Deploy.
    2. На второй страницу мы выбираем как пользователь будет устанавливать наше приложение. Выбираем: From CD-ROM.
    3. На третей странице мы выбираем как пользователь будет получать обновления. Мы выбираем 2ую точку, а именно то, что пользователь автоматически не будет ничего получать.
    4. На четвертой странице мы видим все настройки, которые мы приминим к публикации и нажимаем на кнопку Finish.
    5. После нажатия, начнется процесс построения развертки. Как только он закончится перед нами появится папка, куда мы выбрали сохранять развертку. (C:\Deploy).

  • У нас есть развертка, теперь нам необходимо залить все файлы, что лежат в папке Deploy к нам на сервер, именно туда, куда мы указали(в настройках обновления, источник, который будет проверяться) В моем случаи это был "http://localhost/click/"

  • После этого действия, мы тестируем все и радуемся.

Во вложении находится готовый проект на Visual Studio 2010.
Вложения
Тип файла: rar SelfUpdatableApp.rar (222.6 Кб, 162 просмотров)
________________
Fireball - Быстрое снятие и загрузка скриншотов на хостинг.
  Ответить с цитированием
3 пользователя(ей) сказали cпасибо:
-Rikk- (19.08.2010), warl0ck (10.08.2010), Zhyk (13.08.2010)
Старый 08.08.2010, 19:17   #2
Знатный Читер
 Разведчик
Аватар для witcherD
 
witcherD на правильном путиwitcherD на правильном пути
Регистрация: 26.03.2010
Сообщений: 31
Популярность: 105
Сказал(а) спасибо: 1
Поблагодарили 54 раз(а) в 22 сообщениях
 
По умолчанию Re: Автообновление. ClickOnce .NET Version

Меня интересуют несколько вопросов:
1. Как поведет себя программа если при обновлении появилась ошибка. Как при автоматическом обновлении, так и при ручном.
2. Приложения, развернутые с помощью ClickOnce сохраняются не по желанию пользователя, а в папку с кешем ClickOnce. И это очень неудобно, приходится далеко лезть. Хотелось бы хотя бы ярлыки на рабочем столе и меню в меню Пуск.
3. Во вкладке deployment есть замечательная галочка "use ".deploy" file extension". Вещь безусловно нужная, но про нее не было ни слова.
4. Как добавлять дополнительные файлы находящиеся в проекте. И как добавлять дополнительные файлы находящиеся в другом проекте этого же решения
5. Хоть пару слов о манифестах)
  Ответить с цитированием
Старый 08.08.2010, 19:30   #3
-= Элитный Мастер =-
 Главнокомандующий
Аватар для Kitsune
 
Kitsune сломал счётчик популярности :(Kitsune сломал счётчик популярности :(Kitsune сломал счётчик популярности :(Kitsune сломал счётчик популярности :(Kitsune сломал счётчик популярности :(Kitsune сломал счётчик популярности :(Kitsune сломал счётчик популярности :(Kitsune сломал счётчик популярности :(Kitsune сломал счётчик популярности :(Kitsune сломал счётчик популярности :(Kitsune сломал счётчик популярности :(
Регистрация: 20.01.2010
Сообщений: 1,539
Популярность: 22780
Золото Zhyk.Ru: 600
Сказал(а) спасибо: 43
Поблагодарили 1,717 раз(а) в 538 сообщениях
 
По умолчанию Re: Автообновление. ClickOnce .NET Version

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

Суть этого небольшого гайда - научить примитивным действиям с ClickOnce и общим понятия. Расписывать все тонкости смысла я не вижу, ибо это уже сделано многими людьми.

Очень хороший и познавательный видеоматериал на эту тему: [Ссылки могут видеть только зарегистрированные пользователи. ].
________________
Fireball - Быстрое снятие и загрузка скриншотов на хостинг.
  Ответить с цитированием
Ответ


Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.

Быстрый переход

Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
[Руководство] Автообновление. C# Version Kitsune C# 17 03.05.2018 17:06
[Подсказка] Автообновление FireFox -=sadist=- Dark Orbit 4 03.08.2010 00:28
[Помогите!] автообновление клиента Angellss Вопросы и ответы, обсуждения 5 02.08.2010 05:04
автообновление manstrrr Вопросы и ответы: RF Online 3 22.10.2009 11:01
Автообновление+2 окна razor797 Rising Force Online 5 23.04.2009 03:00

Заявление об ответственности / Список мошенников

Часовой пояс GMT +4, время: 03:40.

Пишите нам: [email protected]
Copyright © 2024 vBulletin Solutions, Inc.
Translate: zCarot. Webdesign by DevArt (Fox)
G-gaMe! Team production | Since 2008
Hosted by GShost.net