Как лучше реализовать удаленное обновление через Интернет для десктопного приложения, написанного на C++\Qt Framework?
Есть приложение, работающее на компьютерах клиентов и успешно выполняющее свои задачи. Необходимо реализовать обновление приложения из сети, и задача поставлена так, что нужно будет именно с новой версии программы добавить возможность обновлять ее удаленно. Оно не основано на клиент - серверной архитектуре и не взаимодействует (пока что) с локальной сетью или же интернетом. Есть возможность реализовать всё с нуля и хотелось бы реализовать обновление правильным образом, не изобретая велосипед. Хотелось бы услышать мнение сообщества о том, как это принято делать, как лучше не делать, и какие книжки стоит почитать на эту тему.
Я бы сделал отдельный бинарник, который и будет выполнять задачу обновления.
Основное ПО выкачает архив с файлами обновления, отдаст управление новосозданному бинарнику (чтобы можно было себя обновить), а оно уже обновит.
Вроде бы как я понял, указанные вами продукты могут обновлять приложения на этапе установки. Нам же нужно будет обновлять в процессе эксплуатации, с уведомлениями и т.д. Пока что я представляю себе реализацию в виде базы данных на сервере, в которую будут приходить запросы от клиентских приложений на проверку флажка есть ли обновление или нет, если новое обновление есть, уведомлять пользователя, если он согласен обновиться сейчас если нет, запланировать когда, получать ссылку, выкачивать файлы, запускать приложение Updater, выключать основную программу и завершать обновление Updater"ом, после чего снова запускать основное приложение.
Нет, я использовал winsparkle. Он позволяет проверять по запросы сервер на котором вы выкладываете новые версии продукта, если версия новее он скачивает и устанавливает новую версию