Автообновление программы.

Язык Visual Basic на платформе .NET.

Модераторы: Ramzes, Sebas

fatal1ty
Начинающий
Начинающий
 
Сообщения: 3
Зарегистрирован: 27.06.2010 (Вс) 23:01

Автообновление программы.

Сообщение fatal1ty » 29.06.2010 (Вт) 21:16

Здравствуйте.
Я хочу осуществить в своей программе авто-обновление ClickOnce не подходит.
У меня есть идея сделать так:
залить *.htm документ с версией программы к себе на сайт, при запуске документ считывался в переменную, потом я проверял *математическое* выражение > (больше), если значение больше, то выводится сообщение, типа вышла новая версия. Код приблизительно такой:
Код: Выделить всё
Public Class Form1

Dim Version As Integer = 1.1
Dim WebVersion As String

Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) _
Handles MyBase.Load

WebBrowser1.Visible = False

Button1.Text = "Обновить"

End Sub

Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) _
Handles Button1.Click

If Button1.Text = "Обновить" Then

SaveFileDialog1.Filter = ("Программа|prog.exe")
SaveFileDialog1.FileName = ("prog.exe")

WebBrowser1.Navigate("Ссылка на страницу c версией программы")

Else

BackgroundWorker1.CancelAsync()

End If

End Sub

Private Sub WebBrowser1_DocumentCompleted(ByVal sender As System.Object, ByVal e As _
System.Windows.Forms.WebBrowserDocumentCompletedEventArgs) _
Handles WebBrowser1.DocumentCompleted

WebVersion = WebBrowser1.DocumentText

If Val(WebVersion) > Val(Version) Then
Dim Msg
Msg = MsgBox("Вышла новая версия программы : " & WebVersion & Chr(13) _
& "Обновить сейчас?", MsgBoxStyle.Information Or MsgBoxStyle.YesNo, "Обновление")
If Msg = MsgBoxResult.Yes Then
SaveFileDialog1.ShowDialog()
End If
Else
MsgBox("Новых версий программы не обнаружено!", MsgBoxStyle.Information, "Обновление")
End If

End Sub

Private Sub SaveFileDialog1_FileOk(ByVal sender As System.Object, ByVal e As _
System.ComponentModel.CancelEventArgs) Handles _
SaveFileDialog1.FileOk

BackgroundWorker1.RunWorkerAsync()

End Sub

Private Sub BackgroundWorker1_DoWork(ByVal sender As System.Object, ByVal e As _
System.ComponentModel.DoWorkEventArgs) Handles _
BackgroundWorker1.DoWork

If My.Computer.Network.Ping("Ссылка на обновленную версию", 100) = True Then

My.Computer.Network.DownloadFile _
("Ссылка на обновленную версию", SaveFileDialog1.FileName)

Button1.Text = "Остановить"

Else
MsgBox("Не удалось найти файл." & Chr(13) & _
"Пожалуйста, проверьте ваше интернет - соединение.", MsgBoxStyle.Exclamation, "Ошибка")
End If

End Sub
End Class


Вопрос следующий: Какой структуры должен быть htm файл и если не трудно проверьте код.
Спасибо.

1Steps
Постоялец
Постоялец
Аватара пользователя
 
Сообщения: 505
Зарегистрирован: 20.12.2006 (Ср) 0:50
Откуда: New York

Re: Автообновление программы.

Сообщение 1Steps » 30.06.2010 (Ср) 0:41

Dim Version As Integer = 1.1
Я в шоке. Что это за бред?
Если ты эту переменную сравнишь с 1.2 то результат будет одинаков. :D
Удалена за ненадобностью.

fatal1ty
Начинающий
Начинающий
 
Сообщения: 3
Зарегистрирован: 27.06.2010 (Вс) 23:01

Re: Автообновление программы.

Сообщение fatal1ty » 30.06.2010 (Ср) 14:01

А как можно еще сделать?

krukovis84
Продвинутый пользователь
Продвинутый пользователь
Аватара пользователя
 
Сообщения: 108
Зарегистрирован: 04.08.2009 (Вт) 11:16
Откуда: Кочевник

Re: Автообновление программы.

Сообщение krukovis84 » 30.06.2010 (Ср) 14:36

1Steps писал(а):
Dim Version As Integer = 1.1
Я в шоке. Что это за бред?
Если ты эту переменную сравнишь с 1.2 то результат будет одинаков. :D



Сначала не посмотрел на объявление переменной. Потом долго смеялся. И вот... опять ржу... :mrgreen:


fatal1ty писал(а):А как можно еще сделать?


Ну можно для начала Version как строку объявить объявить Dim strVersion As String = "1.1" .
А сравнивать не всю версию файла, а только один правый символ String.Right(strVersion,1) (пишу по памяти, могу и ошибаться в синтаксисе, поэтому лучше почитать про объект String в справке).
Ну и обновлять соответственно при String.Right(WebVersion,1)>String.Right(strVersion,1).

1Steps
Постоялец
Постоялец
Аватара пользователя
 
Сообщения: 505
Зарегистрирован: 20.12.2006 (Ср) 0:50
Откуда: New York

Re: Автообновление программы.

Сообщение 1Steps » 01.07.2010 (Чт) 1:16

А как можно еще сделать?
Легко, прочитав ниже следующее.
http://msdn.microsoft.com/en-us/library ... 71%29.aspx
Удалена за ненадобностью.

ndemidov
Бывалый
Бывалый
Аватара пользователя
 
Сообщения: 285
Зарегистрирован: 14.11.2007 (Ср) 16:23
Откуда: Earth planet

Re: Автообновление программы.

Сообщение ndemidov » 22.09.2010 (Ср) 18:41

Ну, для записи версии программы можно воспользоваться, созданным для этого свойством - версия приложения.

Читал твой код - пытался найти как ты парсишь web-страницу, чтобы узнать последнюю версию, так и не понял. такое ощущение, что ты просто считываешь весь текст со страницы. Или у тебя на странице только версия записана?

Наверно, уже не надо, но вот схожая тема viewtopic.php?f=9&t=40657&p=6729615#p6729615

Кстати, у меня вопрос: С переходом на 7-ку я заметил, что при переименовании .exe-шником самого себя происходит ошибка (я админ). Как исправить? :?:
Большинство людей не понимает, что великое многообразие и красочность мира будут служить им крепчайшей душевной поддержкой на протяжении всей жизни. Иван Ефремов


Вернуться в Visual Basic .NET

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 34

    TopList