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

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

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

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

Сообщение resident » 30.05.2016 12:32:54

mrkaban писал(а):Ini файл где то через полчаса создам

Ничего себе "только начинаю изучать лазарус".
Ichthyander писал(а):Почитайте как работать с ini файлами в Delphi/Lazarus. Или не замарачиваейтесь, а вместо Lpro-updates.ini используйте Lpro-updates.txt, единственным содержимым которого сделайте версию текущей сборки.

Какие-то у вас немолодежные (ИМХО) способы. :)
Я за свою недолгую практику так и не работал с ini файлами. Сначала показалось сложным. А теперь не вижу ни одной причины изучать их при создании чего-то своего.
Для сложной системы есть xml + XPath, для ситуации "Имя"="Значение", есть методы TStringList из коробки.
resident
энтузиаст
 
Сообщения: 605
Зарегистрирован: 13.03.2013 16:58:51

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

Сообщение Ichthyander » 30.05.2016 12:38:38

Есть еще компоненты, примеры для реализации автообновления? Даже не обязательно автообновления, хватит защищенного скачивания. К примеру, возможность скачивания только для авторизованных пользователей с проверкой[ (логина и пароля)/хеша], либо просто автогеренируемая ссылка, которая скрыта от обычных пользователей. То есть получается клиентская часть FreePascal-код плюс серверная (на PHP или другие готовые механизмы и стандарты).
Допустим следующие варианты реализации:
1) По различным личным (логин, версия программы, "соль") и динамическим (время GMT) входным данные генерируется ссылка на стороне клиента (FreePascal) и на стороне сервера PHP. Ну а на выходе этого генератора ссылки какой-нить url с необратимо-зашифрованном хешом в ссылке. Сам файл для скачивания физически хранится в закрытой области веб-сервера, но доступен для скачивания по генерируемой вышеописанным способом ссылке.
2) Вариант скачивания с авторизацией. В этом случае ссылка может быть и безболезненно скомпрометирована. К примеру, GET/POST запрос с хешом (как в п.1) (лучше) или открытыми логином и паролем к серверу по определенном адресу. Сервер проверяет хеш или логин/пароль и либо 404 либо отдает файл для скачивания.
Как еще есть несложные и негромоздкие реализации всего этого? Вот сам озвучил способы реализации и теперь понимаю, что правильнее будет исопльзовать вариант 2...
Написать-то могу и сам, но не хотелось бы изобретать велосипед, хочется от чего-то оттолкнуться

Добавлено спустя 2 минуты 45 секунд:
resident писал(а):Какие-то у вас немолодежные (ИМХО) способы. :)
Я за свою недолгую практику так и не работал с ini файлами. Сначала показалось сложным. А теперь не вижу ни одной причины изучать их при создании чего-то своего.
Для сложной системы есть xml + XPath, для ситуации "Имя"="Значение", есть методы TStringList из коробки.

Так я и "немолодой", разве что в душе )
ini, name=value и json файлы самые быстрые и простые получаются для хранения настроек. Ini файлы по сути и являются Имя = значение. Просто чуть доработанная возможностью работы с секциями [Section], комментированием и т.д.
Последний раз редактировалось Ichthyander 30.05.2016 12:42:13, всего редактировалось 1 раз.
Аватара пользователя
Ichthyander
энтузиаст
 
Сообщения: 698
Зарегистрирован: 04.04.2007 08:32:43
Откуда: Астрахань

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

Сообщение Лекс Айрин » 30.05.2016 12:41:40

resident писал(а):Я за свою недолгую практику так и не работал с ini файлами. Сначала показалось сложным. А теперь не вижу ни одной причины изучать их при создании чего-то своего.

ничего сложного. Встроенные компоненты все делают это настолько простым, что прямой доступ к ini файлам нужен только в экзотических случаях.
resident писал(а):Для сложной системы есть xml + XPath, для ситуации "Имя"="Значение", есть методы TStringList из коробки.


я бы поосторожнее с xml../ по сравнению с обычным текстом пользы мало, а глюков можно поймать в два раза больше.

Добавлено спустя 9 минут 11 секунд:
Ichthyander, а зачем такие сложности? Даже для платных прог зачастую обновление свободное. Оба способа обладают кучей недостатков. Может быть, проще использовать привязанные к айпишнику куки? прямая передача пары логин/пароль это приглашение к взлому.
Аватара пользователя
Лекс Айрин
долгожитель
 
Сообщения: 5723
Зарегистрирован: 19.02.2013 16:54:51
Откуда: Волгоград

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

Сообщение Ichthyander » 30.05.2016 13:02:02

Лекс Айрин писал(а):Ichthyander, а зачем такие сложности? Даже для платных прог зачастую обновление свободное. Оба способа обладают кучей недостатков. Может быть, проще использовать привязанные к айпишнику куки? прямая передача пары логин/пароль это приглашение к взлому.

Кстати, по поводу IP хорошая идея. К примеру, сервер при запуске программы проверяет лицензию и сохраняет IP клиента (это уже реализовано), а при запросе к файлу для скачивания, проверяется был ли запуск программы с этого IP в ближайшее время. Правда, намного ли это проще, чем п.2?.., Да, прямой запрос по логину и паролю не совсем правильно. Поэтому я и написал лучше хеш использовать
Аватара пользователя
Ichthyander
энтузиаст
 
Сообщения: 698
Зарегистрирован: 04.04.2007 08:32:43
Откуда: Астрахань

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

Сообщение Лекс Айрин » 30.05.2016 14:49:46

Ichthyander писал(а):Правда, намного ли это проще, чем п.2?..


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

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

Сообщение Ichthyander » 30.05.2016 15:02:48

Ну, у меня интернет- прога, а не интранет. Mac-адрес не пойдет. А вот использовать IP, как говорится самое то
Аватара пользователя
Ichthyander
энтузиаст
 
Сообщения: 698
Зарегистрирован: 04.04.2007 08:32:43
Откуда: Астрахань

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

Сообщение Лекс Айрин » 30.05.2016 15:17:03

Ichthyander писал(а):Ну, у меня интернет- прога, а не интранет. Mac-адрес не пойдет.


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

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

Сообщение Ichthyander » 30.05.2016 17:24:45

Не задумывался... Может быть. Но IP адрес я получаю просто из переменных пользователя в PHP. А как получить mac-адрес не представляю пока. Заставить программу передавать данные mac адреса на мой сервер (в виде GET-параметра) при проверке лицензий..? На программу и так антивирусники косятся ) Вообщем, подумаю и над этим...
Аватара пользователя
Ichthyander
энтузиаст
 
Сообщения: 698
Зарегистрирован: 04.04.2007 08:32:43
Откуда: Астрахань

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

Сообщение Лекс Айрин » 30.05.2016 17:37:01

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

Пред.

Вернуться в Lazarus

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

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

Рейтинг@Mail.ru