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

Вопросы программирования и использования среды Lazarus.

Модератор: Модераторы

Re: Обновление своей программы

Сообщение mrkaban » 28.05.2016 13:12:07

uses
Classes, SysUtils, FileUtil, PrintersDlgs, Forms, Controls, Graphics, Dialogs,
Menus, Grids, StdCtrls, About, LCLType, ShellApi;

IdHTTP1 взял из примера в интернете
mrkaban
новенький
 
Сообщения: 55
Зарегистрирован: 28.05.2016 09:48:18

Re: Обновление своей программы

Сообщение Ichthyander » 28.05.2016 13:15:55

К примеру, я использую простой текстовый файл на сайте программы для подгрузки текста, который отображается в статусной строке программы.
Код: Выделить всё
procedure TFrmMain.LoadInfoBar;
var
  AStrings: TStringList;
  i: Integer;
begin
  AStrings:=TStringList.Create;
  if HttpGetText('http://whic.ru/infodir/sttsbr.'+str_CurrentLangExt+'.txt', '', AStrings) then
    for i:=0 to 2 do
      if AStrings.Count>=(i+1)*3 then
      begin
        SttsBrInfo.Panels[i].Text:=AStrings[i*3];
        FinfoBarDescr[i]:=AStrings[i*3+1];
        FInfoBarUrl[i]:=AStrings[i*3+2];
      end;
  AStrings.Free
end;

HttpGetText - функция Synapse для загрузки файла из интернета, CurrentLangExt - в моем случае под каким языком запущена программа (я использую два файла для двух языков: английский и русский). Дальше в процедуре просто рассовываю строки из файла по панелькам статусной строки

Добавлено спустя 3 минуты 33 секунды:
Для работы с сетью рекомендую Synapse: https://sourceforge.net/p/synalist/code ... ree/trunk/ / http://synapse.ararat.cz/doku.php/download
Модуль HTTPSend
Аватара пользователя
Ichthyander
энтузиаст
 
Сообщения: 698
Зарегистрирован: 04.04.2007 08:32:43
Откуда: Астрахань

Re: Обновление своей программы

Сообщение pupsik » 28.05.2016 13:20:08

https://www.google.com.ua/webhp?sourceid=chrome-instant&ion=1&espv=2&ie=UTF-8#q=%D0%BE%D0%B1%D0%BD%D0%BE%D0%B2%D0%BB%D0%B5%D0%BD%D0%B8%D0%B5%20%D0%BF%D1%80%D0%BE%D0%B3%D1%80%D0%B0%D0%BC%D0%BC%D1%8B%20%D0%B2%20delphi и пошла жара...
Хоть и плохой тон посылать в гугл но...
Есть ещё, для примера: http://wiki.freepascal.org/LazAutoUpdater. Плюс, в некоторых открытых программах, есть реализация обновления. Т.е. посмотреть как можно, было бы желание...
pupsik
энтузиаст
 
Сообщения: 1154
Зарегистрирован: 20.08.2014 16:20:13

Re: Обновление своей программы

Сообщение mrkaban » 28.05.2016 13:23:26

pupsik писал(а):https://www.google.com.ua/webhp?sourceid=chrome-instant&ion=1&espv=2&ie=UTF-8#q=%D0%BE%D0%B1%D0%BD%D0%BE%D0%B2%D0%BB%D0%B5%D0%BD%D0%B8%D0%B5%20%D0%BF%D1%80%D0%BE%D0%B3%D1%80%D0%B0%D0%BC%D0%BC%D1%8B%20%D0%B2%20delphi и пошла жара...
Хоть и плохой тон посылать в гугл но...
Есть ещё, для примера: http://wiki.freepascal.org/LazAutoUpdater. Плюс, в некоторых открытых программах, есть реализация обновления. Т.е. посмотреть как можно, было бы желание...


Был там уже, и я писал, что даже два готовых модуля находил, но ничего нормального не вышло.

LazAutoUpdater видел, но не разобрался как его использовать. Его ведь получается надо скачать и в директорию кинуть? Для меня инструкция показалась непонятной.
mrkaban
новенький
 
Сообщения: 55
Зарегистрирован: 28.05.2016 09:48:18

Re: Обновление своей программы

Сообщение Лекс Айрин » 28.05.2016 13:27:58

Ichthyander, может не стоит так резко нападать? Человек сразу сказал, что он только начинает изучать.

