Ответ 1
ОК, поэтому я предполагаю, что я воспринимаю это как "нет (кросс-платформенный) способ". Это слишком плохо!
Мне нравятся приложения, которые могут самостоятельно обновлять себя без каких-либо усилий от пользователя (подумайте: Sparkle framework для Mac). Есть ли какой-либо код/библиотека, который я могу использовать для этого в приложении Qt, не беспокоясь о деталях ОС?
По крайней мере для Windows, Mac и пользовательских двоичных файлов Linux.
Я мог бы интегрировать Sparkle в версию Mac, код что-то для случая Linux (только для автономного, принадлежащего пользователю двоичного кода, я не буду связываться с distribution, если моя программа когда-либо упакована), и найдите кого-нибудь, кто поможет мне на стороне Windows, но это ужасно болезненно.
ОК, поэтому я предполагаю, что я воспринимаю это как "нет (кросс-платформенный) способ". Это слишком плохо!
Это не полное решение, но кросс-платформенный (Windows, Mac, Linux) инструмент для создания пакетов для автоматического обновления и их установки доступен по адресу https://github.com/mendeley/Update-Installer. Этот инструмент не занимается публикацией обновлений или их загрузкой.
Это было написано для использования с приложением на основе Qt, но чтобы сделать установщик обновлений небольшим, автономным и легким для сборки, программа установки использует только стандартные системные библиотеки (С++ runtime, pthreads/libz/libbz2 на Linux/Mac, Win32 API в Windows, Cocoa на Mac, GTK с резервным доступом к Linux). Это упрощает доставку обновлений, которые включают в себя новые версии Qt и других несистемных библиотек, от которых зависит ваше приложение.
Прежде чем рассматривать это, я бы предложил:
Sparkle
на Mac, Google Omaha
в Windows или системы автоматического обновления, встроенные в популярные установки (например, InstallShield). Я не пробовал BitRock.Несколько других замечаний по созданию обновления:
Бесстыдный плагин: Fervor, простой многоплатформенный (Qt-основанный) приложение autoupdater, вдохновленное Sparkle.
Бесстыдный плагин: это относительно старый вопрос, но я подумал, что может быть полезно упомянуть недавно созданную библиотеку, которую я назвал "QSimpleUpdater". Помимо уведомления вас, если есть более новая версия, она позволяет загружать журнал изменений в любом формате (например, HTML или RTF) и загружать обновления непосредственно из приложения с помощью диалогового окна.
Как вы можете ожидать от проекта Qt, он работает на любой платформе, поддерживаемой Qt (протестирован в Windows, Mac и Linux).
Ссылки:
Скриншот:
Хотя он работает несколько иначе, чем Sparkle, BitRock InstallBuilde r содержит autoupdater, написанный в Qt, который можно использовать независимо (отказ от ответственности, я оригинальный разработчик BitRock). Это коммерческое приложение, но у нас есть бесплатные лицензии на проекты с открытым исходным кодом.
Я разработал библиотеку автообновлений, которая прекрасно работает на Mac OS X, Linux и почти всех Unix, что позволяет отменить связь с файлом, пока файл все еще открыт. Причина в том, что я просто извлек загруженный пакет поверх существующего приложения. К сожалению, поскольку я полагался на эту функциональность, я столкнулся с проблемами в Windows, поскольку Windows не позволяет отключить открытый файл.
Единственная альтернатива, которую я могу найти, - использовать MoveFileEx с заменой на флагов перезагрузки, но это ужасно.
Однако переименование рабочего каталога приложения работает в Windows 7 и Windows XP. Я еще не пробовал Windows Vista.
Сообщение в блоге Смешивание Cocoa и Qt может решить проблему для платформы Mac.
Я нашел WebUpdate, чтобы быть очень полезным, хотя он написан с помощью wxWidgets. Но не беспокойтесь, это отдельное приложение, которое обрабатывает ваши обновления. Шаги по его интеграции довольно просты - просто напишите два файла XML и запустите программу обновления. И да, это кросс-платформенный.
Преимущество этого заключается в том, что он автоматически загрузит и распакует/установит все, что вам нужно, а не просто предоставит всплывающее окно с уведомлением о новой версии и ссылкой для его загрузки. Еще одна вещь, которую вы можете сделать с ней - это настраиваемые действия.
Главная страница проекта здесь, вы можете прочитать docs или взгляните на официальный tutorial.
Вы можете использовать UpdateNode, который дает вам все возможности для обновления вашего программного обеспечения. Он использует кроссплатформенный клиент Qt и является бесплатным для Open Source!
UPDATE Просто сделал еще один анализ этого и действительно хотел это решение:
Плюсы:
Минусы:
Итак, в нижней строке, так как это решение является совершенно новым, я думаю, что здесь много возможностей. Я определенно буду использовать его в своем проекте, и я с нетерпением жду большего от них! Thumbs up!
Я предлагаю вам читать плагин и как его создавать и использовать. Если ваша архитектура приложения является модульной и разделена на разные плагины. Посмотрите утилиту Google Auto Update http://code.google.com/p/omaha/. Мы используем это.
Thibault Cuvelier пишет учебное пособие (на французском языке) для разработки программы обновления. Я знаю, что объяснения на французском языке (и все не понимают французский), но я думаю, что это можно прочитать с помощью веб-переводчика, например Google Translate, При этом у вас будет кросс-платформенный модуль обновления, но вам нужно написать его самостоятельно.
Для того, что я знаю, единственной частью программы обновления, которая объясняется в учебнике, является часть загрузки файла. В случае, если это может вам помочь, обратитесь к учебнику, Un updater avec Qt.
Я надеюсь, что это поможет.
Это старый вопрос, но в ответах нет белка, который является ЛУЧШИМ РЕШЕНИЕМ, вот что я делаю в qt 5.12.4 с qt quick "my qml app" можно сделать это на любом другом языке
Я делаю это в Windows, есть Mac-версия белка тоже, я не знаю о Linux
squirrel --releasify file_name.nupkg
→ теперь в папке релизов должен быть файл setup.exe, который установит приложение и другие файлы.appdir/../update.exe --update http://yourserver.com/upates/
, после того как приложение перезапускает приложение с новой версиейЭто просто. Теперь у вас есть приложение автообновления, которое будет загружать обновления с сервера и приложение автообновления. Для получения дополнительной информации вы можете прочитать документацию.
примечание: для использования iis https://github.com/Squirrel/OldSquirrelForWindows/issues/205