From 8d9d8341cdd7e78bbb281c1576a434d982126a44 Mon Sep 17 00:00:00 2001 From: Jesse Plamondon-Willard Date: Mon, 3 May 2021 19:42:30 -0400 Subject: [PATCH] fix installer leaving unneeded StardewModdingAPI-x64.exe file in installer --- docs/release-notes.md | 4 +++ src/SMAPI.Installer/InteractiveInstaller.cs | 31 ++++++++++----------- 2 files changed, 19 insertions(+), 16 deletions(-) diff --git a/docs/release-notes.md b/docs/release-notes.md index b697cd2b..b25be131 100644 --- a/docs/release-notes.md +++ b/docs/release-notes.md @@ -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). diff --git a/src/SMAPI.Installer/InteractiveInstaller.cs b/src/SMAPI.Installer/InteractiveInstaller.cs index 83ecd257..55e9c064 100644 --- a/src/SMAPI.Installer/InteractiveInstaller.cs +++ b/src/SMAPI.Installer/InteractiveInstaller.cs @@ -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); } - if (isWindows64Bit) + // handle 64-bit file { - this.PrintDebug("Making SMAPI 64-bit..."); - FileInfo x64Executable = new FileInfo(Path.Combine(paths.BundleDir.FullName, "StardewModdingAPI-x64.exe")); - if (x64Executable.Exists) + FileInfo x64Executable = new FileInfo(Path.Combine(paths.GameDir.FullName, "StardewModdingAPI-x64.exe")); + if (isWindows64Bit) { - 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)); - } - else - { - this.PrintError($"Oops! Could not find the required '{x64Executable.Name}' installer file. SMAPI was unable to install correctly."); - Console.ReadLine(); - return; + this.PrintDebug("Making SMAPI 64-bit..."); + if (x64Executable.Exists) + { + 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 may not work correctly."); } + else if (x64Executable.Exists) + x64Executable.Delete(); } // replace mod launcher (if possible)