license login feature

This commit is contained in:
2026-09-01 22:25:23 +03:00
parent c25e071b29
commit d6986057d1
11 changed files with 1062 additions and 19 deletions
+31
View File
@@ -6,8 +6,31 @@ project(Minecraft_launcher VERSION 0.1 LANGUAGES CXX C)
set(CMAKE_CXX_STANDARD_REQUIRED ON)
# CorePrivate нужен ради QZipReader — им распаковываются нативные библиотеки LWJGL.
# Про привязку к версии Qt из-за него предупреждать не нужно: это осознанный выбор.
set(QT_NO_PRIVATE_MODULE_WARNING ON)
find_package(Qt6 REQUIRED COMPONENTS Quick QuickControls2 Core CorePrivate Gui Network)
# ── Qt WebEngine: окно входа в аккаунт Microsoft ────────────────────────────
#
# Модуль необязательный, и это принципиально: он ставится отдельной галочкой в
# установщике Qt и тянет за собой WebChannel с Positioning, которых в типовой
# установке нет. Если сделать его обязательным, у любого, кто их не поставил,
# проект перестаёт конфигурироваться целиком — вместе с офлайном и Ely.by.
#
# Без модуля лаунчер собирается и работает как раньше, только вход через
# Microsoft сообщает, что эта сборка его не умеет.
find_package(Qt6 QUIET COMPONENTS WebEngineQuick)
if(Qt6WebEngineQuick_FOUND)
message(STATUS "Qt WebEngine найден: вход через аккаунт Microsoft будет доступен")
set(LAUNCHER_MSA_QML_FILES MicrosoftLoginDialog.qml)
else()
message(WARNING
"Qt WebEngine не найден — лаунчер соберётся без входа через аккаунт Microsoft. "
"Чтобы его включить, доустановите в MaintenanceTool для своей версии Qt сразу три "
"компонента: Qt WebEngine, Qt WebChannel и Qt Positioning.")
set(LAUNCHER_MSA_QML_FILES "")
endif()
qt_standard_project_setup(REQUIRES 6.8)
qt_add_executable(appMinecraft_launcher
@@ -35,6 +58,8 @@ qt_add_qml_module(appMinecraft_launcher
javainstaller.cpp
authservice.h
authservice.cpp
msaauthservice.h
msaauthservice.cpp
gamelauncher.h
gamelauncher.cpp
versionmanifestservice.h
@@ -64,6 +89,7 @@ qt_add_qml_module(appMinecraft_launcher
SeasonalBuildsDialog.qml
LoaderRow.qml
ProgressPanel.qml
${LAUNCHER_MSA_QML_FILES}
RESOURCES images/Folder/Folder_Active.svg images/Folder/Folder_Idle.svg images/Folder/Folder_Pressed.svg images/Options/Options_active.svg images/Options/Options_Idle.svg images/Options/Options_Pressed.svg images/Play_Button/Play_Active.svg images/Play_Button/Play_Idle.svg images/Play_Button/Play_pressed.svg images/Profile_Box/Asset_23.jpg images/Profile_Box/Asset_23.svg images/Profile_Box/Asset_24.jpg images/Profile_Box/Asset_24.svg images/Profile_Box/Kishka_Profile_Active.svg images/Profile_Box/Kishka_Profile_Idle.svg images/Profile_Box/Kishka_Profile_open.svg images/Scroll/Scroll_Lever.svg images/Scroll/Scroll_palka.svg images/Version_box/Kishka_Profile_Open.svg images/Version_box/Kishka_Ver_Active.svg images/Version_box/Kishka_Ver_idle.svg images/Trash.svg images/Pencil.svg images/GovuztTW8AAHqBf.jpeg images/photo_2025-12-16_15-04-17.jpg images/photo_2025-12-21_02-30-09.jpg
)
@@ -82,6 +108,11 @@ target_link_libraries(appMinecraft_launcher
PRIVATE Qt6::Quick Qt6::QuickControls2 Qt6::Core Qt6::CorePrivate Qt6::Gui Qt6::Network
)
if(Qt6WebEngineQuick_FOUND)
target_link_libraries(appMinecraft_launcher PRIVATE Qt6::WebEngineQuick)
target_compile_definitions(appMinecraft_launcher PRIVATE LAUNCHER_HAS_WEBENGINE)
endif()
include(GNUInstallDirs)
# ── Эталонный zlib для установщиков Forge и NeoForge ────────────────────────