Сделать обновление программы delphi

Здравствуйте, в этой стать, я хотел бы рассказать, как я в своих проектах делаю поддержку обновлений программы (выдача ссылки на новую версию программы). Кроме обновления программы (выдача ссылки на скачку новой версии программы), я расскажу, как именно сделать проверку на наличие новой версии программы.

У кого-то есть свои может примеры, свои алгоритмы, но я расскажу какой прием именно я применяю. Что нам понадобится для этого — нам понадобится какой-нибудь фтп-сервер, где будет храниться наша обновленная версия программы, а также информация о текущей версии программы.

Это может быть не обязательно фтп-сервер, это может быть какой-нибудь файлообменник, но на все эти файлы (программу обновленную и файл с версией программы) обязательно должны быть постоянные ссылки. Если есть фтп-сервер, то на нем необязательно должны быть постоянные ссылки, там можно создать папку и просто сканировать ее на файлы, которые там есть.

Тем более, если кто-то занимается серьезно разработкой программного обеспечения и распространяет его, то наверняка должен быть у данного разработчика сайт, а вместе с ним и фтп, так что для обновлений я думаю Вам не жаль будет 50 мб свободного места на Вашем фтп-сервере, а то и меньше. Далее мы создаем на нашем фтп-сервере папку update, например, в которой будет находиться текстовый файл и сама обновленная программа (файл программы с последней версии).

обновление прошивки delphi

В самом текстовом файле у нас будет храниться текущая версия нашей программы, кроме этого в одном текстовом файле, если у Вас несколько программ, в которых необходимо сделать обновление программы, можно хранить версии для всех Ваших программ. После того, как у нас создана папка на фтп-сервере и там подготовлен файл, где хранятся наши версии программ, нам необходимо записать туда текущую версию программа в данный текстовый файл. После этого в нашей программе необходимо также написать версию программы, например записать в какой-нибудь TLabel, который находится во вкладке о программе и на нем будет написана текущая версия программы. Можно хранить версию в программе в каком-нибудь текстовом файле, в ini-файле, в реестре, без разницы, кому как удобно это делать.

В итоге у нас получается следующее: есть программа, на фтп-сервере есть текстовый файл, в котором хранится текущая версия программы, например 1.0.1, в самой программе (в реестре, в ini-файле) также записана текущая версия программы — 1.0.1. Что мы делаем дальше, дальше мы добавляем пункт меню или кнопку в программу, что-то наподобии — «Проверка обновлений» и по нажатию на эту кнопку мы будем сверять версию, что находится на сервере, с версией, которая находится в программе, если они совпадают, то выводим сообщение о том, что у Вас самая новая версия программы, если они не совпадают, то выводим сообщение о том, что появилась новая версия программы и показываем ссылку на скачку, либо говорим о том, что можно скачать на сайте разработчика новую версию программы. Насчет ссылки на программу, можно ее сразу вшить в программу, если делать ее постоянной, например вот такой http://site/update/program.exe, то есть на сервере придется просто заменять exe файл программы, а ссылка у нас будет постоянной, можно просканировать папку на фтп-сервере на наличие exe-файлов и выдать тот файл, который там находится, но в данном случае мы сделаем как постоянная ссылка на файл программы.

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

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

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

Для получения версии программы на фтп-сервере мы будем использовать компонент TIdHTTP, кроме этого нам понадобится кнопка TButton, по нажатию на которую и будет производиться проверка обновлений. Что происходит с программами, которые у пользователей. Допустим, у нас на сервере записана версия программы 1.0.1, в программе также записана версия программы 1.0.1, мы выпускаем новую версию программы, в самой программе мы меняем версию программы (в текстовом файле, в TLabel, просто записать как обычной константой), например, на 1.0.2, на сервере делаем тоже самое, в текстовом файле мы ставим 1.0.2. Далее у пользователя, у которого версия программы 1.0.1, он нажимает на кнопку «Проверить обновление», сверяются версии на фтп-сервере и в программе, естественно они не совпадают и пользователю предлагают скачать новую версию программы.

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

