LINUX.ORG.RU

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


0

0

Подскажите, как можно реализовать автоматическое обновление программы? По типу firefox. Если имеет значение — язык программирования Java. Можно просто привести ссылки, или общую методику.

★★★★★

А чем не устраивают средства обновления софта самой операционной системы? apt-get update && apt-get upgrade очень удобно :)

anonymous
()
Ответ на: комментарий от anonymous

ну да, если это бирарники программы, то лучше их так не обновлять по известным причинам. А если дата файлы, то просто скачивай как квейк делает например.

anonymous
()
Ответ на: комментарий от anonymous

Хм, как то не подумал в этом направлении. Как вариант — возможно. Но хочется всё же кросс-платформенного решения. Обновлять надо бинарники.

roy ★★★★★
() автор топика

могу предложить следующий вариант (примерно так происходило обновление ПО в одной железяки, софт для которой мне довелось мантейнить...)

Загружаем по сети новые версии бинарей, складываем их в какой-либо каталог нашего ПО... а дальше два пути:

1) у нас есть каталог bin, есть каталог updates, есть стартовый скрипт, через который запускается приложение. Скрипт при запуске смотрит, есть ли что-нить в каталоге updates, если есть, то он бэкапит те же файлы из bin, и перезаписывает их файлами из updates (после чего updates очищается). После всей этой процедуры уже запускается приложение.

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

Ну вот как-то так... в нашем софте было немного иначе, так как там это была "прошивка", там просто было две области памяти current и backup, и была метка, в которой указывалось, какая область сейчас собсно current, а какая backup, при апгрейде, перезаписывался бэкап, а метки менялись местами, и соответственно бывший карент становился бэкапом, а бэкап новым карентом :)

В любом случае подумай, что-то из мной описанного вполне сгодиться я думаю.

Удачи!

Cy6erBr4in ★★★
()
Ответ на: комментарий от Cy6erBr4in

Спасибо! Много пищи для размышления, особенно про обновление прошивки. Скоро возможно пригодится :)

roy ★★★★★
() автор топика
Ответ на: комментарий от Cy6erBr4in

> как обновить сам запускаемый бинарь

Не поверите... в *nix можно удалять открытые файл, в том числе и файлы запущенных программ.

anonymous
()
Ответ на: комментарий от anonymous

Читай тему полностью. Автору нужно _кроссплатформенное_ решение.

naryl ★★★★★
()

Можно посмотреть в сторону Eclipse RCP, OSGi, там это всё сделано.

Legioner ★★★★★
()

А вообще, если руками, то всё просто, если надо обновлять при перезапуске. Если требуется «горячее» обновление, то уже хитрее, надо с ClassLoader-ами шаманить.

Legioner ★★★★★
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.