Ichthyander писал(а):Что Вы этим хотели получить? version=f? Почитайте как работать с ini файлами в Delphi/Lazarus.


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

Ichthyander писал(а):я использую synapse.


Не забывайте, что это лично ВАШЕ имхо. Возможно, синапс для него излишен.

Ichthyander писал(а):Тогда текст этого файла и будет версией файла. Но опять-таки и тут будет неправильным использовать строку напрямую.


все зависит от 1) как отформатирована строка
2) как проверять.

Я бы не стал сохранять как ХХ.ХХ.ХХ.ХХ
1) вы забыли, что ревизия занимает 4 разряда.
2) проще сделать это одним числом (ХХХХХХХХХХ). И я бы использовал не версию, а дату сборки/заливки файла. Ну или проверял бы ТОЛЬКО ревизию. Да и сам факт изменения данного файла говорит об смене текущей версии.
Аватара пользователя
Лекс Айрин
долгожитель
 
Сообщения: 5723
Зарегистрирован: 19.02.2013 16:54:51
Откуда: Волгоград

Re: Обновление своей программы

Сообщение mrkaban » 28.05.2016 13:33:40

спасибо большое Лекс Айрин.

Пожалуй я отложу этот вопрос и пойду дальше читать книжку Мансуров К.Т. Основы программирования в среде Lazarus, 2010, потом за другие возьмусь.
mrkaban
новенький
 
Сообщения: 55
Зарегистрирован: 28.05.2016 09:48:18

Re: Обновление своей программы

Сообщение Лекс Айрин » 28.05.2016 13:46:50

mrkaban, как раз наоборот, советую начинать с какого-нибудь среднего проекта. А книжки использовать как справочники.
Когда читаешь учебники может создастся впечатление, что усвоил материал, но это опасное заблуждение. Только практика написания и отладки программ позволит изучить язык.
Аватара пользователя
Лекс Айрин
долгожитель
 
Сообщения: 5723
Зарегистрирован: 19.02.2013 16:54:51
Откуда: Волгоград

Re: Обновление своей программы

Сообщение Лекс Айрин » 28.05.2016 14:01:09

mrkaban писал(а):LazAutoUpdater видел, но не разобрался как его использовать. Его ведь получается надо скачать и в директорию кинуть? Для меня инструкция показалась непонятной.

Судя по всему, все же придется установить синапс(( для установки требуется пакет pl_synapse
Аватара пользователя
Лекс Айрин
долгожитель
 
Сообщения: 5723
Зарегистрирован: 19.02.2013 16:54:51
Откуда: Волгоград

Re: Обновление своей программы

Сообщение Ichthyander » 28.05.2016 14:06:16

Лекс Айрин писал(а):Вообще-то он, на данном этапе, прав. Вначале стоит отладить механизм проверки версии, а потом уже накручивать ее сохранение на стороне клиента. Тем более, что это все может еще 100500 раз поменяться.

Да нет, как я понял он из самого файла уже хотел получить версию непосредственно, поэтому и написал
Лекс Айрин писал(а):
Ichthyander писал(а):я использую synapse.


Не забывайте, что это лично ВАШЕ имхо. Возможно, синапс для него излишен.

ВОзможно излишен, но это Ваше мнение ;) . Мнение это всегда как минимум личное ИМХО. Я изначально стал использовать synapse, помыкавшись со встроенными механизмами. Думаю, синапс достаточно прозрачен и понятен даже для новичков.
Лекс Айрин писал(а):
Ichthyander писал(а):Тогда текст этого файла и будет версией файла. Но опять-таки и тут будет неправильным использовать строку напрямую.


все зависит от 1) как отформатирована строка
2) как проверять.

Ну, в любом случае это будет непосредственно строка и просто сравнивать строки не лучшая затея, хотя можно для начала и так. Пусть так
Лекс Айрин писал(а):Я бы не стал сохранять как ХХ.ХХ.ХХ.ХХ
1) вы забыли, что ревизия занимает 4 разряда.
2) проще сделать это одним числом (ХХХХХХХХХХ). И я бы использовал не версию, а дату сборки/заливки файла. Ну или проверял бы ТОЛЬКО ревизию. Да и сам факт изменения данного файла говорит об смене текущей версии.

