Я создал автоматическое средство обновления приложений для одного из моих приложений.Это приложение из двух частей.Первая часть - это проверка версий и загрузчик обновлений.Вторая часть устанавливает загруженное обновление (чтобы обновление могло самообновляться).
Это хорошо работает на автономных приложениях.Вместо того, чтобы пользователь имел ярлык для приложения, у него есть ярлык для средства обновления.Если средство обновления находит обновление, оно загружается, устанавливается и затем перезапускается.Если обновление не найдено, приложение, на которое указывает пользователь, смотрит.
Теперь мне необходимо создать процедуру обновления для приложения клиент-сервер.Клиентская сторона все еще может использовать тот же процесс, что и выше.Однако сервер не может этого сделать, потому что некоторые файлы, которые необходимо обновить, могут использоваться клиентом.Я думал об этом в течение пары дней и только придумал две идеи, из которых мне не нравится ни одна.
Первая идея - самая простая, запустить обновление сервера после перезапуска сервера (до подключения клиентов).Я знаю, что сервер перезагружается как минимум раз в день, около полуночи.Перезапуск приведет к жесткому отключению всех подключенных клиентов, поэтому файлы больше не должны использоваться.
Вторая идея заключается в создании какого-либо флага занятости на сервере, когда необходимо обновить,Пока присутствует флаг занятости, клиенты не могут быть запущены.Проблема, которую я вижу с этим, проверяет флаг.Клиент может одновременно проверить, что сервер устанавливает флаг.
Как мне поступить?Как бы вы внедрили обновления сервера?Идеи, комментарии, вопросы?