add launcher folder and some checks to it

This commit is contained in:
2026-08-23 01:20:18 +03:00
parent 2c4b594c90
commit af4230500e
13 changed files with 328 additions and 169 deletions
+10 -6
View File
@@ -4,9 +4,9 @@
#include <QDirIterator>
#include <QFileInfo>
#include <QHash>
#include <QObject>
#include <QProcess>
#include <QProcessEnvironment>
#include <QObject>
#include <QRegularExpression>
#include <QStandardPaths>
#include <utility>
@@ -75,8 +75,10 @@ QStringList JavaLocator::findAll(const QString &gameDir)
// 1. Рантайм, скачанный самим Minecraft: .minecraft/runtime/<component>/<os>/<component>/bin
const QString runtime = gameDir + QStringLiteral("/runtime");
if (QDir(runtime).exists()) {
QDirIterator it(runtime, QStringList{QString::fromLatin1(kExecutable)},
QDir::Files | QDir::Executable, QDirIterator::Subdirectories);
QDirIterator it(runtime,
QStringList{QString::fromLatin1(kExecutable)},
QDir::Files | QDir::Executable,
QDirIterator::Subdirectories);
while (it.hasNext()) {
it.next();
appendIfExecutable(result, it.fileInfo().absolutePath());
@@ -103,7 +105,7 @@ QStringList JavaLocator::findAll(const QString &gameDir)
for (const QString &entry : entries) {
const QString home = dir.absoluteFilePath(entry);
appendIfExecutable(result, home + QStringLiteral("/bin"));
appendIfExecutable(result, home + QStringLiteral("/Contents/Home/bin")); // macOS
appendIfExecutable(result, home + QStringLiteral("/Contents/Home/bin")); // macOS
appendIfExecutable(result, home + QStringLiteral("/jre/bin"));
}
}
@@ -172,7 +174,8 @@ QString JavaLocator::select(const QString &gameDir,
if (candidates.isEmpty()) {
if (error)
*error = QObject::tr("Java не найдена. Установите JDK %1 или укажите путь в настройках.")
*error = QObject::tr(
"Java не найдена. Установите JDK %1 или укажите путь в настройках.")
.arg(requiredMajor);
return {};
}
@@ -191,7 +194,8 @@ QString JavaLocator::select(const QString &gameDir,
if (error) {
*error = bestBelowMajor > 0
? QObject::tr("Для этой версии нужна Java %1 или новее, найдена только Java %2 (%3).")
? QObject::tr(
"Для этой версии нужна Java %1 или новее, найдена только Java %2 (%3).")
.arg(requiredMajor)
.arg(bestBelowMajor)
.arg(QDir::toNativeSeparators(bestBelow))