Использование OSGi для реализации автообновления - PullRequest
11 голосов
/ 17 августа 2011

То, что я хотел бы сделать, - это создать для моего кода инфраструктуру «запуска», которая, учитывая URL и предопределенную схему управления версиями: 1) проверить, существует ли обновление 2) скачать обновления 3) «установить» обновление 4) «перезапустить» приложение

Я хочу а) сделать все это внутри существующей JVM и б) быть независимым от платформы. Высокий заказ, верно? Основываясь на моих (ограниченных) знаниях OSGi и Apache Felix, я почти уверен, что это возможно, но я действительно теряюсь в деталях.

Проверка наличия обновлений и загрузка их тривиальны. Вызывая "старый" пакет для выгрузки и "новый" пакет для загрузки, я застреваю. В прошлом я работал над OSGi, но это было гораздо менее динамично, чем это. Хорошее стартовое место или сильный толчок в правильном направлении было бы очень ценно.

Если я серьезно перевариваю что-то, что уже решено с бесплатной библиотекой, то скажи мне это тоже, но я пока ничего не нашел. : -)

Ответы [ 2 ]

7 голосов
/ 17 августа 2011

Вам даже не нужно загружать его, просто проверьте, доступно ли обновление, а затем вызовите Bundle.update (InputStream) для пакета, который необходимо обновить, обычно после этого следует вызов PackageAdmin.refreshPackages () после этого .

4 голосов
/ 18 августа 2011

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

  1. Для каркаса Equinox: p2 http://www.eclipse.org/equinox/p2/
  2. Для любой платформы OSGi R4: Apache ACE http://incubator.apache.org/ace/a-brief-introduction.html

С наилучшими пожеланиями, Дмитро

...