Delphi обновление программы самой себя

У меня программа автоматически проверяется на версию. Возможно ли такое, чтоб в случае новой версии она автоматически скачивала бы новую и заменялась на неё? Если да, то как? Подскажите, пожалуйста.

Ответы (3 шт):

Это, конечно же, возможно. Раз это вопрос новичка в Delphi, то постараюсь ответить доходчиво, как такое реализовать.

  • Для начала вам нужно завести хостинг или аккаунт на каком-л. облачном хранилище. Это необходимо для того, чтобы программа имела в сети «свой уголок», откуда могла бы проверять новую версию и самообновляться в случае появления новой. Лично я вам советую заводить именно хостинг, нежели пользоваться услугами «облаков», так как у этих облачных хранилищ очень ограничена пропускная способность канала, а если пользователей у вашей «программы» будет очень много, то аккаунт забанят из-за большого трафика. Пользуйтесь хостингом.
  • Далее вам надо создать на этом хостинге файлик, в котором будет лежать текущая(последняя) версия вашего «продукта». Например, 1.72.. И еще, конечно же, на хостинг надо поместить «свежую» версию вашего «продукта», чтобы можно было её скачать.
  • Далее в самой программе вы должны каждый раз при запуске проверять версию из того файла на хостинге, который содержит версию. В самой программе, естественно, должна быть константа, содержащая номер версии программы. Это можно сделать с помощью TIdHttp с панели IndyClients. Если версия больше, то качаем новую(расположена на нашем хостинге.
  • Качать новую версию лучше всего из «вспомогательной» програмки, прилагаемой к основному файлу вашего «приложения». В случае обнаружения новой версии запускаем updator и он уже все сам сделает.
  • Что будет делать апдейтор? Он, в случае обнаружения новой версии, будет закрывать основное «приложение», скачивать новое(Как? Это вам должно быть известно.) и копировать его вместо старого. Скачанный файл потом надо будет удалить.
Читайте также:
Sasplanet как обновить программу

Он поможет вам собирать пакеты обновлений, умеет обнаруживать обновления на вашем сервере, загружать их по FTP, HTTP, HTTPS, выводить информацию (вашу) об обновлении, подменять exe-шник, избавляя вас от заморочек с UAC-ом в Windows Vista/7.

Обновление программы Delphi

Источник: husl.ru

Delphi обновление программы самой себя

Подскажите как реализовать самообновление. Программа запускается, качает обновление и, по идее, переписывается поверх. Но прога запущена и не дает затереть исполняемый файл. Надо как-то закрыться, переписать и вновь запуститься что ли.

Участник клуба
Регистрация: 23.04.2009
Сообщений: 1,058
создай bat файл, перепеши сам себя, и удали bat
Если вам человек помог, не стесняйтесь говорить спасибо (весы под аватаром)
Programming.

Форумчанин
Регистрация: 13.03.2010
Сообщений: 198

With TProgrammersForum.Create do AddNewTopic(‘Title’,’Content. ‘);
Регистрация: 09.01.2008
Сообщений: 26,238

судя по всему, то, что предложил bitSoft — то, что надо. (не знаю, как там с платностью компоненты, но TMS грамотная и известная фирма.

Обновление прошивки тестера Delphi D-150 Китай для программы Автоком (Autocom)

хочу от себя добавить.

Программа запускается, качает обновление и, по идее, переписывается поверх. Но прога запущена и не дает затереть исполняемый файл. Надо как-то закрыться, переписать и вновь запуститься что ли.

если проблема только в том, чтобы заменить запущенный EXE файл, то решение через BAT файл отлично решит данную проблему. Либо, сделать это так, как это делают многие программы (Adobe Acrobat Reader, например) — в комплект программы входит независимый exe файл, например, update.exe. Программа запускает его для проверки обновления. Если обновление есть — то этот самый update.exe выкачивает обновление (с временным именем), закрывает запущенный основной файл, заменяет основной exeшник, и прекращает работу.

Читайте также:
Установить программу зум на компьютер

Источник: www.programmersforum.ru

Обновление самого себя

Есть исходник программы которая обновляет файлы из интернета, т.е. если встречается файл с таким же именем, но размер разный то заменяет его.
Вот сам вопрос как сделать чтобы и мой ехе обновлялся т.е. как мне вывести его из памяти, заменить и перезапустить.

11.08.2010, 15:41
Let Me Show You
Регистрация: 30.04.2010
Адрес: Северодвинск
Сообщения: 5,426
Вы сказали Спасибо: 4
Поблагодарили 725 раз(а) в 682 сообщениях
Версия Delphi: 7, XE5
Репутация: 59586
сделать еще один и назвать его updater.exe
11.08.2010, 16:13
Регистрация: 29.10.2009
Сообщения: 446
Вы сказали Спасибо: 0
Поблагодарили 5 раз(а) в 2 сообщениях
Репутация: 271

Как вариант,
В программе генерируется командный файл (*.cmd) и кладется возле программы. дальше программа запускает его и завершается.
В батнике следующий механизм. В начале пауза или ожидание завершения основной программы.Потом удаление старой версии, копирование новой и запуск новой. В самой программе, при старте всегда проверяешь, не лежит ли рядом с программой командный файл, если да, то удаляешь его.

11.08.2010, 19:44
Регистрация: 11.08.2010
Сообщения: 8
Вы сказали Спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 10
А можно по подробнее, как создать такой файл?
12.08.2010, 07:59
Регистрация: 29.10.2009
Сообщения: 446
Вы сказали Спасибо: 0
Поблагодарили 5 раз(а) в 2 сообщениях
Репутация: 271
Что конкретно тебе не понятно?
12.08.2010, 10:51
Регистрация: 11.08.2010
Сообщения: 8
Вы сказали Спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 10
я бы хотел увидеть пример.
12.08.2010, 11:24
Регистрация: 29.10.2009
Сообщения: 446
Вы сказали Спасибо: 0
Поблагодарили 5 раз(а) в 2 сообщениях
Репутация: 271

Готовое решение значит ждешь?
Вот кусок кода из проекта, писал его когда только начал вплотную изучать дельфи, должен помочь)

Последний раз редактировалось Asinkrit, 02.04.2011 в 20:20 .
13.08.2010, 10:38
Регистрация: 11.08.2010
Сообщения: 8
Вы сказали Спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 10

Читайте также:
Как остановить программу vba

У меня возникла проблема. Не работает процедура close; , при закрытий моей формы она всё равно остаёться, если хочу вручную закрыть то выдаёт ошибку.

Последний раз редактировалось ADM, 13.08.2010 в 11:22 .
13.08.2010, 17:04
Регистрация: 29.10.2009
Сообщения: 446
Вы сказали Спасибо: 0
Поблагодарили 5 раз(а) в 2 сообщениях
Репутация: 271
Я не телепат, что за ошибку выдает?
14.08.2010, 11:08
Регистрация: 11.08.2010
Сообщения: 8
Вы сказали Спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 10

ошибка просто связана с адрессом в памяти как я понял вот скрин

15.08.2010, 03:17
Регистрация: 29.10.2009
Сообщения: 446
Вы сказали Спасибо: 0
Поблагодарили 5 раз(а) в 2 сообщениях
Репутация: 271
Теперь код покажи, что ты понаписал.
04.09.2010, 10:33
Регистрация: 11.08.2010
Сообщения: 8
Вы сказали Спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 10
Вот кусок который как бы должен отвечать за обновление ехе:
04.09.2010, 18:33
Регистрация: 29.10.2009
Сообщения: 446
Вы сказали Спасибо: 0
Поблагодарили 5 раз(а) в 2 сообщениях
Репутация: 271
Close должен идти после метода ShellExecute.
04.09.2010, 22:25
Always hardcore!
Регистрация: 04.03.2009
Сообщения: 3,239
Вы сказали Спасибо: 150
Поблагодарили 139 раз(а) в 114 сообщениях
Версия Delphi: GCC/FPC/FASM
Репутация: 62149
Очередной апдейтер для Ладвы
Чем готовые решения не устроили (некоторые даже open-source есть)?
__________________
Оставайтесь хорошими людьми.
VK id2634397, ds [at] phoenix [dot] dj
05.09.2010, 04:24
Регистрация: 11.08.2010
Сообщения: 8
Вы сказали Спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 10

Так я их и использую, вот только само обновления как я понял здесь нет.
Переставил close всё равно такая ошибка.
Вот полностью вся процедура:

Источник: delphisources.ru

Рейтинг
( Пока оценок нет )
Загрузка ...
EFT-Soft.ru