Политика конфиденциальностиКонтактыО сайтеОтзывыGitHubDonate
© EVILEG 2015-2018
Рекомендует хостинг
TIMEWEB
1 июня 2018 г. 18:37

Как правильно реализовать обновление

Хочу сделать обновление, но незнаю как правильно все реализовать.

1. Как делать проверку на выход новой версии? Думаю json файл получать
2. Где хранить файлы обновления?
3. Обновлять все файлы или выборочно?
4. Делать резервные копии файлов, в случае проблем, для отката?
Вопросов много, может не все указал.
Рекомендуем хостинг TIMEWEB
Рекомендуем хостинг TIMEWEB
Стабильный хостинг, на котором располагается социальная сеть EVILEG. Для проектов на Django рекомендуем VDS хостинг.
7

1. Да, здесь можно использовать JSON. Вот в этой статье есть пример с JSON файлом

А вот сам процесс обновления можно реализовать с помощью QtIFW, там в принципе есть необходимый функционал для такого. Здесь есть пример сборки как для онлайн, так и для оффлайн версии . Если менять пакет для онлайн версии, то инсталлятор сам уже покажет, что есть нового при запуске и пользователь может выбрать, в общем будет похоже, как в maintenance tool.

Также на форуме поднимался ряд вопросов, касающихся QtIFW

2. Файлы обновления нужно хранить на сервере. можете для этого использовать даже самый обычный хостинг для PHP сайта, даже бесплатный.

3. QtIFW в принципе ответит на этот вопрос.

4. Теоретически стоит, но пока я бы на вашем месте не думал. но сделал бы механизм по сохранению пользовательских save файлов, которые не пострадали бы при обновлении, а саму программу всегда можно переустановить. Если ещё не делали инсталлятор, то тогда убъёте сразу двух зайцев с QtIFW
0

Собрал инсталлятор, все нормально, но после установки, приложение не запускается.  Требует дополнительные dll файлы, например QtScript.dll и т.д., почему QtIFW собрал не все dll?

0

И еще вопрос, я объединил проекты в один с под проектами, как мне теперь собирать инсталляторы  для каждого отдельно. В pro вставлять код # Выбираем директорию сборки исполняемого файла

# в зависимости от режима сборки проекта
CONFIG(debug, debug|release) {
    DESTDIR = $$OUT_PWD/../../prog1Debug
} else {
    DESTDIR = $$OUT_PWD/../../prog1Release
}
# разделяем по директориям все выходные файлы проекта
MOC_DIR = ../common/build/moc
RCC_DIR = ../common/build/rcc
UI_DIR = ../common/build/ui
unix:OBJECTS_DIR = ../common/build/o/unix
win32:OBJECTS_DIR = ../common/build/o/win32
macx:OBJECTS_DIR = ../common/build/o/mac

# в зависимости от режима сборки проекта
# запускаем win deploy приложения в целевой директории, то есть собираем все dll
CONFIG(debug, debug|release) {
    QMAKE_POST_LINK = $$(QTDIR)/bin/windeployqt $$OUT_PWD/../../prog1Debug
} else {
    QMAKE_POST_LINK = $$(QTDIR)/bin/windeployqt $$OUT_PWD/../../prog1Release
}
1

Со сборкой вроде все норм, не правильно разделил по директориям все выходные файлы проекта

1
  • 6 июня 2018 г. 17:29
  • (ред.)
  • Ответ был помечен как решение.

Как поменять путь, в зависимости от проекта?

    PWD_WIN = $$OUT_PWD\..\..\Prog1Release
или
    PWD_WIN = $$OUT_PWD\..\..\Prog2Release
1

В принципе я разобрался, сделал проект с под проектами и внутри еще проект с под проектами.  Все работает как хотелось.


Только вопрос появился, пере сборка всегда будет всех под проектов?  То есть при релизе он делает инстолляторы на все проекты.
0

Я настраивал, чтобы инсталляторы были либо для дебага, либо для релиза.

По сути, как разрулите в QMake, так оно и будет работать.
0

Комментарии

Только авторизованные пользователи могут публиковать комментарии.
Пожалуйста, авторизуйтесь или зарегистрируйтесь
IT
25 марта 2019 г. 17:32
Ilya The Engineer

Qt - Тест 001. Сигналы и слоты

  • Результат:5баллов,
  • Очки рейтинга-10
G
25 марта 2019 г. 8:34
GAG

C++ - Тест 002. Константы

  • Результат:41баллов,
  • Очки рейтинга-8
G
25 марта 2019 г. 8:25
GAG

C++ - Тест 001. Первая программа и типы данных

  • Результат:66баллов,
  • Очки рейтинга-1
Последние комментарии
22 марта 2019 г. 12:32
Евгений Легоцкой

Ну может бибилотеки не те положили? У вас сборка для MinGW, а либы для MSVC.
ВН
22 марта 2019 г. 11:08
Волчонок Над-Пропастью

Из кьюта приложение не хочет запускаться, аварийно завершается, но каких-либо ошибок не выдаёт. Оно открывается, после нажатия "старт" зависает и завершается. Если не из кьюта запускать дебаг ...
21 марта 2019 г. 15:49
Евгений Легоцкой

серьезно? Эта ошибка 404 уже даже не относится к данному вопросу. В каких-то urls в вашем проекте. Вопросы, которые не относятся непосредственно к статье, задавайте, пожалуйста на...
АБ
21 марта 2019 г. 15:00
Артем Бел

а это где? сейчас ошибка в debag такая: Page not found (404)Request Method: GETRequest URL: http://amadowshop.site/accounts/profile/
21 марта 2019 г. 12:47
Евгений Легоцкой

не вижу здесь проблемы, поменяйте url для callback в приложения oauth в социальных сетях https://amadowshop.site/auth/verify/complete/facebook/
Сейчас обсуждают на форуме
U
25 марта 2019 г. 12:43
Unreal_man

Как сделать чтоб при клике на ячейку(ос андроид) ее сразу можно было редактировать?QGuiApplication::inputMethod()->show(); показывает клавиатуру, а вот что до этого прописать чтоб текст в ...
m
24 марта 2019 г. 10:36
monevich

Отвечу на свой же вопрос, может кому то это пригодится. Да, можно в функции main использовать такую конструкцию. При запуске программы из Qt передаю свой аргумент в параметрах командной строк...
22 марта 2019 г. 12:29
Дмитрий

Да, мьютекс добавил, но в том потоке, где сигнал вызывается.
ВН
22 марта 2019 г. 9:04
Волчонок Над-Пропастью

Да, на эту проблему! Зато у меня теперь новая, ругается на подключение QMediaPlayer, пишет, что не находит подобного файла или библиотеки. Пока не нашла как исправить, только вариант с переуст...
22 марта 2019 г. 8:58
Михаиллл

4) это , похоже, для создания видоизмененных страниц, для анимации. 3,5) добавить фвйл/qt/ui.qml
Присоединяйтесь к нам в социальных сетях

Для зарегистрированных пользователей на сайте присутствует минимальное количество рекламы