Регистрация Главная Сообщество
Сообщения за день Справка Регистрация
Навигация
Zhyk.org LIVE! Реклама на Zhyk.org Правила Форума Награды и достижения Доска "почета"

Ответ
 
Опции темы
Старый 30.07.2013, 09:13   #1
 Разведчик
Аватар для kill_stanislav
 
kill_stanislav никому не известный тип
Регистрация: 30.07.2013
Сообщений: 1
Популярность: 10
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
 
По умолчанию Лаунчер обновлений для своей программы(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.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;
  Ответить с цитированием
Старый 30.07.2013, 10:43   #2
 Сержант
Аватар для Роспотребнадзор
 
Роспотребнадзор блестящий пример для подражанияРоспотребнадзор блестящий пример для подражанияРоспотребнадзор блестящий пример для подражанияРоспотребнадзор блестящий пример для подражанияРоспотребнадзор блестящий пример для подражанияРоспотребнадзор блестящий пример для подражанияРоспотребнадзор блестящий пример для подражанияРоспотребнадзор блестящий пример для подражанияРоспотребнадзор блестящий пример для подражанияРоспотребнадзор блестящий пример для подражанияРоспотребнадзор блестящий пример для подражания
Регистрация: 10.08.2011
Сообщений: 136
Популярность: 1781
Сказал(а) спасибо: 60
Поблагодарили 246 раз(а) в 145 сообщениях
Отправить сообщение для Роспотребнадзор с помощью Skype™
 
По умолчанию Re: Лаунчер обновлений для своей программы(Updater)

Цитата:
Сообщение от kill_stanislavПосмотреть сообщение
procedure TForm1.Button1Click(Sender: TObject);
begin
GetIntetFile('http://ваш_сайт/wh.dll','c:\wh.dll');
end;

Форма виснуть будет. В отдельном потоке загрузку делать надо.
  Ответить с цитированием
Пользователь сказал cпасибо:
NebesaBag (30.07.2013)
Старый 08.08.2013, 19:41   #3
 Разведчик
Аватар для SН|FТ
 
SН|FТ излучает ауруSН|FТ излучает ауруSН|FТ излучает ауруSН|FТ излучает ауруSН|FТ излучает ауруSН|FТ излучает ауру
Регистрация: 07.08.2013
Сообщений: 1
Популярность: 648
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Отправить сообщение для SН|FТ с помощью Skype™
 
По умолчанию Re: Лаунчер обновлений для своей программы(Updater)

Модуль обновления вопрос к автору ? , можно сделать так чтобы Модуль обновления был через хостин Rhost , если можно прошу подсказку в лс очень прошу .
________________
да простит VNK за флуд
мой бывший украденный профиль !
  Ответить с цитированием
Старый 08.08.2013, 19:50   #4
 Старший сержант
Аватар для Sinyss
 
Sinyss троюродный дядя Чака НоррисаSinyss троюродный дядя Чака НоррисаSinyss троюродный дядя Чака НоррисаSinyss троюродный дядя Чака НоррисаSinyss троюродный дядя Чака НоррисаSinyss троюродный дядя Чака НоррисаSinyss троюродный дядя Чака НоррисаSinyss троюродный дядя Чака НоррисаSinyss троюродный дядя Чака НоррисаSinyss троюродный дядя Чака НоррисаSinyss троюродный дядя Чака Норриса
Регистрация: 29.07.2011
Сообщений: 197
Популярность: 8989
Сказал(а) спасибо: 45
Поблагодарили 175 раз(а) в 139 сообщениях
Отправить сообщение для Sinyss с помощью Skype™
 
По умолчанию Re: Лаунчер обновлений для своей программы(Updater)

Цитата:
Сообщение от SН|FТПосмотреть сообщение
Модуль обновления вопрос к автору ? , можно сделать так чтобы Модуль обновления был через хостин Rhost , если можно прошу подсказку в лс очень прошу .

На своем сайте ссылка на файл на Rghost... и оттуда уже качать...
  Ответить с цитированием
Старый 22.08.2013, 13:39   #5
 Разведчик
Аватар для hiddenf
 
hiddenf никому не известный тип
Регистрация: 28.06.2013
Сообщений: 2
Популярность: 10
Сказал(а) спасибо: 0
Поблагодарили 2 раз(а) в 2 сообщениях
 
По умолчанию Re: Лаунчер обновлений для своей программы(Updater)

if memo2.Textversion Ошибка в данной строке.

Добавлено через 4 минуты
К стати, как можно сделать так , чтобы апдейт качался в папку с программой?

Последний раз редактировалось hiddenf; 22.08.2013 в 13:44. Причина: Добавлено сообщение
  Ответить с цитированием
Старый 22.08.2013, 15:32   #6
 Старший сержант
Аватар для Sinyss
 
Sinyss троюродный дядя Чака НоррисаSinyss троюродный дядя Чака НоррисаSinyss троюродный дядя Чака НоррисаSinyss троюродный дядя Чака НоррисаSinyss троюродный дядя Чака НоррисаSinyss троюродный дядя Чака НоррисаSinyss троюродный дядя Чака НоррисаSinyss троюродный дядя Чака НоррисаSinyss троюродный дядя Чака НоррисаSinyss троюродный дядя Чака НоррисаSinyss троюродный дядя Чака Норриса
Регистрация: 29.07.2011
Сообщений: 197
Популярность: 8989
Сказал(а) спасибо: 45
Поблагодарили 175 раз(а) в 139 сообщениях
Отправить сообщение для Sinyss с помощью Skype™
 
По умолчанию Re: Лаунчер обновлений для своей программы(Updater)

Цитата:
Сообщение от hiddenfПосмотреть сообщение
if memo2.Textversion Ошибка в данной строке.

Там знак равно пропущен.
  Ответить с цитированием
Ответ


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

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

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

Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
[Руководство] Система плагинов. Плагины для своей программы Yukikaze C# 5 24.05.2014 21:15
[Статья] Делаем Updater до программы с помощью Indy. Delphi. VeTaL_UA Pascal/Delphi 33 03.06.2012 17:06
[Статья] Лаунчер обновлений для своей программы(Updater) 3jhlty3 Pascal/Delphi 3 03.04.2012 18:31
L2 Updater v 1.0 - программа для создания Updater'a n1cekkk Дополнения к серверам 0 12.08.2011 19:38
[Информация] Все о грядущем обновлении. +ESEL- Общение и обсуждение, архив Point Blank 13 14.07.2011 16:54

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

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

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