Функция Autoupdate в настольном приложении Java Swing

Я разработал настольное приложение Swing, и я думаю о лучшем способе предоставления функции autoupdate. Я знаю, что JavaWebStart предоставляет это, но я думаю, что это не соответствует моим потребностям, потому что мне нужно прочитать локальные файлы, поэтому мне нужно будет подписать банку. Кроме того, JWS требует дополнительной работы для развертывания на сервере, в то время как теперь мне нужно только загрузить .сосуд.

Я думал об этом подходе:

  • первая банка (которая никогда не нуждается в обновлении) загружает splashscreen, проверяет текущую версию в конфигурации.xml и сравнивает его с конфигурацией сервера.XML.

  • Если версия на сервере новее, спросите пользователя, хочет ли он обновить. В этом случае загрузите новый "main.jar", новый " config.xml " и новый всплеск / значок, проверьте MD5SUM и замените старые файлы новыми.

  • запустить " main.сосуд."

Я не знаю, пытаюсь ли я изобрести колесо или если есть схема получше той, что я описал выше.

1 ответов


мы сделали аналогичную вещь. Мы просто получили его через https и загрузили банку. Чтобы узнать, нужен ли вам новый, мы просто проверяем размер потока. Теоретически это может не сработать, но на практике сработало. Мы стали еще интереснее, получив список каталогов, где находились банки, проанализировав его и загрузив каждую банку, так что название банки также не было жестко закодировано. Но есть пара неприятных моментов.

сначала запускался новый процесс jvm для запуска нового jar а не так просто.

во-вторых, вы должны быть уверены, что не повредите банку, если ваше обновление не удастся в середине.

наконец, нет способа обновить загрузочную банку с помощью этого процесса.