VeTaL_UA
18.11.2011, 21:28
Доброго времени суток!
В этой статье я попробую научить вас писать Updater для своей программы.
Что нам нужно для работы:
Delphi любой версии. Ссылки на скачку:
Delphi 7(deposit ([Ссылки могут видеть только зарегистрированные и активированные пользователи]),torrent ([Ссылки могут видеть только зарегистрированные и активированные пользователи]));
Delphi 2010(deposit ([Ссылки могут видеть только зарегистрированные и активированные пользователи]),torrent ([Ссылки могут видеть только зарегистрированные и активированные пользователи]));
Delphi XE(deposit ([Ссылки могут видеть только зарегистрированные и активированные пользователи]),torrent ([Ссылки могут видеть только зарегистрированные и активированные пользователи]));
Cайт, созданный с помощью конструктора ucoz ([Ссылки могут видеть только зарегистрированные и активированные пользователи]);
Желание;
Ну что же, если все пункты присутствуют можно начать.
Updater - это вспомогательная программа, которая проверяет на наличие обновления к другой программе и загружает их;
Для примера я написал пустую программу и её "обновлённую" версию:
Скачать(1 ([Ссылки могут видеть только зарегистрированные и активированные пользователи]*********/fd27928),2 ([Ссылки могут видеть только зарегистрированные и активированные пользователи]),3 ([Ссылки могут видеть только зарегистрированные и активированные пользователи]),4 ([Ссылки могут видеть только зарегистрированные и активированные пользователи]),5 ([Ссылки могут видеть только зарегистрированные и активированные пользователи]));
virustotal(1 ([Ссылки могут видеть только зарегистрированные и активированные пользователи] a7116ac824ec0047311d82332bf0a-1321639442),2 ([Ссылки могут видеть только зарегистрированные и активированные пользователи] aca220fcb5f05871c23e46dfec98f-1321639704));
Создаём в папке с нашим Updater'ом файл "version.txt", где прописываем версию вашей программы. Например:
1.0.0.0
На сервере создаём точно такой же файл;
Запаковываем на сервер "обновленную" версию файла, который вы скачали, в архив "program.rar" и закидываем на сервер;
Если все пункты проделаны, можно переходить к написанию кода.
Теперь мы приступаем к написанию кода.
Запускаем делфи;
Кидаем на форму один компонент "Button" из вкладки "Standart":
[Ссылки могут видеть только зарегистрированные и активированные пользователи]
Кидаем на форму один компонент IdHTTP из вкладки "Indy Clients":
[Ссылки могут видеть только зарегистрированные и активированные пользователи]
Создаем обработчик событий OnClick на компоненте Button(два раза кликаем по Button'у);
Теперь нам нужно написать исполняемый код. Но для этого надо знать, что писать:
Для начала, обьявим переменные типов TId[Ссылки могут видеть только зарегистрированные и активированные пользователи] TFileStream, String и TStringList:
var
[Ссылки могут видеть только зарегистрированные и активированные пользователи]
Response:TFileStream;
s:string;
Version:TStringList;
Теперь создадим TIdHTTP и TStringList:
[Ссылки могут видеть только зарегистрированные и активированные пользователи](nil);
Version:=TStringList.Create;
Теперь отправим Get запрос на адрес, по которому на сервере лежит файл "version.txt", подгружая Response в переменную "s":
s:=[Ссылки могут видеть только зарегистрированные и активированные пользователи]('[Ссылки могут видеть только зарегистрированные и активированные пользователи]');
Теперь подгрузим содержимое файла "version.txt", который находится в папке с Updater'ом, в переменную "Version":
Version.LoadFromFile('version.txt');
Теперь проверим на наличие теста из переменной "s" в переменной "Version" и если текст присутствует, то выдаём окошко с сообщением:
Обновления не обнаружено. Текущая версия программы - последняя
Если же текст отсутствует, тогда выдаём окошко с сообщением:
Обнаружено обновление. Сейчас начнётся загрузка новой версии программы.
Создаём TFileStream и отправляем Get запрос на адрес, по которому на сервере лежит архив с новой версией программы, подгружая Response в переменную "Response"(Собственно, предыдущее действие есть загрузкой файла с сервера на компьютер) Добавляем текст из переменной "s" в переменную "Version" и сохраняем её в файл "version.txt":
if Pos(s,Version.Text)<>0 then
begin
ShowMessage('Обновления не обнаружено. Текущая версия программы - последняя')
end
else
begin
ShowMessage('Обнаружено обновление. Сейчас начнётся загрузка новой версии программы.');
Response:=TFileStream.Create('program.rar',fmCreat e);
[Ссылки могут видеть только зарегистрированные и активированные пользователи]('[Ссылки могут видеть только зарегистрированные и активированные пользователи]',Response);
Version.Add(s);
Version.SaveToFile('version.txt');
end;
Ну и под конец очищаем переменные:
[Ссылки могут видеть только зарегистрированные и активированные пользователи]
Version.Free;
Полный код процедуры нажатия на кнопку:
procedure TForm1.Button1Click(Sender: TObject);
var
[Ссылки могут видеть только зарегистрированные и активированные пользователи]
Response:TFileStream;
s:string;
Version:TStringList;
begin
[Ссылки могут видеть только зарегистрированные и активированные пользователи](nil);
Version:=TStringList.Create;
try
s:=[Ссылки могут видеть только зарегистрированные и активированные пользователи]('[Ссылки могут видеть только зарегистрированные и активированные пользователи]');
Version.LoadFromFile('version.txt');
if Pos(s,Version.Text)<>0 then
begin
ShowMessage('Обновления не обнаружено. Текущая версия программы - последняя')
end
else
begin
ShowMessage('Обнаружено обновление. Сейчас начнётся загрузка новой версии программы.');
Response:=TFileStream.Create('program.rar',fmCreat e);
[Ссылки могут видеть только зарегистрированные и активированные пользователи]('[Ссылки могут видеть только зарегистрированные и активированные пользователи]',Response);
Version.Add(s);
Version.SaveToFile('version.txt');
end;
finally
[Ссылки могут видеть только зарегистрированные и активированные пользователи]
Version.Free;
end;
end;
Чтобы проверить работоспособность программы нужно запустить программу, нажать на кнопку, потом изменить файл "version.txt" на сервере и нажать на кнопку ещё раз.
Теперь, когда мы закончили написание программы, запускаем программу и смотрим, что получилось.
Скачать исходник(1 ([Ссылки могут видеть только зарегистрированные и активированные пользователи]*********/fd27956),2 ([Ссылки могут видеть только зарегистрированные и активированные пользователи]),3 ([Ссылки могут видеть только зарегистрированные и активированные пользователи]),4 ([Ссылки могут видеть только зарегистрированные и активированные пользователи]),5 ([Ссылки могут видеть только зарегистрированные и активированные пользователи]));
Скачать скриншоты(1 ([Ссылки могут видеть только зарегистрированные и активированные пользователи]*********/fd27957),2 ([Ссылки могут видеть только зарегистрированные и активированные пользователи]),3 ([Ссылки могут видеть только зарегистрированные и активированные пользователи]),4 ([Ссылки могут видеть только зарегистрированные и активированные пользователи]),5 ([Ссылки могут видеть только зарегистрированные и активированные пользователи]));
Статья писалась VeTaL_UA для Zhyk.RU. При копировании указывать ссылку на данную тему.
В этой статье я попробую научить вас писать Updater для своей программы.
Что нам нужно для работы:
Delphi любой версии. Ссылки на скачку:
Delphi 7(deposit ([Ссылки могут видеть только зарегистрированные и активированные пользователи]),torrent ([Ссылки могут видеть только зарегистрированные и активированные пользователи]));
Delphi 2010(deposit ([Ссылки могут видеть только зарегистрированные и активированные пользователи]),torrent ([Ссылки могут видеть только зарегистрированные и активированные пользователи]));
Delphi XE(deposit ([Ссылки могут видеть только зарегистрированные и активированные пользователи]),torrent ([Ссылки могут видеть только зарегистрированные и активированные пользователи]));
Cайт, созданный с помощью конструктора ucoz ([Ссылки могут видеть только зарегистрированные и активированные пользователи]);
Желание;
Ну что же, если все пункты присутствуют можно начать.
Updater - это вспомогательная программа, которая проверяет на наличие обновления к другой программе и загружает их;
Для примера я написал пустую программу и её "обновлённую" версию:
Скачать(1 ([Ссылки могут видеть только зарегистрированные и активированные пользователи]*********/fd27928),2 ([Ссылки могут видеть только зарегистрированные и активированные пользователи]),3 ([Ссылки могут видеть только зарегистрированные и активированные пользователи]),4 ([Ссылки могут видеть только зарегистрированные и активированные пользователи]),5 ([Ссылки могут видеть только зарегистрированные и активированные пользователи]));
virustotal(1 ([Ссылки могут видеть только зарегистрированные и активированные пользователи] a7116ac824ec0047311d82332bf0a-1321639442),2 ([Ссылки могут видеть только зарегистрированные и активированные пользователи] aca220fcb5f05871c23e46dfec98f-1321639704));
Создаём в папке с нашим Updater'ом файл "version.txt", где прописываем версию вашей программы. Например:
1.0.0.0
На сервере создаём точно такой же файл;
Запаковываем на сервер "обновленную" версию файла, который вы скачали, в архив "program.rar" и закидываем на сервер;
Если все пункты проделаны, можно переходить к написанию кода.
Теперь мы приступаем к написанию кода.
Запускаем делфи;
Кидаем на форму один компонент "Button" из вкладки "Standart":
[Ссылки могут видеть только зарегистрированные и активированные пользователи]
Кидаем на форму один компонент IdHTTP из вкладки "Indy Clients":
[Ссылки могут видеть только зарегистрированные и активированные пользователи]
Создаем обработчик событий OnClick на компоненте Button(два раза кликаем по Button'у);
Теперь нам нужно написать исполняемый код. Но для этого надо знать, что писать:
Для начала, обьявим переменные типов TId[Ссылки могут видеть только зарегистрированные и активированные пользователи] TFileStream, String и TStringList:
var
[Ссылки могут видеть только зарегистрированные и активированные пользователи]
Response:TFileStream;
s:string;
Version:TStringList;
Теперь создадим TIdHTTP и TStringList:
[Ссылки могут видеть только зарегистрированные и активированные пользователи](nil);
Version:=TStringList.Create;
Теперь отправим Get запрос на адрес, по которому на сервере лежит файл "version.txt", подгружая Response в переменную "s":
s:=[Ссылки могут видеть только зарегистрированные и активированные пользователи]('[Ссылки могут видеть только зарегистрированные и активированные пользователи]');
Теперь подгрузим содержимое файла "version.txt", который находится в папке с Updater'ом, в переменную "Version":
Version.LoadFromFile('version.txt');
Теперь проверим на наличие теста из переменной "s" в переменной "Version" и если текст присутствует, то выдаём окошко с сообщением:
Обновления не обнаружено. Текущая версия программы - последняя
Если же текст отсутствует, тогда выдаём окошко с сообщением:
Обнаружено обновление. Сейчас начнётся загрузка новой версии программы.
Создаём TFileStream и отправляем Get запрос на адрес, по которому на сервере лежит архив с новой версией программы, подгружая Response в переменную "Response"(Собственно, предыдущее действие есть загрузкой файла с сервера на компьютер) Добавляем текст из переменной "s" в переменную "Version" и сохраняем её в файл "version.txt":
if Pos(s,Version.Text)<>0 then
begin
ShowMessage('Обновления не обнаружено. Текущая версия программы - последняя')
end
else
begin
ShowMessage('Обнаружено обновление. Сейчас начнётся загрузка новой версии программы.');
Response:=TFileStream.Create('program.rar',fmCreat e);
[Ссылки могут видеть только зарегистрированные и активированные пользователи]('[Ссылки могут видеть только зарегистрированные и активированные пользователи]',Response);
Version.Add(s);
Version.SaveToFile('version.txt');
end;
Ну и под конец очищаем переменные:
[Ссылки могут видеть только зарегистрированные и активированные пользователи]
Version.Free;
Полный код процедуры нажатия на кнопку:
procedure TForm1.Button1Click(Sender: TObject);
var
[Ссылки могут видеть только зарегистрированные и активированные пользователи]
Response:TFileStream;
s:string;
Version:TStringList;
begin
[Ссылки могут видеть только зарегистрированные и активированные пользователи](nil);
Version:=TStringList.Create;
try
s:=[Ссылки могут видеть только зарегистрированные и активированные пользователи]('[Ссылки могут видеть только зарегистрированные и активированные пользователи]');
Version.LoadFromFile('version.txt');
if Pos(s,Version.Text)<>0 then
begin
ShowMessage('Обновления не обнаружено. Текущая версия программы - последняя')
end
else
begin
ShowMessage('Обнаружено обновление. Сейчас начнётся загрузка новой версии программы.');
Response:=TFileStream.Create('program.rar',fmCreat e);
[Ссылки могут видеть только зарегистрированные и активированные пользователи]('[Ссылки могут видеть только зарегистрированные и активированные пользователи]',Response);
Version.Add(s);
Version.SaveToFile('version.txt');
end;
finally
[Ссылки могут видеть только зарегистрированные и активированные пользователи]
Version.Free;
end;
end;
Чтобы проверить работоспособность программы нужно запустить программу, нажать на кнопку, потом изменить файл "version.txt" на сервере и нажать на кнопку ещё раз.
Теперь, когда мы закончили написание программы, запускаем программу и смотрим, что получилось.
Скачать исходник(1 ([Ссылки могут видеть только зарегистрированные и активированные пользователи]*********/fd27956),2 ([Ссылки могут видеть только зарегистрированные и активированные пользователи]),3 ([Ссылки могут видеть только зарегистрированные и активированные пользователи]),4 ([Ссылки могут видеть только зарегистрированные и активированные пользователи]),5 ([Ссылки могут видеть только зарегистрированные и активированные пользователи]));
Скачать скриншоты(1 ([Ссылки могут видеть только зарегистрированные и активированные пользователи]*********/fd27957),2 ([Ссылки могут видеть только зарегистрированные и активированные пользователи]),3 ([Ссылки могут видеть только зарегистрированные и активированные пользователи]),4 ([Ссылки могут видеть только зарегистрированные и активированные пользователи]),5 ([Ссылки могут видеть только зарегистрированные и активированные пользователи]));
Статья писалась VeTaL_UA для Zhyk.RU. При копировании указывать ссылку на данную тему.