PDA

Просмотр полной версии : [Статья] Лаунчер обновлений для своей программы(Updater)


3jhlty3
21.01.2012, 19:11
Сегодня я попробую объяснить как можно сделать хорошийUpdater(Лаунчер обновлений) Для вашей программы.
Я собрал несколько разных способов и сделал очень хороший лаунчер)
И так приступим:
1) Создаём новую Form
2) Помещаем на неё:
2.1) Label1 и Label2 из вкладки Standart
2.3) Button1 и Button2(Место их можно использовать всё что вам угодно, главное чтобы в Event было событие OnClik)
2.3) IdFTP из вкладки lndy Clients
2.4) Помещаем на Form1 компонент IdHttp
2.5) Помещаем на Form1 компонент Label

3) Теперь займёмся кодами...
3.1) Код для проверки версии программы:
Вставлять в Form1 событие OnCreate.
var
version:WideString;
begin
try
version:=Id[Ссылки могут видеть только зарегистрированные и активированные пользователи]('ссылка'); //Это файл с версией который будет находится на сайте то-есть в файле Version вы должны написать текущую версию программы
if version=Label1.Caption then //В Label1 название это версия программы на данный момент... ну то-есть если вы написали в Label, что у вас клиент версии V.1.0, а в файле Version на сервере другая версия он попросит вас сделать обновление...
begin

end
else
begin
if (not Assigned(Form2)) then // проверка существования Формы (если нет, то
Form2:=TForm2.Create(Self); // создание Формы)
Form2.Show; // (или Form2.ShowModal) показ Формы
end;
except
on e:Exception do
//-//-//-//-//-//
end;



end;
3.2) Работа с формой 2(Form2)
3.2.1) Даём название Form2 я советую называть:
Менеджер Обновлений, Ланучер Обновлений Updater.. ну это на ваше усмотрение...
3.2.2) Label1 на Form2 называем:"Появилась новая версия программы.",
А Label2:"Хотите загрузить обновление?"
3.2.3) Button1 называем:"Да",
а Button2:"Нет"
И если не кто не понял должно получиться так:
Появилась новая версия программы.
Хотите загрузить обновление?
Да Нет
3.2.4) Дальше в событиях Button1(Да) в OnClik Прописываем:
idFTP1.Username:= 'Name'; //
idFTP1.Password:= 'Pass'; //
idFTP1.Host:= 'Host'; //
idFTP1.Passive:= True;
if idFTP1.Connected then
idFTP1.Disconnect
else
try

idFTP1.Connect(True);
except
on E : Exception do
ShowMessage('Ошибка подключения: '+E.Message);
end;
if idFTP1.Connected then
try
idFTP1.Get('Ссылка на обновление', 'С каким именем оно сохранится', True);
except
on E : Exception do
ShowMessage('Ошибка скачивания файла: '+E.Message);
end;
end;
3.2.5) В событиях Button2(Нет) B Onclik прописываем:
Form2.Close

/problem :hd:
4) Всё)) Готова)) Можно и доработать... Ну что-бы при скачивании удалялась старая версия, а новая переименовывалась... Я доработаю сам и исправлю)):hd::hd::agreed:
Если буду вопросы пишите в тему отвечу обязательно!

Сверхчеловек
03.04.2012, 09:29
Ты код для проверки версии рабочий выложил?
У меня не получается проверить.

Zo_Om4eG
03.04.2012, 15:52
WoW_pr0, Все рабочее, где указано 'ссылка' - там ваша ссылка для проверки обновления. Предположим у меня хост юкоз, я проверяю оттуда:
var version:string
version:=Id[Ссылки могут видеть только зарегистрированные и активированные пользователи]('[Ссылки могут видеть только зарегистрированные и активированные пользователи]');
Verison вернет значение - +4543484F313831323130313936304D61696C5370616D6C696 665696E707269736F6E5A6F5F4F6D346547224A47704D37615 E262823292B5F534B21265F292D21242B2B534144214024295 F40214A4453415F2B21

Skrillex3
03.04.2012, 18:31
зачем использовать FTP? Можно было подключить UrlMon и скачать программу 1 строчкой