procedure TForm1.Button1Click(Sender: TObject); var version:WideString; begin try version:=IdHTTP1.Get(‘https://zaokomtek.ru/update/version.txt’); if version=Label1.Caption then begin Application.MessageBox(‘У Вас самая новая версия программы’,’Внимание’,MB_OK); end else begin Application.MessageBox(‘Появилась новая версия программы, ее можно скачать’+#13#10+’https://zaokomtek.ru/update/project.exe’,’Внимание’,MB_OK); end; except on e:Exception do //-//-//-//-//-// end; end;

Это тестовый пример, Вы можете изменить в программе версию программы и увидите, что Вам покажет сообщение о том, что есть новая версия программы, а это уже гарантирует о том, что мы сделали все верно и что обновление нашей программы будем работать правильно. Так что делайте поддержку обновлений в Ваших проектах, экономьте время пользователей Ваших разработок.

Читайте также:
Энтера отзывы о программе

Вообщем как-то так я делаю поддержку обновлений в своих программах, вроде бы меня все устраивает.

Хочу заметить, что в настоящее время очень популярна sms рассылка, которая помогает донести до Ваших клиентов, пользователей какие-то сведения за короткий промежуток времени. Так вот sms маркетинг поможет быстро оповести Ваших покупателей, поставщиков о чем-то за короткий промежуток времени, так что экономьте свое время.

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

Как сделать автоматическое обновление клиента онлайн-игры

Как сделать автоматическое обновление клиента онлайн-игры

2018-09-13 в 15:24, admin , рубрики: Delphi, автообновление, Программирование, разработка игр

В этой статье я расскажу о том, как я сделал систему автообновления клиентской онлайн-игры. Ссылка на исходники (Delphi) в конце статьи. На самом деле такую фичу я реализовал в двух своих играх, и если первый блин вышел немного комом (в игре Spectromancer), то вторая реализация получилась весьма удобной и эффективной. Это моя первая статья на Хабре, так что сильно не бейте, а лучше укажите на недостатки в комментариях 🙂

Алгоритм обновления игры

  • Проверка версии на необходимость обновления.
  • Скачивание списка файлов актуальной версии.
  • Скачивание новых или изменённых файлов во временную папку.
  • Установка обновления — приведение файлов установленного клиента в соответствие со списком.
  • Запуск обновлённого клиента.

Проверка версии

Первым делом при запуске клиент спрашивает у сервера номер актуальной версии (X) и номер минимально допустимой без обновления (Y). Если версия клиента не ниже Y, то обновление не требуется, в противном случае клиент запускает утилиту обновления «GetNewVersion.exe X», а сам завершает работу.

Как видим, номер версии передаётся параметром — это позволяет при желании обновить игру до любой доступной на сервере версии, и даже понизить её. Если параметр не передать — утилита сама запросит у сервера номер актуальной версии. Номер версии — это просто целое число, схема нумерации может быть любой, например у меня версия 1.12 соответствует номеру 1120.

Ответ от сервера не приходит мгновенно, а до его получения мы не можем создать окно игры, ведь возможно придётся его тут же закрыть, а непонятные мерцания на экране — это совсем не то, что нам нужно. Время ожидания ответа надо бы чем-то занять, и клиент занимает его загрузкой/распаковкой наиболее тяжелых JPEG’ов. Слишком долго ждать тоже нельзя: игрок запустил игру — а на экране ничего не происходит, непорядок. Поэтому если в течение 1.0 сек. ответ от сервера так и не поступил — загрузка игры продолжается в обычном порядке. В этом нет ничего страшного: как только игрок попытается залогиниться на сервер, он получит сообщение о необходимости обновить клиент, либо о том, что сервер недоступен.

Читайте также:
Эндоскоп для Андроид какая программа

Скачивание списка файлов

Зная номер версии, утилита обновления скачивает список файлов по адресу: [base_ur]>/[версия]/filelist
Это просто список файлов в формате CSV с указанием контрольных сумм, а также размеров в сжатом и несжатом виде, каждая строчка выглядит в нём примерно так:
18*Priest.tga;1053151921D9;91719;107372
Здесь «18*» означает, что 18 символов в имени файла такие же как и у предыдущего файла. Поскольку файлы обычно идут в алфафитном порядке, а пути могут быть длинными — это существенно экономит размер файла-списка. Для веб-сервера, на котором не включена компрессия, это означает, что файл скачается быстрее и обновление начнётся раньше.

Скачивание новых или изменённых файлов

Модуль обновления для программы. [Delphi 7/10]

Всем привет, довольно продолжительное время сайт не пополнялся новым материалом, я решил добавить на сайт, один свой модуль обновления, написанный на delphi.

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

vg

  • Кнопка «Проверить обновления» определяет размер файла, так-же выдает информацию о новой версии, и выводит лог изменений, код полностью с комментариями, так что запутаться сложно.
  • Прогресс бар работает, и выдает информацию о статусе загрузки в реальном времени.
  • Соответственно кнопка скачать, скачивает файл, по заданной в коде ссылке.
  • Так-же есть маленькая проверка, перед скачиванием обновления, существует ли файл в директории, если да, программа нас предупредит, что файл будет заменен на новый, и идет следующая проверка, программа сверяет свою версию, с той которая лежит на сервере, ну соответственно если она ниже, то файл скачивается, и наоборот.

Если есть какие-то вопросы, задавайте их в комментарии, в скором времени будут еще статьи, на подобную тему.

Скачать архив с исходником: Скачать

#open source #delphi #исходныйкод

Понравилась статья ? Поделись ей:

  • Нажмите, чтобы поделиться на Twitter (Открывается в новом окне)
  • Нажмите, чтобы открыть на Facebook (Открывается в новом окне)
  • Ещё
  • Послать ссылку другу по электронной почте (Открывается в новом окне)
  • Нажмите для печати (Открывается в новом окне)
  • Нажмите, чтобы поделиться на LinkedIn (Открывается в новом окне)
  • Нажмите, чтобы поделиться на Reddit (Открывается в новом окне)
  • Нажмите, чтобы поделиться записями на Tumblr (Открывается в новом окне)
  • Нажмите, чтобы поделиться записями на Pinterest (Открывается в новом окне)
  • Нажмите, чтобы поделиться записями на Pocket (Открывается в новом окне)

Источник: freeexpa.wordpress.com

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