anilibria / anilibria-winmaclinux

AniLibria.Qt cross platform desktop client
GNU General Public License v3.0
133 stars 26 forks source link

Проверка на наличие новых версий #4

Closed trueromanus closed 4 years ago

trueromanus commented 4 years ago

При каждом запуске делать проверку на наличие новой версии приложения и если таковая имеется то вывести информационное сообщение со ссылкой на последнюю версию.

Roker2 commented 4 years ago

Пока нет времени самому реализовать, опишу свою идею. У Гитхаба есть свой API, который позволяет получить информацию о релизах, в том числе и о последнем релизе (но по какой-то причине latest не работает). https://api.github.com/repos/anilibria/anilibria-winmaclinux/releases/latest - последний релиз. https://api.github.com/repos/anilibria/anilibria-winmaclinux/releases - все релизы (проходит). В программе есть глобальная константа версии (QString), которая имеет формат x1.x2.x3, где x1, x2 и x3 являются int-овыми значениями (точнее, в них можно преобразовать и лучше использовать short unsigned int, сэкономим память :D). Алгоритм 1) получаем json по ссылке 2) получаем список релизов/последний релиз программы из json 3) получаем версию последнего релиза 4) переводим версию в y1, y2, y3 5) если x1 < y1 || x2 < y2 || x3 < y3, то выполнить 6-ый пункт, в противном случае прыгает на 10-ый пункт 6) открыть QMessageBox с текстом "Вышла новая версия программы - y1.y2.y3, не желаете обновится?" 7) если пользователь нажал Да, то 8-ой пункт, в противном случае прыгаем на 10-ый пункт 8) считать URL последнего релиза из JSON 9) открыть URL в браузере 10) продолжить выполнение программы

Roker2 commented 4 years ago

Единственное мне пока не ясно куда прикрутить QMessageBox.

trueromanus commented 4 years ago

Ну вообще я так и хотел делать но все равно спасибо 👍 , просто еще рано потому что небыло стабильных (т.е. не prerelease) версий и именно поэтому не работает latest. Да и проверка прям по цифрам лишняя достаточно просто проверить целиком если совпадает тогда последняя версия если нет то не последняя.

QMessageBox в qml не используется там для этого есть другие механизмы. Конкретно сейчас есть типа notification center это всплывашки которые показываются в правой части окна но сам механизм не доработан поэтому эта фича еще полежит какое-то время как минимум до момента когда появиться первый release candidate и докрутиться notification center.

Roker2 commented 4 years ago

Окей, понял.

WaffleLapkin commented 4 years ago

Ещё пригодилась бы возможность отключать проверку (во время компиляции?), чтобы в дистрах где есть пакет этим занимался пакетный менеджер.

trueromanus commented 4 years ago

@WaffleLapkin понял, учтем.

trueromanus commented 4 years ago

@WaffleLapkin Чтобы отключить проверку версий удали или закомментируй строчку DEFINES += USE_VERSION_CHECK в AniLibria.pro

WaffleLapkin commented 4 years ago

Выпустил новую версию пакета с отключенной проверкой обновлений :+1: