Дизайн автообновления программного обеспечения

Проще говоря, как бы вы разработали приложение, которое поддерживает прямое и надежное автоматическое обновление?

Я заинтересован в том, как это может быть сокращено и различные операции, вовлеченные.

Изменить: Это связано с этим вопросом: Самоуничтожение приложения

2 ответа

Проблемы, которые необходимо решить:

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

  • Независимо от того, с какой службой вы общаетесь для получения файлов с помощью веб-запроса, вам необходимо знать, какую версию установленного пакета вы используете. Он будет динамически создавать список URL-адресов файлов и, возможно, даже архивировать файл и размещать его по одному URL-адресу для клиента. В противном случае попросите клиента просмотреть список URL-адресов, извлекая каждый файл. Каждый URL будет связан с операцией, такой как "копировать" или "выполнить".

  • Обработайте каждый полученный файл и установите его на клиент.

  • Обновление должно быть атомарным (возможность отката в случае сбоя какой-либо части операции). Вы не хотите оставаться в частичном состоянии.

Java Network Launch Protocol делает большую работу по упрощению развертывания программного обеспечения автообновления. Некоторые люди на этом сайте сообщают о проблемах с ним, но это может быть связано с использованием более старых версий Java или неправильной настройкой файла JNLP. Я обнаружил, что он отлично работает на Mac и Windows, а также на ПК на работе без входа в систему в качестве администратора, я смог эффективно "установить" свое программное обеспечение. С точки зрения пользователя, я просто дал ей новое настольное приложение. На рабочем столе есть значок программы, и файлы, сохраненные моей программой, связаны с ним - окна дают им правильный значок, и когда вы дважды щелкаете по ним, они открываются. Но каждый раз, когда она запускает программу, JNLP сначала проверяет свои локально сохраненные JAR-файлы на соответствие тому, что находится на моем сервере, и, если ее файлы старше, чем те, что на моем сервере, программное обеспечение обновляется. Программы по-прежнему запускаются так же быстро, как и родное приложение для Windows, за исключением первого раза, когда оно должно загрузить все.

Теперь, чтобы сделать самоуничтожение программы, есть два варианта:

  1. Измените ваши файлы JAR на сервере, чтобы быть коротким и бесполезным. Пользователь запускает программу, обновляет ее, и затем он видит диалоговое окно, сообщающее ему, что программа больше не доступна. Вы также можете отключить функции таким образом. Но это повлияет на ВСЕХ пользователей сразу. Вы можете создать несколько разных файлов JNLP, каждый для отдельного класса пользователей с одинаковыми временными рамками для вашего приложения, вы даже можете иметь сервис для генерации файла JNLP. Но контроль за его отключением по-прежнему будет исходить от того, что вы меняете банки на своем сервере.

  2. Когда программа запускается, она сначала обращается к веб-службе, чтобы убедиться, что программа все еще работает. Вы можете создать таблицу базы данных, связывающую ваших пользователей с функциями, которые они могут использовать сейчас. Если ваши пользователи не регистрируются, вам нужно будет как-то создать для них идентификатор при первом запуске программы, поместить его в таблицу db и сохранить его на компьютере клиента, используя настройки API.

Если вы не знакомы с использованием JNLP для автоматического обновления, вот некоторые справочные сведения, которые помогут вам начать работу:

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

Прочитайте руководство разработчика JNLP для подробных инструкций о том, как заставить это работать.

Вы также можете увидеть множество примеров в Интернете. В Chrome стандартное поведение файла JNLP - просто сохранить его, в других браузерах может потребоваться щелкнуть правой кнопкой мыши и сохранить как, но это работает, только если есть прямая ссылка на файл, а не необычная кнопка javascript. Затем вы можете открыть файл JNLP в вашем любимом текстовом редакторе как пример.
В учебниках по свингам для демонстрации кода используются файлы JNLP.

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