Клубове Дир.бг
powered by diri.bg
търси в Клубове diri.bg Разширено търсене

Вход
Име
Парола

Клубове
Dir.bg
Взаимопомощ
Горещи теми
Компютри и Интернет
Контакти
Култура и изкуство
Мнения
Наука
Политика, Свят
Спорт
Техника
Градове
Религия и мистика
Фен клубове
Хоби, Развлечения
Общества
Я, архивите са живи
Клубове Дирене Регистрация Кой е тук Въпроси Списък Купувам / Продавам 14:17 04.07.25 
Клубове/ Компютри и Интернет / Visual Basic Всички теми Следваща тема Пълен преглед*
Информация за клуба
Тема Модул за ъпдейтване на приложението: [re: Щиpлиц]
Автор ЩиpлицМодератор (разузнавач)
Публикувано14.10.06 23:32  



Ето кода, описанието е след него...

'

' Add in Form_Load or Sub Main procedure this code:
'
' If Right(App.EXEName, 4) = "_new" Then CheckVersion 1 Else CheckVersion 2
'
'
'
' In "CheckVersion" procedure add:
'
' CheckVersion
'
'
' Enjoy ;o)
'

Option Explicit

Public Sub CheckVersion(Optional UpdateOption As Integer)

On Error GoTo ErrHandle

