Обновление своей программы
Модератор: Модераторы
Обновление своей программы
Здравствуйте! Заранее прошу прощения за множество глупых вопросов! Я только начинаю изучать лазарус!
Помогите пожалуйста придумать код для проверки обновлений программы на сайте. Думаю сделать по нажатию на один из пунктов меню, будет проверяться наличие файла на сайте, например со следующей версией, вообще пытался реализовать проверку, мол в версии 1.1 будет искать на сайте файл версии 1.2. Понимаю, что глупо, но пытался хоть как то сделать.
Вполне пойдет уведомление, мол есть новая версия и скачать можно тут, и отправить на страницу программы.
Находил даже парочку готовых модулей обновления, но ничего не вышло. То, что сам пытался написать не буду даже показывать)) ибо это вообще бред сумасшедшего.
Помогите пожалуйста! Заранее благодарен!
Помогите пожалуйста придумать код для проверки обновлений программы на сайте. Думаю сделать по нажатию на один из пунктов меню, будет проверяться наличие файла на сайте, например со следующей версией, вообще пытался реализовать проверку, мол в версии 1.1 будет искать на сайте файл версии 1.2. Понимаю, что глупо, но пытался хоть как то сделать.
Вполне пойдет уведомление, мол есть новая версия и скачать можно тут, и отправить на страницу программы.
Находил даже парочку готовых модулей обновления, но ничего не вышло. То, что сам пытался написать не буду даже показывать)) ибо это вообще бред сумасшедшего.
Помогите пожалуйста! Заранее благодарен!
- Лекс Айрин
- долгожитель
- Сообщения: 5723
- Зарегистрирован: 19.02.2013 16:54:51
- Откуда: Волгоград
- Контактная информация:
mrkaban писал(а):мол в версии 1.1 будет искать на сайте файл версии 1.2.
а потом человек пропустит обновление (инета нет, не видел смысла) и обновление не пройдет. лучше уж вводить проверку на версию большую текущей не привязываясь конкретно к номеру. А вообще, можно на сайте ввести понятие текущей сборки. номер сборки либо зашить в название файла, либо в отдельный файл.
mrkaban писал(а):Вполне пойдет уведомление, мол есть новая версия и скачать можно тут, и отправить на страницу программы.
если уж есть доступ, то легко и скачать.
mrkaban писал(а):То, что сам пытался написать не буду даже показывать)) ибо это вообще бред сумасшедшего.
возможно, и не бред.
Думаю Вы правы. Помогите пожалуйста реализовать какой нибудь вариант, а то у меня вообще ничего не получилось нормального.
mrkaban писал(а):Находил даже парочку готовых модулей обновления, но ничего не вышло.
Каких? Ссылки? Ваш код, как вы прикручивали эти модули?
mrkaban писал(а): То, что сам пытался написать не буду даже показывать))
mrkaban писал(а):ничего не получилось нормального
Да уж покажите, может там всего пару строк подкрутить до идеала.
mrkaban писал(а):ибо это вообще бред сумасшедшего
Кто видел исконный код Фейсбука за голову хватались. А теперь вот поди - Цукерберг миллиардер.
mrkaban есть готовые компоненты по обновлению, модули по проверке версии программы (в т.ч. обновление). Найти всё это не составляет труда.
- у него идея заработала, а не код...Кто видел исконный код Фейсбука за голову хватались. А теперь вот поди - Цукерберг миллиардер.
- Лекс Айрин
- долгожитель
- Сообщения: 5723
- Зарегистрирован: 19.02.2013 16:54:51
- Откуда: Волгоград
- Контактная информация:
Если честно, то я об этом пока вообще не думал((( выложите хоть один свой вариант и посмотрим, возможно его удастся привести в нормальный вид.
- Ichthyander
- энтузиаст
- Сообщения: 701
- Зарегистрирован: 04.04.2007 08:32:43
- Откуда: Астрахань
- Контактная информация:
Можно так сделать: проверка номера версии программы с текущей версией. Версия сборки программы берется из версии файла, версия текущей сборки со своего сайта. К примеру, определенный файл, можно просто ini file с таким кусочкем текста
То есть[, например,] при запуске программа закачивает текстовый файл по ссылке http://official-site-of-the-software.ru/info/status.ini, откуда уже считывается информация о последнем релизе/сборке.
Ну а дальше, если есть желание можно реализовать скачивание файла по ссылке. Можно ее даже сделать одинаковой http://official-site-of-the-software.ru/download/your-soft.exe . Это подойдет, если не страшно, что утечет ссылка на программу(, к примеру, она бесплатная).
В случае платной программы надо усложнить процесс скачивания. Алгоритм проверки же текущей версии останется тот же.
Не знал о существовании готовых библиотек/компонент для этого дела. Можете скинуть ссылки?
Код: Выделить всё
[Current]
Version=1.1.1.100То есть[, например,] при запуске программа закачивает текстовый файл по ссылке http://official-site-of-the-software.ru/info/status.ini, откуда уже считывается информация о последнем релизе/сборке.
Ну а дальше, если есть желание можно реализовать скачивание файла по ссылке. Можно ее даже сделать одинаковой http://official-site-of-the-software.ru/download/your-soft.exe . Это подойдет, если не страшно, что утечет ссылка на программу(, к примеру, она бесплатная).
В случае платной программы надо усложнить процесс скачивания. Алгоритм проверки же текущей версии останется тот же.
Не знал о существовании готовых библиотек/компонент для этого дела. Можете скинуть ссылки?
Ichthyander писал(а):Можно так сделать: проверка номера версии программы с текущей версией. Версия сборки программы берется из версии файла, версия текущей сборки со своего сайта. К примеру, определенный файл, можно просто ini file с таким кусочкем текстаКод: Выделить всё
[Current]
Version=1.1.1.100
То есть[, например,] при запуске программа закачивает текстовый файл по ссылке http://official-site-of-the-software.ru/info/status.ini, откуда уже считывается информация о последнем релизе/сборке.
Ну а дальше, если есть желание можно реализовать скачивание файла по ссылке. Можно ее даже сделать одинаковой http://official-site-of-the-software.ru ... r-soft.exe . Это подойдет, если не страшно, что утечет ссылка на программу(, к примеру, она бесплатная).
В случае платной программы надо усложнить процесс скачивания. Алгоритм проверки же текущей версии останется тот же.
Не знал о существовании готовых библиотек/компонент для этого дела. Можете скинуть ссылки?
http://xn--90abhbolvbbfgb9aje4m.xn--p1a ... Lpro11.exe
Ini файл где то через полчаса создам, по такому же адресу можно выложить. Вы скажите что туда написать помимо версии, назвать например update.ini?
- Лекс Айрин
- долгожитель
- Сообщения: 5723
- Зарегистрирован: 19.02.2013 16:54:51
- Откуда: Волгоград
- Контактная информация:
mrkaban писал(а):Вы скажите что туда написать помимо версии, назвать например update.ini?
Например, стандартные настройки программы. тогда, в случае чего, можно будет восстановить их.
mrkaban писал(а):что туда написать помимо версии
Ну вы блин даете, список причин для обновления. Может пользователю ваше обновление и не нужно вовсе. Допустим у пользователя версия 3. В файле будет список: 2. Обновил кнопку, 3. Исправил расчет, 4. Добавли схему, 5. Перевел на английский. Программа скачивает файл и смотрит: Я = 2-ая версия, значит покажем пользователю все причины, начиная с 3-ей. И выводит "а не хотители поиметь фишки новых версий?: 3. Исправленный расчет, 4. Новую схему и т.д.".
mrkaban писал(а):назвать например update.ini?
Хоспадя, да какая разница? Имя файла будет известно только вам.
Лекс Айрин писал(а):Например, стандартные настройки программы. тогда, в случае чего, можно будет восстановить их.
А почему не хранить стандартные настройки в папке программы у пользователя? Загружать их каждый раз при проверке обновления? Лишний трафик, да и вобще как-то нелогично. Смешивание сути - обновление и восстановление. Тогда уж еще один файл под это дело закачать. Опять же разные версии - разные настройки. В чем тайный смысл?
- Лекс Айрин
- долгожитель
- Сообщения: 5723
- Зарегистрирован: 19.02.2013 16:54:51
- Откуда: Волгоград
- Контактная информация:
resident писал(а):А почему не хранить стандартные настройки в папке программы у пользователя?
они там и будут. Это тогда будет лишь метод восстановления работоспособности проги. Хотя, конечно, проще снести файл настроек и развернуть его из самой проги. Так что соглашусь.
- Ichthyander
- энтузиаст
- Сообщения: 701
- Зарегистрирован: 04.04.2007 08:32:43
- Откуда: Астрахань
- Контактная информация:
Интересней также в этом файле будет хранить прочую динамическую информацию. К примеру, рекламный текст или текст объявлений (акции, пормо), который будут видеть пользователи при запуске программы. Также можно хранить информацию о релизе. К примеру, ньюансы по обновления программы. Тут уж как говорится на что фантазии хватит
Код: Выделить всё
var
version:WideString;
f:string;
begin
try
f:= '1.0.0.0';
version:=IdHTTP1.Get('http://xn--90abhbolvbbfgb9aje4m.xn--p1ai/images/Lpro-updates.ini');
if version=f then
begin
Application.MessageBox('У Вас самая новая версия программы','Внимание',MB_OK);
end
else
begin
Application.MessageBox('Появилась новая версия программы, ее можно скачать'+#13#10+'http://xn--90abhbolvbbfgb9aje4m.xn--p1ai/images/Lpro.exe','Внимание',MB_OK);
end;
except
on e:Exception do
//-//-//-//-//-//
end; Но он ругается:
main.pas(132,14) Error: Identifier not found "IdHTTP1"
- Ichthyander
- энтузиаст
- Сообщения: 701
- Зарегистрирован: 04.04.2007 08:32:43
- Откуда: Астрахань
- Контактная информация:
Я не знаю, что у Вас за IdHTTP1 - я использую synapse. Это во-первых. Во-вторых: Вы, видимо совсем новичок. Что Вы этим хотели получить? version=f? Почитайте как работать с ini файлами в Delphi/Lazarus. Или не замарачиваейтесь, а вместо Lpro-updates.ini используйте Lpro-updates.txt, единственным содержимым которого сделайте версию текущей сборки. То есть 1.1.1.1 без каких-либо разметок. Тогда текст этого файла и будет версией файла. Но опять-таки и тут будет неправильным использовать строку напрямую. Вам нужно не просто проверить равны ли строки (кстати тогда Вам нужно использовать SameString(S1, S2) для сравнения), но желательно перевести в числовой формат, к примеру, набор байт XX.XX.XX.XX, чтобы выполнить более полноценное сравнение.
- Лекс Айрин
- долгожитель
- Сообщения: 5723
- Зарегистрирован: 19.02.2013 16:54:51
- Откуда: Волгоград
- Контактная информация:
mrkaban
А можно посмотреть список подключенных модулей? Ну и не помешало бы посмотреть на определение IdHTTP1
А можно посмотреть список подключенных модулей? Ну и не помешало бы посмотреть на определение IdHTTP1
