fix installer leaving unneeded StardewModdingAPI-x64.exe file in installer

This commit is contained in:
Jesse Plamondon-Willard 2021-05-03 19:42:30 -04:00
parent 5d3d919d49
commit 8d9d8341cd
No known key found for this signature in database
GPG Key ID: CF8B1456B3E29F49
2 changed files with 19 additions and 16 deletions

View File

@ -7,6 +7,10 @@
* Migrated to Harmony 2.0 (see [_migrate to Harmony 2.0_](https://stardewvalleywiki.com/Modding:Migrate_to_Harmony_2.0) for more info).
-->
## Upcoming release
* For players:
* Fixed installer leaving unneeded `StardewModdingAPI-x64.exe` file in the game folder.
## 3.10
Released 03 May 2021 for Stardew Valley 1.5.4 or later. See [release highlights](https://www.patreon.com/posts/50764911).

View File

@ -45,6 +45,7 @@ namespace StardewModdingApi.Installer
yield return GetInstallPath("StardewModdingAPI.exe.mdb"); // Linux/macOS only
yield return GetInstallPath("StardewModdingAPI.pdb"); // Windows only
yield return GetInstallPath("StardewModdingAPI.xml");
yield return GetInstallPath("StardewModdingAPI-x64.exe"); // not normally added to game folder, but may be mistakenly added by a manual install
yield return GetInstallPath("smapi-internal");
yield return GetInstallPath("steam_appid.txt");
@ -424,25 +425,23 @@ namespace StardewModdingApi.Installer
this.RecursiveCopy(sourceEntry, paths.GameDir);
}
// handle 64-bit file
{
FileInfo x64Executable = new FileInfo(Path.Combine(paths.GameDir.FullName, "StardewModdingAPI-x64.exe"));
if (isWindows64Bit)
{
this.PrintDebug("Making SMAPI 64-bit...");
FileInfo x64Executable = new FileInfo(Path.Combine(paths.BundleDir.FullName, "StardewModdingAPI-x64.exe"));
if (x64Executable.Exists)
{
string targetName = "StardewModdingAPI.exe";
this.InteractivelyDelete(Path.Combine(paths.GameDir.FullName, targetName));
this.InteractivelyDelete(Path.Combine(paths.GameDir.FullName, x64Executable.Name));
this.RecursiveCopy(x64Executable, paths.GameDir);
File.Move(Path.Combine(paths.GamePath, x64Executable.Name), Path.Combine(paths.GamePath, targetName));
string targetPath = Path.Combine(paths.GameDir.FullName, "StardewModdingAPI.exe");
this.InteractivelyDelete(targetPath);
x64Executable.MoveTo(targetPath);
}
else
{
this.PrintError($"Oops! Could not find the required '{x64Executable.Name}' installer file. SMAPI was unable to install correctly.");
Console.ReadLine();
return;
this.PrintError($"Oops! Could not find the required '{x64Executable.Name}' installer file. SMAPI may not work correctly.");
}
else if (x64Executable.Exists)
x64Executable.Delete();
}
// replace mod launcher (if possible)