Регистрация Главная Сообщество
Сообщения за день Справка Регистрация

Ответ
 
Опции темы
Старый 15.07.2012, 22:28   #1
 Разведчик
Аватар для oleg.svs
 
oleg.svs никому не известный тип
Регистрация: 04.06.2011
Сообщений: 1
Популярность: 10
Сказал(а) спасибо: 0
Поблагодарили 2 раз(а) в 1 сообщении
 
По умолчанию ***Учимся создавать UPDATER***

Всем привет!Сегодня я научу делать вас 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 добавим:
Код:
form1.Memo1.Lines.Add('Файл загружается');
 form1.ProgressBar1.Position:=form1.ProgressBar1.Position+25;
  sleep(300);
  form1.ProgressBar1.Position:=form1.ProgressBar1.Position+25;
form1.ProgressBar1.Position:=form1.ProgressBar1.Position+50;
  form1.ProgressBar1.Position:=0;
form1.Memo1.Lines.Add('Загрузка завершена, ищите файл в c:\wh.dll');
В итоге должно получиться примерно так:
Код:
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.Text<>version 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.Text<>version 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;
Думаю, на этом с делфи всё=)Если есть вопросы-задавайте в теме, постараюсь ответить...
VT нету , тк нет исполняемых файлов.
[Ссылки могут видеть только зарегистрированные пользователи. ]
  Ответить с цитированием
2 пользователя(ей) сказали cпасибо:
DevZI (18.02.2014), KRUG (14.01.2013)
Старый 29.09.2012, 14:32   #2
 Разведчик
Аватар для #Nike
 
#Nike излучает ауру#Nike излучает ауру#Nike излучает ауру#Nike излучает ауру#Nike излучает ауру#Nike излучает ауру
Регистрация: 19.09.2012
Сообщений: 12
Популярность: 551
Сказал(а) спасибо: 13
Поблагодарили 41 раз(а) в 19 сообщениях
 
По умолчанию Re: ***Учимся создавать UPDATER***

Ох, ну и быдло код...
Цитата:
Сообщение от oleg.svsПосмотреть сообщение
form1.Memo1.Lines.Add('Файл загружается'); form1.ProgressBar1.Position:=form1.ProgressBar1.Po sition+25; sleep(300); form1.ProgressBar1.Position:=form1.ProgressBar1.Po sition+25; form1.ProgressBar1.Position:=form1.ProgressBar1.Po sition+50; form1.ProgressBar1.Position:=0;

Это ужас...

Код:
ProgressBar1.Position := ProgressBar1.Position + idHTTP1.AWorCount
Вот так не проще?

P.S. для хорошей работоспособности, к этому коду нужно еще кое чего...
  Ответить с цитированием
Старый 29.09.2012, 14:47   #3
 Старший сержант
Аватар для metraz
 
metraz в состоянии испепелить взглядомmetraz в состоянии испепелить взглядомmetraz в состоянии испепелить взглядомmetraz в состоянии испепелить взглядомmetraz в состоянии испепелить взглядомmetraz в состоянии испепелить взглядомmetraz в состоянии испепелить взглядомmetraz в состоянии испепелить взглядомmetraz в состоянии испепелить взглядомmetraz в состоянии испепелить взглядомmetraz в состоянии испепелить взглядом
Регистрация: 25.12.2011
Сообщений: 191
Популярность: 5259
Сказал(а) спасибо: 31
Поблагодарили 235 раз(а) в 135 сообщениях
Отправить сообщение для metraz с помощью Skype™
 
По умолчанию Re: ***Учимся создавать UPDATER***

antifreeze и application.processmesages.
  Ответить с цитированием
Ответ


Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.

Быстрый переход

Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
L2 Updater v 1.0 - программа для создания Updater'a n1cekkk Дополнения к серверам 0 12.08.2011 19:38
[Статья] Учимся создавать красивые темы.(офрмеляем темы) blinoed Общение и обсуждение CrossFire 4 25.07.2011 12:54

Заявление об ответственности / Список мошенников

Часовой пояс GMT +4, время: 23:26.

Пишите нам: [email protected]
Copyright © 2024 vBulletin Solutions, Inc.
Translate: zCarot. Webdesign by DevArt (Fox)
G-gaMe! Team production | Since 2008
Hosted by GShost.net