From 1286b585015b085672afbadcc1408584bab94df2 Mon Sep 17 00:00:00 2001 From: Lyssa Date: Wed, 2 Apr 2025 18:23:16 +0400 Subject: [PATCH] fix dumping vista store (really hacky fix) --- LibTSforge/SPP/SPPUtils.cs | 33 ++++++++++++++-------- TSforgeCLI/Properties/launchSettings.json | 8 ++++++ vista.dat | Bin 0 -> 21788 bytes 3 files changed, 30 insertions(+), 11 deletions(-) create mode 100644 TSforgeCLI/Properties/launchSettings.json create mode 100644 vista.dat diff --git a/LibTSforge/SPP/SPPUtils.cs b/LibTSforge/SPP/SPPUtils.cs index 1046439..1a6ef62 100644 --- a/LibTSforge/SPP/SPPUtils.cs +++ b/LibTSforge/SPP/SPPUtils.cs @@ -46,8 +46,9 @@ namespace LibTSforge.SPP { continue; } - catch (InvalidOperationException) + catch (InvalidOperationException ex) { + Logger.WriteLine("Warning: Stopping sppsvc failed, retrying. Details:" + ex.Message); System.Threading.Thread.Sleep(500); continue; } @@ -110,8 +111,9 @@ namespace LibTSforge.SPP { continue; } - catch (InvalidOperationException) + catch (InvalidOperationException ex) { + Logger.WriteLine("Warning: Starting slsvc failed, retrying. Details:" + ex.Message); System.Threading.Thread.Sleep(500); continue; } @@ -250,9 +252,13 @@ namespace LibTSforge.SPP public static void DumpStore(PSVersion version, bool production, string filePath, string encrFilePath) { + bool manageSpp = false; + if (encrFilePath == null) { encrFilePath = GetPSPath(version); + manageSpp = true; + KillSPP(version); } if (string.IsNullOrEmpty(encrFilePath) || !File.Exists(encrFilePath)) @@ -260,17 +266,22 @@ namespace LibTSforge.SPP throw new FileNotFoundException("Store does not exist at expected path '" + encrFilePath + "'."); } - KillSPP(version); - - using (FileStream fs = File.Open(encrFilePath, FileMode.OpenOrCreate, FileAccess.ReadWrite, FileShare.None)) + try { - byte[] encrData = fs.ReadAllBytes(); - File.WriteAllBytes(filePath, PhysStoreCrypto.DecryptPhysicalStore(encrData, production, version)); + using (FileStream fs = File.Open(encrFilePath, FileMode.Open, FileAccess.Read, FileShare.Read)) + { + byte[] encrData = fs.ReadAllBytes(); + File.WriteAllBytes(filePath, PhysStoreCrypto.DecryptPhysicalStore(encrData, production, version)); + } + Logger.WriteLine("Store dumped successfully to '" + filePath + "'."); + } + finally + { + if (manageSpp) + { + RestartSPP(version); + } } - - RestartSPP(version); - - Logger.WriteLine("Store dumped successfully to '" + filePath + "'."); } public static void LoadStore(PSVersion version, bool production, string filePath) diff --git a/TSforgeCLI/Properties/launchSettings.json b/TSforgeCLI/Properties/launchSettings.json new file mode 100644 index 0000000..112530f --- /dev/null +++ b/TSforgeCLI/Properties/launchSettings.json @@ -0,0 +1,8 @@ +{ + "profiles": { + "TSforgeCLI": { + "commandName": "Project", + "commandLineArgs": "/dump vista.dat blah.dat /ver vista" + } + } +} \ No newline at end of file diff --git a/vista.dat b/vista.dat new file mode 100644 index 0000000000000000000000000000000000000000..97ff49778873106e1718cf29ab3cc6f785cae8e4 GIT binary patch literal 21788 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 LQHmG?f%pCcE?fw> literal 0 HcmV?d00001