forge on linux fix
This commit is contained in:
+19
-1
@@ -6,6 +6,7 @@
|
||||
#include <QString>
|
||||
#include <QStringList>
|
||||
|
||||
class QFile;
|
||||
class QNetworkAccessManager;
|
||||
class QNetworkReply;
|
||||
class QProcess;
|
||||
@@ -20,7 +21,11 @@ class VersionInstaller;
|
||||
//
|
||||
// * Forge и NeoForge так не умеют: их установка — это патч клиентского jar,
|
||||
// поэтому запускаем официальный installer.jar найденной Java в headless-режиме
|
||||
// и смотрим, какой профиль появился в versions.
|
||||
// и смотрим, какой профиль появился в versions. Процессу установщика при этом
|
||||
// подсовывается эталонный zlib — см. ZlibReference.
|
||||
//
|
||||
// Оба пути начинаются одинаково: пока ванильная версия не скачана целиком,
|
||||
// ставить лоадер некуда, поэтому ensureBaseVersion стоит перед обеими ветками.
|
||||
//
|
||||
// Набор геттеров повторяет VersionInstaller: панель загрузки в интерфейсе
|
||||
// читает их одинаково, независимо от того, кто сейчас работает.
|
||||
@@ -69,6 +74,11 @@ private:
|
||||
bool writeLauncherProfilesStub();
|
||||
void runInstaller(const QString &installerPath);
|
||||
void handleInstallerFinished(int exitCode, bool crashed);
|
||||
QStringList versionsAddedByInstaller() const;
|
||||
void removeVersionsAddedByInstaller();
|
||||
QString installerFailureHint() const;
|
||||
void appendInstallerLog(const QString &line);
|
||||
void closeInstallerLog();
|
||||
|
||||
void handOffToVersionInstaller(const QString &versionId);
|
||||
void setStage(const QString &stage);
|
||||
@@ -97,6 +107,14 @@ private:
|
||||
// разницей, а не угадыванием строки — id у Forge разные по эпохам.
|
||||
QStringList m_versionsBefore;
|
||||
QStringList m_installerLog;
|
||||
// Установщик успел отработать — значит, за появившиеся в versions папки
|
||||
// отвечаем мы и при неудаче их надо убрать.
|
||||
bool m_installerStarted = false;
|
||||
// В системе zlib-ng, а подменить его было нечем: почти наверняка причина
|
||||
// расхождения sha1, о которой стоит сказать прямым текстом.
|
||||
bool m_zlibNgUnpatched = false;
|
||||
QFile *m_installerLogFile = nullptr;
|
||||
QString m_installerLogPath;
|
||||
|
||||
// Ждём, пока VersionInstaller докачает то, что установщик не положил.
|
||||
QString m_awaitingVersionId;
|
||||
|
||||
Reference in New Issue
Block a user