Обновление своей программы
Модератор: Модераторы
uses
Classes, SysUtils, FileUtil, PrintersDlgs, Forms, Controls, Graphics, Dialogs,
Menus, Grids, StdCtrls, About, LCLType, ShellApi;
IdHTTP1 взял из примера в интернете
Classes, SysUtils, FileUtil, PrintersDlgs, Forms, Controls, Graphics, Dialogs,
Menus, Grids, StdCtrls, About, LCLType, ShellApi;
IdHTTP1 взял из примера в интернете
- Ichthyander
- энтузиаст
- Сообщения: 701
- Зарегистрирован: 04.04.2007 08:32:43
- Откуда: Астрахань
- Контактная информация:
К примеру, я использую простой текстовый файл на сайте программы для подгрузки текста, который отображается в статусной строке программы.
HttpGetText - функция Synapse для загрузки файла из интернета, CurrentLangExt - в моем случае под каким языком запущена программа (я использую два файла для двух языков: английский и русский). Дальше в процедуре просто рассовываю строки из файла по панелькам статусной строки
Добавлено спустя 3 минуты 33 секунды:
Для работы с сетью рекомендую Synapse: https://sourceforge.net/p/synalist/code ... ree/trunk/ / http://synapse.ararat.cz/doku.php/download
Модуль HTTPSend
Код: Выделить всё
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
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. Плюс, в некоторых открытых программах, есть реализация обновления. Т.е. посмотреть как можно, было бы желание...
Хоть и плохой тон посылать в гугл но...
Есть ещё, для примера: http://wiki.freepascal.org/LazAutoUpdater. Плюс, в некоторых открытых программах, есть реализация обновления. Т.е. посмотреть как можно, было бы желание...
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 видел, но не разобрался как его использовать. Его ведь получается надо скачать и в директорию кинуть? Для меня инструкция показалась непонятной.
- Лекс Айрин
- долгожитель
- Сообщения: 5723
- Зарегистрирован: 19.02.2013 16:54:51
- Откуда: Волгоград
- Контактная информация:
Ichthyander, может не стоит так резко нападать? Человек сразу сказал, что он только начинает изучать.
Вообще-то он, на данном этапе, прав. Вначале стоит отладить механизм проверки версии, а потом уже накручивать ее сохранение на стороне клиента. Тем более, что это все может еще 100500 раз поменяться.
Не забывайте, что это лично ВАШЕ имхо. Возможно, синапс для него излишен.
все зависит от 1) как отформатирована строка
2) как проверять.
Я бы не стал сохранять как ХХ.ХХ.ХХ.ХХ
1) вы забыли, что ревизия занимает 4 разряда.
2) проще сделать это одним числом (ХХХХХХХХХХ). И я бы использовал не версию, а дату сборки/заливки файла. Ну или проверял бы ТОЛЬКО ревизию. Да и сам факт изменения данного файла говорит об смене текущей версии.
Ichthyander писал(а):Что Вы этим хотели получить? version=f? Почитайте как работать с ini файлами в Delphi/Lazarus.
Вообще-то он, на данном этапе, прав. Вначале стоит отладить механизм проверки версии, а потом уже накручивать ее сохранение на стороне клиента. Тем более, что это все может еще 100500 раз поменяться.
Ichthyander писал(а):я использую synapse.
Не забывайте, что это лично ВАШЕ имхо. Возможно, синапс для него излишен.
Ichthyander писал(а):Тогда текст этого файла и будет версией файла. Но опять-таки и тут будет неправильным использовать строку напрямую.
все зависит от 1) как отформатирована строка
2) как проверять.
Я бы не стал сохранять как ХХ.ХХ.ХХ.ХХ
1) вы забыли, что ревизия занимает 4 разряда.
2) проще сделать это одним числом (ХХХХХХХХХХ). И я бы использовал не версию, а дату сборки/заливки файла. Ну или проверял бы ТОЛЬКО ревизию. Да и сам факт изменения данного файла говорит об смене текущей версии.
спасибо большое Лекс Айрин.
Пожалуй я отложу этот вопрос и пойду дальше читать книжку Мансуров К.Т. Основы программирования в среде Lazarus, 2010, потом за другие возьмусь.
Пожалуй я отложу этот вопрос и пойду дальше читать книжку Мансуров К.Т. Основы программирования в среде Lazarus, 2010, потом за другие возьмусь.
- Лекс Айрин
- долгожитель
- Сообщения: 5723
- Зарегистрирован: 19.02.2013 16:54:51
- Откуда: Волгоград
- Контактная информация:
mrkaban, как раз наоборот, советую начинать с какого-нибудь среднего проекта. А книжки использовать как справочники.
Когда читаешь учебники может создастся впечатление, что усвоил материал, но это опасное заблуждение. Только практика написания и отладки программ позволит изучить язык.
Когда читаешь учебники может создастся впечатление, что усвоил материал, но это опасное заблуждение. Только практика написания и отладки программ позволит изучить язык.
- Лекс Айрин
- долгожитель
- Сообщения: 5723
- Зарегистрирован: 19.02.2013 16:54:51
- Откуда: Волгоград
- Контактная информация:
mrkaban писал(а):LazAutoUpdater видел, но не разобрался как его использовать. Его ведь получается надо скачать и в директорию кинуть? Для меня инструкция показалась непонятной.
Судя по всему, все же придется установить синапс(( для установки требуется пакет pl_synapse
- Ichthyander
- энтузиаст
- Сообщения: 701
- Зарегистрирован: 04.04.2007 08:32:43
- Откуда: Астрахань
- Контактная информация:
Лекс Айрин писал(а):Вообще-то он, на данном этапе, прав. Вначале стоит отладить механизм проверки версии, а потом уже накручивать ее сохранение на стороне клиента. Тем более, что это все может еще 100500 раз поменяться.
Да нет, как я понял он из самого файла уже хотел получить версию непосредственно, поэтому и написал
Лекс Айрин писал(а):Ichthyander писал(а):я использую synapse.
Не забывайте, что это лично ВАШЕ имхо. Возможно, синапс для него излишен.
ВОзможно излишен, но это Ваше мнение
Лекс Айрин писал(а):Ichthyander писал(а):Тогда текст этого файла и будет версией файла. Но опять-таки и тут будет неправильным использовать строку напрямую.
все зависит от 1) как отформатирована строка
2) как проверять.
Ну, в любом случае это будет непосредственно строка и просто сравнивать строки не лучшая затея, хотя можно для начала и так. Пусть так
Лекс Айрин писал(а):Я бы не стал сохранять как ХХ.ХХ.ХХ.ХХ
1) вы забыли, что ревизия занимает 4 разряда.
2) проще сделать это одним числом (ХХХХХХХХХХ). И я бы использовал не версию, а дату сборки/заливки файла. Ну или проверял бы ТОЛЬКО ревизию. Да и сам факт изменения данного файла говорит об смене текущей версии.
1) не, не забыл, не думаю, что номера превысят 255, но в данном случае - не суть.
2) может и проще. Просто я версию XX.XX.XX.XX извлекаю из номер сборки файла его и юзаю. Впрочем и его можно перевести в число. но я просто использую record, так удобней... мне.
- Ichthyander
- энтузиаст
- Сообщения: 701
- Зарегистрирован: 04.04.2007 08:32:43
- Откуда: Астрахань
- Контактная информация:
pupsik писал(а):Есть ещё, для примера: http://wiki.freepascal.org/LazAutoUpdater. Плюс, в некоторых открытых программах, есть реализация обновления. Т.е. посмотреть как можно, было бы желание...
За ссылку спасибо! Изучу на досуге. Кто-нить юзал? Какие впечатления?
Недавно решал подобную задачу, но в Delphi и не через Инет (есть ЛВС). Сделал две программы - обновляшку (ставится через инсталлятор в Program Files) и запускатр. При щелчке по ярлыку программы запускается обновляшка, которая проверяет наличие в базе данных любых файлов новой версии программы (в том числе запускатра), и если они есть - копирует их, замещая старые файлы (при их наличии). При этом размещение запускатра и остальных файлов выбрано так, чтобы пользователь имел права доступа на эти файлы. Признаком текущей версии как раз является ини-файл, размещаемый в одном каталоге с запускатром и обновляемый при обновлении программы. Ну и на последнем этапе обновляшка запускает запускатр и сама закрывается. Вот как-то так.
- Лекс Айрин
- долгожитель
- Сообщения: 5723
- Зарегистрирован: 19.02.2013 16:54:51
- Откуда: Волгоград
- Контактная информация:
Ichthyander писал(а):как я понял он из самого файла уже хотел получить версию непосредственно, поэтому и написал
бывает, но все же аккуратнее со словами...
Ichthyander писал(а):не думаю, что номера превысят 255, но в данном случае - не суть.
блокнот графомана
LexEditor
0.5.4.163
конечно, ревизия не 256, но третий разряд УЖЕ нужен. если не понять, что это косяк, то потом просто вылезет ошибка, когда ее не ожидаешь. И хорошо если это просто обнуление, а не вылет программы.
- Лекс Айрин
- долгожитель
- Сообщения: 5723
- Зарегистрирован: 19.02.2013 16:54:51
- Откуда: Волгоград
- Контактная информация:
Ichthyander писал(а):Да что ж Вы так привязались
просто бывали в моей практике кадры. Причем, один из них и на этом форуме.
Ichthyander писал(а):Не вижу тут ни троллинга ни оскорбления
Не в этом месте. Если что, в личке объясню где.
это компонент для работы с сайтом sourceforge.net. Сперва, если не ошибаюсь, установить пакет. А потом примеры посмотреть. Основываясь на нем можно сделать не только с sourceforge.Его ведь получается надо скачать и в директорию кинуть? Для меня инструкция показалась непонятной.
п.с.
во-о "завелись" и тролят почутке
тему не читал.
ТС, если тебя устроит не код, а готовая программа которой просто передаешь номер билда и пару параметров, то могу скинуть.
ТС, если тебя устроит не код, а готовая программа которой просто передаешь номер билда и пару параметров, то могу скинуть.
