Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Delphi программирование > Общие вопросы Delphi
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 12.12.2011, 23:28   #1
dubailand
Пользователь
 
Регистрация: 16.01.2011
Сообщений: 65
По умолчанию Автоматическое обновление программы

Собственно сабж. Нет времени копать кучу литературы...как сделать обновление и что для это нужно???
dubailand вне форума Ответить с цитированием
Старый 12.12.2011, 23:41   #2
kettanaito
Веб-дизайнер
Форумчанин
 
Аватар для kettanaito
 
Регистрация: 11.08.2011
Сообщений: 305
По умолчанию

Я делал через idHTTP. Получаешь файл обновлений с сервера:
Код:
var ustream:TMemoryStream;
begin
ustream:=TMemoryStream.Create;
idHttp.Get('http://mysite.ru/update.xml',ustream);
xml.LoadFromStream(ustream); // дальше анализируешь и скачиваешь файлы, путь которых записан в узлах XML
ustream.Free;
end;
Скачивание файлов также через idHttp.Get;

Последний раз редактировалось kettanaito; 12.12.2011 в 23:44.
kettanaito вне форума Ответить с цитированием
Старый 13.12.2011, 08:58   #3
dubailand
Пользователь
 
Регистрация: 16.01.2011
Сообщений: 65
По умолчанию

Нашел в одной из тем такой код:
Код:
procedure TForm1.Button1Click(Sender: TObject);
var
v:string;
begin
v:=HTTP.Get('http://адрес вашего сайта/update/version.txt');
if v=version.Caption then
showmessage('Вы используете последнюю версию программы!')
else
begin
ftp.Connect(true);
if ftp.connected then
begin
ftp.ChangeDir('update');
ftp.Get('Project.exe',extractfilepath(application.ExeName)+'\project.exe',true);
end;
ftp.Disconnect;
showmessage('ok');
end;

end;

end.

Все работает до места скачивания обновленной проги, вылазит что не может изменить директорию, вроде все сделал правильно. Что делать??
dubailand вне форума Ответить с цитированием
Старый 13.12.2011, 09:10   #4
TorrentTor
Форумчанин
 
Аватар для TorrentTor
 
Регистрация: 02.11.2011
Сообщений: 105
По умолчанию

Код:
(application.ExeName)+'\project.exe'
не слишком страшный путь выходит?
TorrentTor вне форума Ответить с цитированием
Старый 13.12.2011, 09:21   #5
dubailand
Пользователь
 
Регистрация: 16.01.2011
Сообщений: 65
По умолчанию

Цитата:
не слишком страшный путь выходит?
А как надо??? я ж дуб дубом в этом. помоги...
dubailand вне форума Ответить с цитированием
Старый 13.12.2011, 14:31   #6
FaTaL
Участник клуба
 
Аватар для FaTaL
 
Регистрация: 09.11.2007
Сообщений: 1,761
По умолчанию

Программа сама себя не даст заменить когда она запущена. Лучше в программе своей скачать файл, а потом уже закрыть свою программу, заменить ЕХЕ-шник и запустить программу снова. А вот тут то уже самое интересное, либо ВАТ-ником делать замену ехе, либо например из DLL, которая вызывается стандартным виндовым загрузчиком RUNDLL32.exe
FaTaL вне форума Ответить с цитированием
Старый 13.12.2011, 15:19   #7
IliaIT
Форумчанин
 
Аватар для IliaIT
 
Регистрация: 17.03.2009
Сообщений: 977
По умолчанию

можно ещё перед закрытием программы которую обновляем запустить скаченный экзешник . а из него уже сделать обновление нужных компонентов и основной программы, затем его закрыть и запустить основную программу. (в основной проге можно сделать проверку и удалять автоапдатер если это конечно необходимо.) есть пример, правда код писал как придётся хватая готовые куски программ с инета.
Вложения
Тип файла: rar 1.rar (6.4 Кб, 174 просмотров)
Интуитивно понятный интерфейс - это такой интерфейс, для работы с которым нужна недюжинная интуиция.
IliaIT вне форума Ответить с цитированием
Старый 13.12.2011, 19:54   #8
kettanaito
Веб-дизайнер
Форумчанин
 
Аватар для kettanaito
 
Регистрация: 11.08.2011
Сообщений: 305
По умолчанию

Создайте отдельное приложение отвечающее за обновление. Вызвать его из главной программы - не проблема, обновить открытый EXE - не проблема (закрываете процесс, скачиваете и открываете снова). На мой взгляд самый простой способ.
kettanaito вне форума Ответить с цитированием
Старый 13.12.2011, 21:14   #9
GunSmoker
Старожил
 
Регистрация: 13.08.2009
Сообщений: 2,581
По умолчанию

Цитата:
Сообщение от dubailand Посмотреть сообщение
Нет времени копать кучу литературы...как сделать обновление и что для это нужно???
Нужно 50 евро.
http://www.tmssoftware.com/site/wupdate.asp
Опытный программист на C++ легко решает любые не существующие в Паскале проблемы.
GunSmoker вне форума Ответить с цитированием
Старый 02.01.2015, 12:20   #10
Shinobi3456
 
Регистрация: 03.09.2012
Сообщений: 7
По умолчанию

Автоматическое обновление можно реализовать следующим образом 1.Запускается exe который проверяет версию программы
2. Верия новая есть значит старую, преименоваем и дописывае к имени old
3. Начинаем качать новую версию
4. Получаем md5-хэш скачаного файла и сверяем с эталоном записанным на сервере
5. После проверки если все нормально удаляем олд и запускаем скачаный, нет удаляем скачаный и откатываем олд и сообщаем админам.
В общем подробнее схема рассмотрена тут http://myshinobi.ru/kak-sdelat-obnov...mmy-na-delphi/
Shinobi3456 вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Автоматическое обновление программы Paul Hindenburg Работа с сетью в Delphi 23 06.09.2011 15:51
Автоматическое обновление ogololobov2009 Microsoft Office Excel 1 27.01.2011 19:19
Автоматическое обновление программы. Casper-SC Общие вопросы .NET 0 22.05.2010 20:41
Автоматическое обновление вспл.списка. stas77 Microsoft Office Excel 16 27.10.2009 11:39
Автоматическое обновление ссылок Alex19789 Microsoft Office Excel 0 05.10.2009 10:24