prefer GOG/Steam registry paths when scanning for game folder
This commit is contained in:
parent
516b2fc010
commit
cfe2c3975f
|
@ -20,6 +20,14 @@
|
|||
</When>
|
||||
<When Condition="$(OS) == 'Windows_NT'">
|
||||
<PropertyGroup>
|
||||
<!-- registry paths -->
|
||||
<GamePath Condition="!Exists('$(GamePath)')">$([MSBuild]::GetRegistryValueFromView('HKEY_LOCAL_MACHINE\SOFTWARE\GOG.com\Games\1453375253', 'PATH', null, RegistryView.Registry32))</GamePath>
|
||||
<GamePath Condition="!Exists('$(GamePath)')">$([MSBuild]::GetRegistryValueFromView('HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\Steam App 413150', 'InstallLocation', null, RegistryView.Registry64, RegistryView.Registry32))</GamePath>
|
||||
|
||||
<!-- derive from Steam library path -->
|
||||
<_SteamLibraryPath>$([MSBuild]::GetRegistryValueFromView('HKEY_CURRENT_USER\SOFTWARE\Valve\Steam', 'SteamPath', null, RegistryView.Registry32))</_SteamLibraryPath>
|
||||
<GamePath Condition="!Exists('$(GamePath)') AND '$(_SteamLibraryPath)' != ''">$(_SteamLibraryPath)\steamapps\common\Stardew Valley</GamePath>
|
||||
|
||||
<!-- default paths -->
|
||||
<GamePath Condition="!Exists('$(GamePath)')">C:\Program Files\GalaxyClient\Games\Stardew Valley</GamePath>
|
||||
<GamePath Condition="!Exists('$(GamePath)')">C:\Program Files\GOG Galaxy\Games\Stardew Valley</GamePath>
|
||||
|
@ -29,13 +37,6 @@
|
|||
<GamePath Condition="!Exists('$(GamePath)')">C:\Program Files (x86)\GOG Galaxy\Games\Stardew Valley</GamePath>
|
||||
<GamePath Condition="!Exists('$(GamePath)')">C:\Program Files (x86)\Steam\steamapps\common\Stardew Valley</GamePath>
|
||||
|
||||
<!-- registry paths -->
|
||||
<GamePath Condition="!Exists('$(GamePath)')">$([MSBuild]::GetRegistryValueFromView('HKEY_LOCAL_MACHINE\SOFTWARE\GOG.com\Games\1453375253', 'PATH', null, RegistryView.Registry32))</GamePath>
|
||||
<GamePath Condition="!Exists('$(GamePath)')">$([MSBuild]::GetRegistryValueFromView('HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\Steam App 413150', 'InstallLocation', null, RegistryView.Registry64, RegistryView.Registry32))</GamePath>
|
||||
|
||||
<!-- derive from Steam library path -->
|
||||
<_SteamLibraryPath>$([MSBuild]::GetRegistryValueFromView('HKEY_CURRENT_USER\SOFTWARE\Valve\Steam', 'SteamPath', null, RegistryView.Registry32))</_SteamLibraryPath>
|
||||
<GamePath Condition="!Exists('$(GamePath)') AND '$(_SteamLibraryPath)' != ''">$(_SteamLibraryPath)\steamapps\common\Stardew Valley</GamePath>
|
||||
</PropertyGroup>
|
||||
</When>
|
||||
</Choose>
|
||||
|
|
|
@ -8,6 +8,9 @@
|
|||
-->
|
||||
|
||||
## Upcoming release
|
||||
* For players:
|
||||
* Improved game path detection. The installer now prefers the path installed through Steam or GOG Galaxy.
|
||||
|
||||
* For modders:
|
||||
* Expanded `PerScreen<T>` API: you can now get/set the value for any screen, get all active values, or clear all values.
|
||||
* Expanded player info received from multiplayer API/events with new `IsSplitScreen` and `ScreenID` fields.
|
||||
|
|
|
@ -90,14 +90,6 @@ namespace StardewModdingAPI.Toolkit.Framework.GameScanning
|
|||
|
||||
case Platform.Windows:
|
||||
{
|
||||
// Windows
|
||||
foreach (string programFiles in new[] { @"C:\Program Files", @"C:\Program Files (x86)" })
|
||||
{
|
||||
yield return $@"{programFiles}\GalaxyClient\Games\Stardew Valley";
|
||||
yield return $@"{programFiles}\GOG Galaxy\Games\Stardew Valley";
|
||||
yield return $@"{programFiles}\Steam\steamapps\common\Stardew Valley";
|
||||
}
|
||||
|
||||
// Windows registry
|
||||
#if SMAPI_FOR_WINDOWS
|
||||
IDictionary<string, string> registryKeys = new Dictionary<string, string>
|
||||
|
@ -113,10 +105,18 @@ namespace StardewModdingAPI.Toolkit.Framework.GameScanning
|
|||
}
|
||||
|
||||
// via Steam library path
|
||||
string steampath = this.GetCurrentUserRegistryValue(@"Software\Valve\Steam", "SteamPath");
|
||||
if (steampath != null)
|
||||
yield return Path.Combine(steampath.Replace('/', '\\'), @"steamapps\common\Stardew Valley");
|
||||
string steamPath = this.GetCurrentUserRegistryValue(@"Software\Valve\Steam", "SteamPath");
|
||||
if (steamPath != null)
|
||||
yield return Path.Combine(steamPath.Replace('/', '\\'), @"steamapps\common\Stardew Valley");
|
||||
#endif
|
||||
|
||||
// Windows
|
||||
foreach (string programFiles in new[] { @"C:\Program Files", @"C:\Program Files (x86)" })
|
||||
{
|
||||
yield return $@"{programFiles}\GalaxyClient\Games\Stardew Valley";
|
||||
yield return $@"{programFiles}\GOG Galaxy\Games\Stardew Valley";
|
||||
yield return $@"{programFiles}\Steam\steamapps\common\Stardew Valley";
|
||||
}
|
||||
}
|
||||
break;
|
||||
|
||||
|
|
Loading…
Reference in New Issue