diff options
| author | SulfurNitride <SulfurNitride@users.noreply.github.com> | 2026-04-11 16:36:25 -0500 |
|---|---|---|
| committer | SulfurNitride <SulfurNitride@users.noreply.github.com> | 2026-04-11 16:36:25 -0500 |
| commit | ddee1e1235cb8a7136e2aa2ce55f91b28b84c9d2 (patch) | |
| tree | 6dab02810627ea01d3c9295883ca98bd452cb9d0 /src | |
| parent | 7bac34cf083fc0a0036b2df210e4943a0f7707be (diff) | |
Fix game launchers failing to find INI files due to registry key casing
Wine registry value names are case-sensitive. Game launchers (FNV, Oblivion,
etc.) look up "installed path" (lowercase) but Fluorine was writing
"Installed Path" (capitalized), causing "Unable to find an INI file" errors.
Also adds trailing backslash to match Steam's path format and fixes the
registry mismatch dialog to ignore trailing separator differences.
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
Diffstat (limited to 'src')
| -rw-r--r-- | src/src/knowngames.h | 20 | ||||
| -rw-r--r-- | src/src/organizercore.cpp | 11 | ||||
| -rw-r--r-- | src/src/prefixsetuprunner.cpp | 3 |
3 files changed, 23 insertions, 11 deletions
diff --git a/src/src/knowngames.h b/src/src/knowngames.h index a29e5dc..42679b7 100644 --- a/src/src/knowngames.h +++ b/src/src/knowngames.h @@ -29,35 +29,35 @@ inline constexpr KnownGame KNOWN_GAMES[] = { R"(Software\SureAI\Enderal SE)", "installed path", "Enderal Special Edition"}, {"Fallout 3", "22300", "1454315831", "adeae8bbfc94427db57c7dfecce3f1d4", "Fallout3", "Fallout3", nullptr, - R"(Software\Bethesda Softworks\Fallout3)", "Installed Path", "Fallout 3"}, + R"(Software\Bethesda Softworks\Fallout3)", "installed path", "Fallout 3"}, {"Fallout 4", "377160", "1998527297", "61d52ce4d09d41e48800c22784d13ae8", "Fallout4", "Fallout4", nullptr, - R"(Software\Bethesda Softworks\Fallout4)", "Installed Path", "Fallout 4"}, + R"(Software\Bethesda Softworks\Fallout4)", "installed path", "Fallout 4"}, {"Fallout 4 VR", "611660", nullptr, nullptr, "Fallout4VR", nullptr, nullptr, - R"(Software\Bethesda Softworks\Fallout 4 VR)", "Installed Path", "Fallout 4 VR"}, + R"(Software\Bethesda Softworks\Fallout 4 VR)", "installed path", "Fallout 4 VR"}, {"Fallout New Vegas", "22380", "1454587428", "5daeb974a22a435988892319b3a4f476", "FalloutNV", "FalloutNV", nullptr, - R"(Software\Bethesda Softworks\FalloutNV)", "Installed Path", "Fallout New Vegas"}, + R"(Software\Bethesda Softworks\FalloutNV)", "installed path", "Fallout New Vegas"}, {"Morrowind", "22320", "1440163901", nullptr, "Morrowind", nullptr, nullptr, - R"(Software\Bethesda Softworks\Morrowind)", "Installed Path", "Morrowind"}, + R"(Software\Bethesda Softworks\Morrowind)", "installed path", "Morrowind"}, {"Oblivion", "22330", "1458058109", nullptr, "Oblivion", "Oblivion", nullptr, - R"(Software\Bethesda Softworks\Oblivion)", "Installed Path", "Oblivion"}, + R"(Software\Bethesda Softworks\Oblivion)", "installed path", "Oblivion"}, {"Skyrim", "72850", nullptr, nullptr, "Skyrim", "Skyrim", nullptr, - R"(Software\Bethesda Softworks\Skyrim)", "Installed Path", "Skyrim"}, + R"(Software\Bethesda Softworks\Skyrim)", "installed path", "Skyrim"}, {"Skyrim Special Edition", "489830", "1711230643", "ac82db5035584c7f8a2c548d98c86b2c", "Skyrim Special Edition", "Skyrim Special Edition", nullptr, - R"(Software\Bethesda Softworks\Skyrim Special Edition)", "Installed Path", + R"(Software\Bethesda Softworks\Skyrim Special Edition)", "installed path", "Skyrim Special Edition"}, {"Skyrim VR", "611670", nullptr, nullptr, "Skyrim VR", nullptr, nullptr, - R"(Software\Bethesda Softworks\Skyrim VR)", "Installed Path", "Skyrim VR"}, + R"(Software\Bethesda Softworks\Skyrim VR)", "installed path", "Skyrim VR"}, {"Starfield", "1716740", nullptr, nullptr, "Starfield", nullptr, nullptr, - R"(Software\Bethesda Softworks\Starfield)", "Installed Path", "Starfield"}, + R"(Software\Bethesda Softworks\Starfield)", "installed path", "Starfield"}, // CD Projekt RED Games {"The Witcher 3", "292030", "1495134320", nullptr, "The Witcher 3", nullptr, nullptr, diff --git a/src/src/organizercore.cpp b/src/src/organizercore.cpp index 330eeae..701e169 100644 --- a/src/src/organizercore.cpp +++ b/src/src/organizercore.cpp @@ -2316,8 +2316,17 @@ bool OrganizerCore::checkGameRegistryKey() registryPath = prefix.readHklmValue(wow64Key, valueName);
}
+ // Normalize trailing separators before comparing — Steam writes paths with
+ // a trailing backslash, so the registry value may differ only in that.
+ auto stripTrailingSep = [](QString s) {
+ while (s.endsWith('\\') || s.endsWith('/'))
+ s.chop(1);
+ return s;
+ };
+
if (registryPath.isEmpty() ||
- registryPath.compare(winePath, Qt::CaseInsensitive) != 0) {
+ stripTrailingSep(registryPath).compare(stripTrailingSep(winePath),
+ Qt::CaseInsensitive) != 0) {
const QString displayRegPath = registryPath.isEmpty()
? tr("<not set>") : registryPath;
diff --git a/src/src/prefixsetuprunner.cpp b/src/src/prefixsetuprunner.cpp index 81824e1..74d59bc 100644 --- a/src/src/prefixsetuprunner.cpp +++ b/src/src/prefixsetuprunner.cpp @@ -1306,7 +1306,10 @@ bool PrefixSetupRunner::stepGameDetection() const QString& rVal = game.registry_value; // Convert Linux path to Wine Z: drive path with escaped backslashes. + // Trailing backslash required — game launchers expect it (matches Steam's format). QString winePath = "Z:" + QString(installPath).replace('/', "\\\\"); + if (!winePath.endsWith("\\\\")) + winePath += "\\\\"; regContent += QStringLiteral( "[HKEY_LOCAL_MACHINE\\%1]\n\"%2\"=\"%3\"\n\n" |
