PDA

Просмотр полной версии : [Статья] [.NET] Автообновление.


OrBiT_DaRk
10.05.2013, 15:12
Здравствуйте, с этой статье я покажу как реализовать автообновление для вашей программы. Мы создадим программу для обновления первой.
Я сделаю программу для автообновления своей программы ParseDarkOrbit.

Нам понадобится хостинг для сайта. (юкоз не подходит).

Создаем новый проект в студии.
Добавляем на него 1 ProgressBar и 1 Label.
Лейбл назовем statuslbl
[Ссылки могут видеть только зарегистрированные и активированные пользователи]

Перейдем к коду.
После
Public Class Form1
Добавим
Dim WithEvents wc As New System.Net.WebClient
Dim vers As String
Private Sub wc_DownloadFileCompleted(ByVal sender As Object, ByVal e As System.ComponentModel.AsyncCompletedEventArgs) Handles wc.DownloadFileCompleted
statuslbl.Text = "Обновления загружены."
Process.Start("название вашей программы.exe")
End
End Sub

Private Sub wc_DownloadProgressChanged(ByVal sender As Object, ByVal e As System.Net.DownloadProgressChangedEventArgs) Handles wc.DownloadProgressChanged
ProgressBar1.Value = e.ProgressPercentage
statuslbl.Text = "Загрузка... Последняя версия " & vers
End Sub
[Ссылки могут видеть только зарегистрированные и активированные пользователи]

Далее зальем на сайт файлик vers.txt.
И впишем в него актуальную версию. В моем случае V1.4



В событие форм лоад добавим следующие:
vers = wc.DownloadString("[Ссылки могут видеть только зарегистрированные и активированные пользователи]вашсайт.ru/vers.txt")
wc.DownloadFileAsync(New Uri("[Ссылки могут видеть только зарегистрированные и активированные пользователи]вашсайт.ru/название вашей программы.exe"), "название вашей программы.exe")


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

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

Сохраняем и переходим к программе которую нужно обновить. (Я использую свою программу ParseDarkOrbit.)

Добавим на форму основной программы Label с названием currentvers и впишем в него текущую версию.
[Ссылки могут видеть только зарегистрированные и активированные пользователи]

Теперь перейдем к коду:
Нам нужно событие формлоад.
Вставляем в него следующие:

Dim WC2 As New WebClient
Dim currvers As String = WC2.DownloadString("[Ссылки могут видеть только зарегистрированные и активированные пользователи]вашсайт.ru/vers.txt")
If currvers = currentrvers.Text Then 'проверяем версию программы и на сайте.
Else
Process.Start("Название программы для обновления.exe")
End
End If

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

Вообщем все готово. Осталось протестировать. Если что-то не понятно, можно посмотреть видео.
7NLjus-d-sA&feature=youtu.be

ChixPix
06.06.2013, 16:49
Нам понадобится хостинг для сайта. (юкоз не подходит).
Какой тогда подойдет? Приведите в пример любой плиз, даже если платный!

Sinyss
06.06.2013, 17:02
Какой тогда подойдет? Приведите в пример любой плиз, даже если платный!
Абсолютно любой, на который можно залить файл. Юкоз не подходит потому что там защита от такого простого скачивания файлов...

warl0ck
06.06.2013, 18:05
Какой тогда подойдет? Приведите в пример любой плиз, даже если платный!

narod

Dimedrol1536
06.06.2013, 19:41
Нам понадобится хостинг для сайта. (юкоз не подходит).
Юкоз прекрасно работает, только надо "файл.exe" переименовать в "файл.zip" и можно смело качать, а сохраняем его как "файл.exe".

Kitsune
06.06.2013, 20:47
Ужасный код, отсутствует куча проверок на различные ситуации, например:
1. Нет интернета
2. Интернет оборвался во время закачки
3. Сайт лежит
4. Файл не найден
5. Еще одна копия запущена
и это только первое, что приходит на ум.

Не говоря уже о том, насколько безграмотно реализовано взаимодействие с UI из другого контекста.
Да о чем речь... когда все создание автообновления занимает 4-5 минут судя по видео.

Буянь
08.06.2013, 00:33
webClient.Headers.Add("User-Agent", "Mozilla/5.0 (Windows NT 6.2; WOW64; rv:21.0) Gecko/20100101 Firefox/21.0");


Воооооотъ.

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


Или как тут у вас, в разделе C/C++ принято?

webClient.Headers.Add("User-Agent", "Mozilla/5.0 (Windows NT 6.2; WOW64; rv:21.0) Gecko/20100101 Firefox/21.0")


посоны, я кэп, да? ._.

Роман1231
09.06.2013, 18:17
Так это же vb а не c++ или же я ошибаюсь?