From a69b4d50bff509916cee1fbbfd8b01fd9459db2a Mon Sep 17 00:00:00 2001 From: shananas Date: Mon, 4 Sep 2023 14:23:00 -0400 Subject: [PATCH 1/2] Mod Manager update for new panacea with error handeling to prevent a partial panacea install causing the game to crash --- .../ViewModels/SetupWizardViewModel.cs | 57 +++++++++++++++++++ 1 file changed, 57 insertions(+) diff --git a/OpenKh.Tools.ModsManager/ViewModels/SetupWizardViewModel.cs b/OpenKh.Tools.ModsManager/ViewModels/SetupWizardViewModel.cs index 8bf9f5cbe..43d696031 100644 --- a/OpenKh.Tools.ModsManager/ViewModels/SetupWizardViewModel.cs +++ b/OpenKh.Tools.ModsManager/ViewModels/SetupWizardViewModel.cs @@ -388,8 +388,50 @@ public SetupWizardViewModel() InstallPanaceaCommand = new RelayCommand(_ => { if (File.Exists(PanaceaSourceLocation)) + { // Again, do not bother in debug mode File.Copy(PanaceaSourceLocation, PanaceaDestinationLocation, true); + try + { + File.Copy(Path.Combine(AppContext.BaseDirectory, "avcodec-vgmstream-59.dll"), Path.Combine(PcReleaseLocation, "avcodec-vgmstream-59.dll"), true); + File.Copy(Path.Combine(AppContext.BaseDirectory, "avformat-vgmstream-59.dll"), Path.Combine(PcReleaseLocation, "avformat-vgmstream-59.dll"), true); + File.Copy(Path.Combine(AppContext.BaseDirectory, "avutil-vgmstream-57.dll"), Path.Combine(PcReleaseLocation, "avutil-vgmstream-57.dll"), true); + File.Copy(Path.Combine(AppContext.BaseDirectory, "bass.dll"), Path.Combine(PcReleaseLocation, "bass.dll"), true); + File.Copy(Path.Combine(AppContext.BaseDirectory, "bass_vgmstream.dll"), Path.Combine(PcReleaseLocation, "bass_vgmstream.dll"), true); + File.Copy(Path.Combine(AppContext.BaseDirectory, "libatrac9.dll"), Path.Combine(PcReleaseLocation, "libatrac9.dll"), true); + File.Copy(Path.Combine(AppContext.BaseDirectory, "libcelt-0061.dll"), Path.Combine(PcReleaseLocation, "libcelt-0061.dll"), true); + File.Copy(Path.Combine(AppContext.BaseDirectory, "libcelt-0110.dll"), Path.Combine(PcReleaseLocation, "libcelt-0110.dll"), true); + File.Copy(Path.Combine(AppContext.BaseDirectory, "libg719_decode.dll"), Path.Combine(PcReleaseLocation, "libg719_decode.dll"), true); + File.Copy(Path.Combine(AppContext.BaseDirectory, "libmpg123-0.dll"), Path.Combine(PcReleaseLocation, "libmpg123-0.dll"), true); + File.Copy(Path.Combine(AppContext.BaseDirectory, "libspeex-1.dll"), Path.Combine(PcReleaseLocation, "libspeex-1.dll"), true); + File.Copy(Path.Combine(AppContext.BaseDirectory, "libvorbis.dll"), Path.Combine(PcReleaseLocation, "libvorbis.dll"), true); + File.Copy(Path.Combine(AppContext.BaseDirectory, "swresample-vgmstream-4.dll"), Path.Combine(PcReleaseLocation, "swresample-vgmstream-4.dll"), true); + } + catch (Exception e) + { + MessageBox.Show( + $"Missing panacea dependencies. Unable to fully install panacea.", + "Extraction error", + MessageBoxButton.OK, + MessageBoxImage.Error); + File.Delete(PanaceaDestinationLocation); + File.Delete(Path.Combine(PcReleaseLocation, "avcodec-vgmstream-59.dll")); + File.Delete(Path.Combine(PcReleaseLocation, "avformat-vgmstream-59.dll")); + File.Delete(Path.Combine(PcReleaseLocation, "avutil-vgmstream-57.dll")); + File.Delete(Path.Combine(PcReleaseLocation, "bass.dll")); + File.Delete(Path.Combine(PcReleaseLocation, "bass_vgmstream.dll")); + File.Delete(Path.Combine(PcReleaseLocation, "libatrac9.dll")); + File.Delete(Path.Combine(PcReleaseLocation, "libcelt-0061.dll")); + File.Delete(Path.Combine(PcReleaseLocation, "libcelt-0110.dll")); + File.Delete(Path.Combine(PcReleaseLocation, "libg719_decode.dll")); + File.Delete(Path.Combine(PcReleaseLocation, "libmpg123-0.dll")); + File.Delete(Path.Combine(PcReleaseLocation, "libspeex-1.dll")); + File.Delete(Path.Combine(PcReleaseLocation, "libvorbis.dll")); + File.Delete(Path.Combine(PcReleaseLocation, "swresample-vgmstream-4.dll")); + PanaceaInstalled = false; + return; + } + } OnPropertyChanged(nameof(IsLastPanaceaVersionInstalled)); OnPropertyChanged(nameof(PanaceaInstalledVisibility)); OnPropertyChanged(nameof(PanaceaNotInstalledVisibility)); @@ -398,7 +440,22 @@ public SetupWizardViewModel() RemovePanaceaCommand = new RelayCommand(_ => { if (File.Exists(PanaceaDestinationLocation)) + { File.Delete(PanaceaDestinationLocation); + File.Delete(Path.Combine(PcReleaseLocation, "avcodec-vgmstream-59.dll")); + File.Delete(Path.Combine(PcReleaseLocation, "avformat-vgmstream-59.dll")); + File.Delete(Path.Combine(PcReleaseLocation, "avutil-vgmstream-57.dll")); + File.Delete(Path.Combine(PcReleaseLocation, "bass.dll")); + File.Delete(Path.Combine(PcReleaseLocation, "bass_vgmstream.dll")); + File.Delete(Path.Combine(PcReleaseLocation, "libatrac9.dll")); + File.Delete(Path.Combine(PcReleaseLocation, "libcelt-0061.dll")); + File.Delete(Path.Combine(PcReleaseLocation, "libcelt-0110.dll")); + File.Delete(Path.Combine(PcReleaseLocation, "libg719_decode.dll")); + File.Delete(Path.Combine(PcReleaseLocation, "libmpg123-0.dll")); + File.Delete(Path.Combine(PcReleaseLocation, "libspeex-1.dll")); + File.Delete(Path.Combine(PcReleaseLocation, "libvorbis.dll")); + File.Delete(Path.Combine(PcReleaseLocation, "swresample-vgmstream-4.dll")); + } OnPropertyChanged(nameof(IsLastPanaceaVersionInstalled)); OnPropertyChanged(nameof(PanaceaInstalledVisibility)); OnPropertyChanged(nameof(PanaceaNotInstalledVisibility)); From dc0e1347e139fcb691bc830659b43f520bf697e3 Mon Sep 17 00:00:00 2001 From: shananas Date: Mon, 4 Sep 2023 15:07:10 -0400 Subject: [PATCH 2/2] Post build event to copy the 13 new dll dependencies for Panacea into its release folder --- OpenKh.Research.Panacea/OpenKh.Research.Panacea.vcxproj | 3 +++ 1 file changed, 3 insertions(+) diff --git a/OpenKh.Research.Panacea/OpenKh.Research.Panacea.vcxproj b/OpenKh.Research.Panacea/OpenKh.Research.Panacea.vcxproj index af3c24be5..12fd0eb1e 100644 --- a/OpenKh.Research.Panacea/OpenKh.Research.Panacea.vcxproj +++ b/OpenKh.Research.Panacea/OpenKh.Research.Panacea.vcxproj @@ -86,6 +86,9 @@ false Shlwapi.lib;%(AdditionalDependencies) + + copy Dependencies\*.dll ..\Release\ +