2009-09-07 4 views
9

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

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

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

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

  • Запуск «main.jar».

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

+3

Вы обновляете колесо, и вы уже знаете это, так как вы упоминаете Java WebStart. Развертывание на сервере минимально, вам нужно только опубликовать несколько файлов, нет необходимости в активном компоненте на сервере. –

+0

Я предлагаю использовать сертификат вместо проверки хеша из https. С помощью хеш-метода скомпрометированный https-сервер означает компрометацию всех аутсорсирующих клиентов./Также проверьте, что вы устанавливаете более текущую версию, чтобы избежать атак с понижением./WebStart предоставляет ограниченный интерфейс для использования файлов, хотя управление/настройка браузера файлов ограничена. –

+0

Я думаю, что это не так уж мало. Мне нужно развернуть его на сервере, который не контролируется мной вообще. Например, я не могу изменить mimetypes. Кроме того, как я уже сказал, ему нужно будет получить доступ к локальным файлам, поэтому мне нужно будет его подписать. – ktulur

ответ

5

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

Сначала был запущен новый процесс jvm, чтобы начать новую банку, это не так просто.

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

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

+0

В случае, если кто-то ищет пример, как это сделать, я создал довольно много, что за последние несколько дней: https://github.com/UrsKR/updates-r-simple –