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

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

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

  • Первый JAR (который никогда не нуждается в обновлении) загружает экран-заставку, проверяет текущую версию в файле config.xml и сравнивает ее с сервером config.xml.

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

  • Запустите "main.jar".

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

1 ответ

Решение

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

Сначала запускался новый процесс jvm, чтобы запустить новый jar не так просто.

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

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

Другие вопросы по тегам