Dim intTim As Long, http, s As String, strFile As String, strServer As String
strFile = Replace(App.Path & "\" & App.EXEName & ".exe", "\\", "\")

' !!! Server address !!!
strServer = "http://store1.data.bg/user/"

Select Case UpdateOption
Case 0
Set http = CreateObject("MSXML2.XMLHTTP")
http.Open "GET", strServer & App.EXEName & ".exe_version.txt", False
http.send

'Check version
s = http.responseText
If Val(s) > Val(App.Revision) Then
If MsgBox("New version found. Do you want download and install it?", vbYesNo, _
"New version") = vbYes Then
'Update program
Dim b() As Byte
http.Open "GET", strServer & App.EXEName & ".exe_install.bin", False
http.send
b = http.responseBody
If Dir(strFile & "_new.exe") <> "" Then Kill strFile & "_new.exe"
Open strFile & "_new.exe" For Binary As #1: DoEvents: Put #1, , b: Close

intTim = Timer
Do Until Timer > intTim + 3 Or Timer = 3
DoEvents
Loop

Shell strFile & "_new.exe", vbMinimizedFocus
End

End If
Else
MsgBox "No new version found.", vbInformation
End If

Exit Sub

Case 1

intTim = Timer
Do Until Timer > intTim + 3 Or Timer = 3
DoEvents
Loop

If Dir(Left(strFile, Len(strFile) - 8)) <> "" Then Kill Left(strFile, Len(strFile) - 8)
FileCopy strFile, Left(strFile, Len(strFile) - 8)

Shell Left(strFile, Len(strFile) - 8), vbNormalFocus
End

Exit Sub

Case 2
If Dir(strFile & "_new.exe") <> "" Then

intTim = Timer
Do Until Timer > intTim + 3 Or Timer = 3
DoEvents
Loop

Kill strFile & "_new.exe"
End If

Exit Sub

End Select
Exit Sub

ErrHandle:
MsgBox "Error " & Err & ". " & Err.Description
End Sub


Та значи, в началото на функцията има ред "ServerAddress", където трябва да сложите линка към сървъра, където ще се качва обновлението. Евентуално, ако искате да ползвате домашния си компютър за сървър - е възможно да ползвате акаунт в No-ip.com където с безплатна регистрация можете да получите пренасочване към избран от вас IP адрес, и да си сложите някаква програмка за WEB страница, а потребителите ще си теглят на воля.

И така, модула съм го спретнал така, че да бъде универсален, и трябва единствено да се съобразяваме с името на приложението. Ако програмата се казва MyApp, тогава на сървъра за обновление слагаме преименувано ЕХЕ, с име MyApp.exe_install.bin и модула ще си го търси. За да може да сравнява версията на сървъра дали е по-нова от самия себе си - ползвам обикновен текстов файл с име MyApp.exe_version.txt качен в същия сървър. В този текстов файл записвам число равно на App.Revision на програмата, и с всяка компилация увеличавам това число, за да може работещия при клиенти софтуер да разбере, че има по-нова от него версия.

И така, на сървъра имаме файлове:
MyApp.exe_version.txt - съдържа версията
MyApp.exe_install.bin - съдържа по-нова версия на ЕХЕ-то

Модула отваря ТХТ-то, вижда, че има нова версия, тегли BIN файла, като го записва с друго име, и го стартира, след което спира автоматично, а новостартирания файл пък "вижда", че е обновление, и изтрива стария, като заема неговото място. В кода съм сложил изчакване по 3 секунди, за да е сигурно, че програмата е спряла, преди да се трие стария файл.

Аз слагам на сървъра и дистрибутив в саморазпакетиращ се RAR-ски архив, който разопакова в предварително зададена директория, и стартира Setup.bat, който регистрира външните контроли. Евентуално при по-големи обновления за BIN файл може да се сложи също такъв саморазпакетиращ се архив, и той ще си стартира ЕХЕ-то след като го извади (прави се в настройките на архива).

Модула е подходящ за малки приложения. Можем да доразработим идеята, ако на някой му се занимава.


Щирлиц

Цялата тема
ТемаАвторПубликувано
* Tips&Tricks ЩиpлицМодератор   09.09.03 19:16
. * Как да си направим shortcut killall   10.09.03 16:58
. * Re: Как да си направим shortcut DobyOne   05.02.04 13:02
. * Re: Как да си направим shortcut Щиpлиц   05.02.04 20:32
. * Re: Tips&Tricks Гeoprи   10.09.03 17:17
. * Четене и писане във файлове Гeoprи   10.09.03 19:58
. * Интерфейс Гeoprи   10.09.03 20:06
. * Промяна на шрифта на контролите на Форма Гeoprи   10.09.03 20:28
. * Re: Промяна на шрифта на контролите на Форма пpoГЪPMИcт   11.09.03 19:27
. * Re: Промяна на шрифта на контролите на Форма Щиpлиц   11.09.03 20:49
. * Re: Промяна на шрифта на контролите на Форма пpoГЪPMИcт   12.09.03 15:16
. * Re: Промяна на шрифта на контролите на Форма Гeoprи   12.09.03 18:25
. * Re: Промяна на шрифта на контролите на Форма Ascona83   12.10.03 01:13
. * Re: Промяна на шрифта на контролите на Форма Щиpлиц   12.10.03 11:52
. * Re: Промяна на шрифта на контролите на Форма Ascona83   13.10.03 11:10
. * Re: Промяна на шрифта на контролите на Форма Гeoprи   14.10.03 21:49
. * Re: Промяна на шрифта на контролите на Форма Гeoprи   12.09.03 18:07
. * Re: Промяна на шрифта на контролите на Форма пpoГЪPMИcт   16.10.03 19:05
. * Re: Промяна на шрифта на контролите на Форма Гeoprи   17.10.03 17:53
. * Re: Промяна на шрифта на контролите на Форма пpoГЪPMИcт   17.10.03 18:28
. * Re: Промяна на шрифта на контролите на Форма Гeoprи   18.10.03 14:33
. * Re: Промяна на шрифта на контролите на Форма пpoГЪPMИcт   22.10.03 12:54
. * Re: Промяна на шрифта на контролите на Форма Гeoprи   22.10.03 18:36
. * Re: Промяна на шрифта на контролите на Форма пpoГЪPMИcт   23.10.03 18:14
. * Re: Промяна на шрифта на контролите на Форма Щиpлиц   22.10.03 18:59
. * Re: Промяна на шрифта на контролите на Форма пpoГЪPMИcт   23.10.03 18:29
. * Re: Get Item from point in List box Ptr   30.09.03 19:18
. * Re: Get Item from point in List box Jimmy   06.11.03 23:25
. * Добавяне на 4ти бутон в titlebar БaбaИлиицa   25.02.04 11:38
. * System Try nevil   15.03.04 13:17
. * Re: System Try БaбaИлиицa   15.03.04 17:59
. * Re: System Try nevil   15.03.04 18:38
. * Re: System Try v.2 БaбaИлиицa   16.03.04 17:27
. * Re: System Try v.2 nevil   16.03.04 19:35
. * Re: System Try v.2 ToViDebne   18.03.04 19:03
. * категорично не съм съгласен с тебе! БaбaИлиицa   19.03.04 08:53
. * Има решение. Щиpлиц   19.03.04 10:15
. * Re: Има решение. nevil   19.03.04 19:54
. * Re: System Try v.2 gotinia   05.05.05 17:52
. * Файла го няма... Гeoprи   02.04.04 01:05
. * Там си е файлът! БaбaИлиицa   02.04.04 10:22
. * За БАБА Гeoprи   16.04.04 00:40
. * Konvertirane na Desetichni chisla v dvoichni nevil   15.03.04 11:47
. * Promjana Resolucijata na ekrana! nevil   24.03.04 11:18
. * Модул за ъпдейтване на приложението: Щиpлиц   14.10.06 23:32
. * Re: Tips&Tricks pich   09.12.09 12:09
Клуб :  


Clubs.dir.bg е форум за дискусии. Dir.bg не носи отговорност за съдържанието и достоверността на публикуваните в дискусиите материали.

Никаква част от съдържанието на тази страница не може да бъде репродуцирана, записвана или предавана под каквато и да е форма или по какъвто и да е повод без писменото съгласие на Dir.bg
За Забележки, коментари и предложения ползвайте формата за Обратна връзка | Мобилна версия | Потребителско споразумение
© 2006-2025 Dir.bg Всички права запазени.