1) не, не забыл, не думаю, что номера превысят 255, но в данном случае - не суть.
2) может и проще. Просто я версию XX.XX.XX.XX извлекаю из номер сборки файла его и юзаю. Впрочем и его можно перевести в число. но я просто использую record, так удобней... мне.
Аватара пользователя
Ichthyander
энтузиаст
 
Сообщения: 698
Зарегистрирован: 04.04.2007 08:32:43
Откуда: Астрахань

Re: Обновление своей программы

Сообщение Ichthyander » 28.05.2016 14:08:27

pupsik писал(а):Есть ещё, для примера: http://wiki.freepascal.org/LazAutoUpdater. Плюс, в некоторых открытых программах, есть реализация обновления. Т.е. посмотреть как можно, было бы желание...

За ссылку спасибо! Изучу на досуге. Кто-нить юзал? Какие впечатления?
Аватара пользователя
Ichthyander
энтузиаст
 
Сообщения: 698
Зарегистрирован: 04.04.2007 08:32:43
Откуда: Астрахань

Re: Обновление своей программы

Сообщение slyubez » 28.05.2016 14:19:53

Недавно решал подобную задачу, но в Delphi и не через Инет (есть ЛВС). Сделал две программы - обновляшку (ставится через инсталлятор в Program Files) и запускатр. При щелчке по ярлыку программы запускается обновляшка, которая проверяет наличие в базе данных любых файлов новой версии программы (в том числе запускатра), и если они есть - копирует их, замещая старые файлы (при их наличии). При этом размещение запускатра и остальных файлов выбрано так, чтобы пользователь имел права доступа на эти файлы. Признаком текущей версии как раз является ини-файл, размещаемый в одном каталоге с запускатром и обновляемый при обновлении программы. Ну и на последнем этапе обновляшка запускает запускатр и сама закрывается. Вот как-то так.
slyubez
постоялец
 
Сообщения: 180
Зарегистрирован: 31.03.2015 08:44:07

Re: Обновление своей программы

Сообщение Лекс Айрин » 28.05.2016 14:21:36

Ichthyander писал(а):как я понял он из самого файла уже хотел получить версию непосредственно, поэтому и написал


бывает, но все же аккуратнее со словами...

Ichthyander писал(а):не думаю, что номера превысят 255, но в данном случае - не суть.

блокнот графомана
LexEditor
0.5.4.163


конечно, ревизия не 256, но третий разряд УЖЕ нужен. если не понять, что это косяк, то потом просто вылезет ошибка, когда ее не ожидаешь. И хорошо если это просто обнуление, а не вылет программы.
Аватара пользователя
Лекс Айрин
долгожитель
 
Сообщения: 5723
Зарегистрирован: 19.02.2013 16:54:51
Откуда: Волгоград

Re: Обновление своей программы

Сообщение Лекс Айрин » 28.05.2016 15:41:09

Ichthyander писал(а):Да что ж Вы так привязались :)


просто бывали в моей практике кадры. Причем, один из них и на этом форуме.
Ichthyander писал(а):Не вижу тут ни троллинга ни оскорбления


Не в этом месте. Если что, в личке объясню где.
Аватара пользователя
Лекс Айрин
долгожитель
 
Сообщения: 5723
Зарегистрирован: 19.02.2013 16:54:51
Откуда: Волгоград

Re: Обновление своей программы

Сообщение pupsik » 28.05.2016 15:57:04

Его ведь получается надо скачать и в директорию кинуть? Для меня инструкция показалась непонятной.
это компонент для работы с сайтом sourceforge.net. Сперва, если не ошибаюсь, установить пакет. А потом примеры посмотреть. Основываясь на нем можно сделать не только с sourceforge.

п.с.
во-о "завелись" и тролят почутке :mrgreen:
pupsik
энтузиаст
 
Сообщения: 1154
Зарегистрирован: 20.08.2014 16:20:13

Re: Обновление своей программы

Сообщение Sharfik » 28.05.2016 17:08:36

тему не читал.
ТС, если тебя устроит не код, а готовая программа которой просто передаешь номер билда и пару параметров, то могу скинуть.
Аватара пользователя
Sharfik
энтузиаст
 
Сообщения: 809
Зарегистрирован: 20.07.2013 01:04:30

Пред.След.

Вернуться в Lazarus

Кто сейчас на конференции

Сейчас этот форум просматривают: Google [Bot] и гости: 226

Рейтинг@Mail.ru