Всем привет!Сегодня я научу делать вас UPADTER на Delphi.
Итак :
1)Создаем новый проект.(File->New->Application).
2)Кидаем на форму progressbar из вкладки win32
3)Memo из вкладки standart.
4)Кнопку из вкладки standart.
Должно получиться примерно так:
[Ссылки могут видеть только зарегистрированные пользователи. ]
5)Теперь начнем кодить.
Для загрузки файла из интернета есть замечательная процедурка=)
Вот ее код:
Код:
procedure GetIntetFile(URL, SavetoFile: string);
var
TM: TMemoryStream;
begin
try
TM:= TMemoryStream.Create;
Form1.idhttp1.Get(URL,TM);
finally
TM.SavetoFile(SavetoFile);
end;
TM.Free;
end;
Вставляете ее после строки
Код:
{$R *.dfm}
6)Теперь два раза нажмем на кнопку и у нас появится процедура нажатия на button.
Давайте сделаем так , чтобы по нажатию на кнопку наш файл закачался в c:\ под именем Wh.dll(можно любой файл - для exe - 1.exe
Должно получиться примерно так :
Код:
procedure TForm1.Button1Click(Sender: TObject);
begin
GetIntetFile('http://ваш_сайт/wh.dll','c:\wh.dll');
end;
7)Чтобы все это заработало нужно кинуть на форму компонент idhhtp из вкладки indyclients.
Можно тестить!загрузка работает.
8)Теперь давайте добавим визульно закачку файла;
В нашу процедуру getinetfile добавим:
procedure GetIntetFile(URL, SavetoFile: string);
var
TM: TMemoryStream;
begin
try
TM:= TMemoryStream.Create;
Form1.idhttp1.Get(URL,TM);
form1.Memo1.Lines.Add('Файл загружается');
form1.ProgressBar1.Position:=form1.ProgressBar1.Position+25;
sleep(300);
form1.ProgressBar1.Position:=form1.ProgressBar1.Position+25;
finally
TM.SavetoFile(SavetoFile);
form1.ProgressBar1.Position:=form1.ProgressBar1.Position+50;
form1.ProgressBar1.Position:=0;
form1.Memo1.Lines.Add('Загрузка завершена, ищите файл в c:\wh.dll');
end;
TM.Free;
end;
Теперь остановимся на вопросе :Как сделать так , чтобы updater сначала проверял , есть ли у него обновления?
Если у вас нет своего сайта/ftp/хостинга , то лугче всего зарегистрировать себе сайт на [Ссылки могут видеть только зарегистрированные пользователи. ]
Эту процедуру сможет пройти любой homo sapiens=)
НУ вот , за 5 минут вы создали сайт и уже сидите в админке.
Заходим в управление файлами и загружаем туда , например wh.dll(то,что будет качать ваш упдатер),updater.exe(новая версия updater'a и versionupdater.txt.
Опишу алгоритм работы updater'a:
1)Программа идет на ваш сайт и качает versionupdater.txt.Если версия будет другой(в программе) ,
то она выводит в memo 'Есть обновление , для закачки нажмите кнопку обновить updater'.
Если нету , то выводит 'Обновлений updater'a не обнаружено'.
2)Тоже самое с wh , только файл версий будет - versionwh.txt
Алгоритм мы написали , теперь будем кодить)
Чтобы при запуске программы она проверила свою версию , нужно
1)Поместить на форму второй memo и сделать его visible:=false(невидимым),поместить вторую кнопку(по ней будет обновляться updater.
2)Заходим в events формы и на событие onshow(программа показалась) прописываем следующий код:
Код:
var
version:string;
begin
version:='1.0';//наша версия
memo1.Lines.Add('Ваша версия updater = '+version);
GetIntetFile2('http://ваш_сайт/versionupdater.txt','c:\windows\upd.txt');
memo2.Lines.LoadFromFile('c:\windows\upd.txt');
if memo2.Textversion then //Если версия другая то
begin
memo1.Lines.Add('обнаружена новая версия updater = '+memo2.Text);
memo1.Lines.Add('Для закачки нажмите на кнопку обновить updater');
end //Если версия такая же
else memo1.Lines.Add('обновлений не обнаружено');
end;
Так же добавьте следующую процедуру для Загрузки обновления.
Код:
procedure GetIntetFile2(URL, SavetoFile: string);
var
TM: TMemoryStream;
begin
try
TM:= TMemoryStream.Create;
Form1.idhttp1.Get(URL,TM);
finally
TM.SavetoFile(SavetoFile);
form1.Memo1.Lines.Add('Успешно');
end;
TM.Free;
end;
Чтобы это работало , нужно залить на сайт versionupdater.txt (в нем строчка , например 1.0).
Версия программы меняется в исходе .
Теперь по нажатию на кнопку пихаем этот код:
Код:
var
version:string;
begin
version:='1.0';//наша версия
memo1.Lines.Add('Ваша версия updater = '+version);
GetIntetFile2('http://ваш_сайт/versionupdater.txt','c:\windows\upd.txt');
memo2.Lines.LoadFromFile('c:\windows\upd.txt');
if memo2.Textversion then //Если версия другая то
begin
memo1.Lines.Add('обнаружена новая версия updater = '+memo2.Text);
memo1.Lines.Add('Закачка производится в c:\updaternew.exe');
GetIntetFile2('http://ваш_сайт/updater.exe','c:\updaternew.exe');
end //Если версия такая же
else memo1.Lines.Add('обновлений не обнаружено');
end;
Re: Лаунчер обновлений для своей программы(Updater)
Модуль обновления вопрос к автору ? , можно сделать так чтобы Модуль обновления был через хостин Rhost , если можно прошу подсказку в лс очень прошу .
________________
да простит VNK за флуд Для просмотра ссылок или изображений в подписях, у Вас должно быть не менее 10 сообщение(ий). Сейчас у Вас 0 сообщение(ий).
Для просмотра ссылок или изображений в подписях, у Вас должно быть не менее 10 сообщение(ий). Сейчас у Вас 0 сообщение(ий).