From aceb8cf4e318b68b03bebd064bbc772253f6b13c Mon Sep 17 00:00:00 2001 From: CWX Date: Fri, 13 May 2022 22:41:15 +0100 Subject: [PATCH] initial commit --- .gitignore | 20 ++++++ Aki.Asset/icon.ico | Bin 0 -> 82761 bytes Aki.Core/Program.cs | 127 ++++++++++++++++++++++++++++++++++++ Aki.Helper/FileHelper.cs | 101 ++++++++++++++++++++++++++++ Aki.Helper/GameHelper.cs | 23 +++++++ Aki.Helper/LogHelper.cs | 55 ++++++++++++++++ Aki.Helper/ProcessHelper.cs | 35 ++++++++++ Aki.Helper/StringHelper.cs | 18 +++++ Aki.Helper/ZipHelper.cs | 33 ++++++++++ README.md | 13 ++++ SPT-AKI Installer.csproj | 24 +++++++ SPT-AKI Installer.sln | 25 +++++++ 12 files changed, 474 insertions(+) create mode 100644 .gitignore create mode 100644 Aki.Asset/icon.ico create mode 100644 Aki.Core/Program.cs create mode 100644 Aki.Helper/FileHelper.cs create mode 100644 Aki.Helper/GameHelper.cs create mode 100644 Aki.Helper/LogHelper.cs create mode 100644 Aki.Helper/ProcessHelper.cs create mode 100644 Aki.Helper/StringHelper.cs create mode 100644 Aki.Helper/ZipHelper.cs create mode 100644 README.md create mode 100644 SPT-AKI Installer.csproj create mode 100644 SPT-AKI Installer.sln diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..51ef1cc --- /dev/null +++ b/.gitignore @@ -0,0 +1,20 @@ +## SPTinstaller +*.exe +*.zip +bin/ +obj/ +*.editorconfig + +## visual studio +.vs +.idea +slnx.sqlite +slnx-journal.sqlite + +## nodejs +node_modules +node.exe +package-lock.json + +## windows +desktop.ini diff --git a/Aki.Asset/icon.ico b/Aki.Asset/icon.ico new file mode 100644 index 0000000000000000000000000000000000000000..7fda1737a5b8164592c15856befd134d814d5cea GIT binary patch literal 82761 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 M07*qoM6N<$g0b;EL;wH) literal 0 HcmV?d00001 diff --git a/Aki.Core/Program.cs b/Aki.Core/Program.cs new file mode 100644 index 0000000..7ad6803 --- /dev/null +++ b/Aki.Core/Program.cs @@ -0,0 +1,127 @@ +using System.IO; +using System; +using System.Diagnostics; +using System.Threading; +using Installer.Aki.Helper; + +namespace Installer.Aki.Core +{ + //TODO: + // delete patcher zip and aki zip + + public static class SPTinstaller + { + private static string patchRef; + private static string akiRef; + private static DirectoryInfo dir; + + static void Main(string[] args) + { + string gamePath = GameHelper.DetectOriginalGamePath(); + + if (PatcherCheck(gamePath, out patchRef)) + { + LogHelper.Info($"Correct Zip for Patcher Present: {patchRef}"); + } + else + { + LogHelper.Error("Patcher zip is Incorrect or missing"); + LogHelper.Error("Press enter to close the app"); + Console.ReadKey(); + Environment.Exit(0); + } + + if (AkiCheck(out akiRef)) + { + LogHelper.Info($"Correct Zip for SPT-AKI Present: {akiRef}"); + } + else + { + LogHelper.Error("SPT-AKI zip is Incorrect or missing"); + LogHelper.Error("Press enter to close the app"); + Console.ReadKey(); + Environment.Exit(0); + } + + // checks for input to copy game files + LogHelper.User("PLEASE PRESS ENTER TO COPY GAME FILES!"); + Console.ReadKey(); + + // copies and pastes EFT to AKI installer test folder + FileHelper.CopyDirectory(gamePath, Environment.CurrentDirectory, true); + LogHelper.User("GAME HAS BEEN COPIED, PRESS ENTER TO EXTRACT PATCHER!"); + Console.ReadKey(); + + // extracts patcher and moves out inner folders + ZipHelper.Decompress(patchRef, Environment.CurrentDirectory); + FileHelper.FindFolder(patchRef, out dir); + FileHelper.CopyDirectory(dir.FullName, Environment.CurrentDirectory, true); + if (dir.Exists) + { + dir.Delete(true); + dir.Refresh(); + if (dir.Exists) + { + LogHelper.Error("unable to delete patcher folder"); + LogHelper.Error($"please delete folder called {dir.FullName}"); + } + } + + // starts patcher and checks for user input to exit patcher and proceed + LogHelper.User("PATCHER HAS BEEN EXTRACTED, STARTING PATCHER!"); + ProcessHelper patcherProcess = new ProcessHelper(); + patcherProcess.StartProcess(Path.Join(Environment.CurrentDirectory + "/patcher.exe"), Environment.CurrentDirectory); + LogHelper.User("PATCHER HAS BEEN STARTED, TYPE YES ONCE THE PATCHER IS COMPLETE!"); + var complete = Console.ReadLine(); + + // waiting for user to enter "yes", if something else is entered do while loop + while (!string.Equals(complete, "yes", StringComparison.OrdinalIgnoreCase)) + { + LogHelper.Warning("YOU DIDNT TYPE YES, IF SOMETHING WENT WRONG MAKE A SUPPORT THREAD AND CLOSE THIS APP"); + LogHelper.User("IF IT DID FINISH TYPE YES NOW"); + complete = Console.ReadLine(); + } + + // if user input "yes" kill patcher process, delete patcher.exe, extract aki zip + if (string.Equals(complete, "yes", StringComparison.OrdinalIgnoreCase)) + { + patcherProcess.EndProcess(); + Thread.Sleep(1000); + FileHelper.DeleteFile("file", Environment.CurrentDirectory + "/patcher.exe"); + ZipHelper.Decompress(akiRef, Environment.CurrentDirectory); + LogHelper.Info("AKI HAS BEEN EXTRACTED, RUN THE SERVER AND WAIT TILL YOU SEE HAPPY SERVER THEN LAUNCHER AND ENJOY!"); + LogHelper.User("PRESS ENTER TO CLOSE THE APP"); + Console.ReadKey(); + } + } + + private static bool PatcherCheck(string gamePath, out string patchRef) + { + FileVersionInfo version = FileVersionInfo.GetVersionInfo(Path.Join(gamePath + "/EscapeFromTarkov.exe")); + string versionCheck = StringHelper.Splitter(version.ProductVersion, '-', '.', 2); + LogHelper.Info($"GAME VERSION IS: {version.ProductVersion}"); + string patcherRef = FileHelper.FindFile(Environment.CurrentDirectory, versionCheck); + + if (patcherRef != null) + { + patchRef = patcherRef; + return true; + } + patchRef = null; + return false; + } + + private static bool AkiCheck(out string akiRef) + { + string aki = FileHelper.FindFile(Environment.CurrentDirectory, "2.3.1"); + + if (aki != null) + { + akiRef = aki; + return true; + } + akiRef = null; + return false; + } + } +} \ No newline at end of file diff --git a/Aki.Helper/FileHelper.cs b/Aki.Helper/FileHelper.cs new file mode 100644 index 0000000..8f37818 --- /dev/null +++ b/Aki.Helper/FileHelper.cs @@ -0,0 +1,101 @@ +using System; +using System.IO; + +namespace Installer.Aki.Helper +{ + public static class FileHelper + { + /// + /// CopyDirectory will use old path and copy to new path and + /// asks if inner files/folders should be included + /// + /// + public static void CopyDirectory(string oldDir, string newDir, bool recursive) + { + var dir = new DirectoryInfo(oldDir); + + if (!dir.Exists) + throw new DirectoryNotFoundException($"Source directory not found: {dir.FullName}"); + + DirectoryInfo[] dirs = dir.GetDirectories(); + + Directory.CreateDirectory(newDir); + + foreach (FileInfo file in dir.GetFiles()) + { + Console.WriteLine(file.FullName); + string targetFilePath = Path.Combine(newDir, file.Name); + file.CopyTo(targetFilePath, true); + } + + if (recursive) + { + foreach (DirectoryInfo subDir in dirs) + { + string newDestinationDir = Path.Combine(newDir, subDir.Name); + CopyDirectory(subDir.FullName, newDestinationDir, true); + } + } + } + + /// + /// DeleteFiles will use a type to look for, the path + /// and if all inner files/folders should be included + /// + /// + /// Types are "file" or "folder" as a string + /// + public static void DeleteFile(string type, string filePath, bool allFolders = false) + { + // type = "file" or "folder" + if (string.Equals(type, "file", StringComparison.OrdinalIgnoreCase)) + { + File.Delete(filePath); + } + + if (string.Equals(type, "folder", StringComparison.OrdinalIgnoreCase)) + { + Directory.Delete(filePath, allFolders); + } + } + + /// + /// finds file based on Path and File name + /// + /// + /// + /// String or null + public static string FindFile(string path, string name) + { + string[] filePaths = Directory.GetFiles(path); + foreach (string file in filePaths) + { + if (file.Contains(name)) + { + return file; + } + } + return null; + } + + /// + /// Finds folder with name supplied + /// + /// + /// + /// + public static bool FindFolder(string patchRef, out DirectoryInfo dir) + { + var patchInfo = new FileInfo(patchRef); + var patchName = patchInfo.Name.Replace(patchInfo.Extension, ""); + var path = new DirectoryInfo(Path.Join(Environment.CurrentDirectory, patchName)); + if (path.Exists) + { + dir = path; + return true; + } + dir = null; + return false; + } + } +} diff --git a/Aki.Helper/GameHelper.cs b/Aki.Helper/GameHelper.cs new file mode 100644 index 0000000..4cc3bc0 --- /dev/null +++ b/Aki.Helper/GameHelper.cs @@ -0,0 +1,23 @@ +using Microsoft.Win32; +using System.Runtime.InteropServices; +using System.IO; + +namespace Installer.Aki.Helper +{ + public static class GameHelper + { + private const string registryInstall = @"Software\Wow6432Node\Microsoft\Windows\CurrentVersion\Uninstall\EscapeFromTarkov"; + + public static string DetectOriginalGamePath() + { + // We can't detect the installed path on non-Windows + if (!RuntimeInformation.IsOSPlatform(OSPlatform.Windows)) + return null; + + var uninstallStringValue = Registry.LocalMachine.OpenSubKey(registryInstall, false) + ?.GetValue("UninstallString"); + var info = (uninstallStringValue is string key) ? new FileInfo(key) : null; + return info?.DirectoryName; + } + } +} diff --git a/Aki.Helper/LogHelper.cs b/Aki.Helper/LogHelper.cs new file mode 100644 index 0000000..dd5d037 --- /dev/null +++ b/Aki.Helper/LogHelper.cs @@ -0,0 +1,55 @@ +using System; + +namespace Installer.Aki.Helper +{ + public static class LogHelper + { + /// + /// Outputs a string to console starting with [USER] with + /// a Green background and Black foreground + /// + public static void User(string text) + { + Console.BackgroundColor = ConsoleColor.Green; + Console.ForegroundColor = ConsoleColor.Black; + Console.WriteLine($"[USER]: {text}"); + Console.ResetColor(); + } + + /// + /// Outputs a string to console starting with [WARNING] with + /// a Yellow background and Black foreground + /// + public static void Warning(string text) + { + Console.BackgroundColor = ConsoleColor.Yellow; + Console.ForegroundColor = ConsoleColor.Black; + Console.WriteLine($"[WARNING]: {text}"); + Console.ResetColor(); + } + + /// + /// Outputs a string to console starting with [ERROR] with + /// a Red background and Black foreground + /// + public static void Error(string text) + { + Console.BackgroundColor = ConsoleColor.Red; + Console.ForegroundColor = ConsoleColor.Black; + Console.WriteLine($"[ERROR]: {text}"); + Console.ResetColor(); + } + + /// + /// Outputs a string to console starting with [INFO] with + /// a DarkGray background and White foreground + /// + public static void Info(string text) + { + Console.BackgroundColor = ConsoleColor.DarkGray; + Console.ForegroundColor = ConsoleColor.White; + Console.WriteLine($"[INFO]: {text}"); + Console.ResetColor(); + } + } +} diff --git a/Aki.Helper/ProcessHelper.cs b/Aki.Helper/ProcessHelper.cs new file mode 100644 index 0000000..b3d7db1 --- /dev/null +++ b/Aki.Helper/ProcessHelper.cs @@ -0,0 +1,35 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading; +using System.IO; +using System.Diagnostics; + +namespace Installer.Aki.Helper +{ + public class ProcessHelper + { + private Process _process; + + /// + /// Starts process with path and file name including include .exe, + /// sets working directory too + /// + public void StartProcess(string exeDir, string workingDir) + { + _process = new Process(); + _process.StartInfo.FileName = exeDir; + _process.StartInfo.WorkingDirectory = workingDir; + _process.Start(); + } + + /// + /// Kills the Process + /// + public void EndProcess() + { + _process.Kill(); + } + } +} diff --git a/Aki.Helper/StringHelper.cs b/Aki.Helper/StringHelper.cs new file mode 100644 index 0000000..476d7f0 --- /dev/null +++ b/Aki.Helper/StringHelper.cs @@ -0,0 +1,18 @@ +namespace Installer.Aki.Helper +{ + public static class StringHelper + { + /// + /// string to split, changes oldChar to newChar + /// + /// + /// + /// + /// + /// returns the string at a position using amount + public static string Splitter(string toSplit, char oldChar, char newChar, int amount) + { + return toSplit.Replace(oldChar, newChar).Split(newChar)[^amount]; + } + } +} diff --git a/Aki.Helper/ZipHelper.cs b/Aki.Helper/ZipHelper.cs new file mode 100644 index 0000000..f14c52c --- /dev/null +++ b/Aki.Helper/ZipHelper.cs @@ -0,0 +1,33 @@ +using SharpCompress.Common; +using SharpCompress.Readers; +using System; +using System.IO; + +namespace Installer.Aki.Helper +{ + public static class ZipHelper + { + /// + /// will extract Zips in LZMA compression format, using Zips path + /// to new path + /// + public static void Decompress(string zipPath, string extPath) + { + Stream stream = File.OpenRead(zipPath); + var reader = ReaderFactory.Open(stream); + + while (reader.MoveToNextEntry()) + { + if (!reader.Entry.IsDirectory) + { + Console.WriteLine(reader.Entry.Key); + reader.WriteEntryToDirectory(extPath, new ExtractionOptions() + { + ExtractFullPath = true, + Overwrite = true + }); + } + } + } + } +} diff --git a/README.md b/README.md new file mode 100644 index 0000000..bc3589f --- /dev/null +++ b/README.md @@ -0,0 +1,13 @@ +# SPTinstaller. +## EFT - SPT-AKI. - 2.3.1 + +### New implementation of an Installer for SPT-AKI. +- copies files from registry location to new location, +- extracts, runs and deletes patcher with minor user input, +- extracts Aki + +### plans: +- maybe download right version for EFT patcher and server +- maybe make a cool UI :OWO: + + diff --git a/SPT-AKI Installer.csproj b/SPT-AKI Installer.csproj new file mode 100644 index 0000000..b4e56e0 --- /dev/null +++ b/SPT-AKI Installer.csproj @@ -0,0 +1,24 @@ + + + + Exe + net6.0 + true + true + true + true + Aki.Asset\icon.ico + win-x64 + embedded + + + + + + + + + + + + diff --git a/SPT-AKI Installer.sln b/SPT-AKI Installer.sln new file mode 100644 index 0000000..577839a --- /dev/null +++ b/SPT-AKI Installer.sln @@ -0,0 +1,25 @@ + +Microsoft Visual Studio Solution File, Format Version 12.00 +# Visual Studio Version 17 +VisualStudioVersion = 17.1.32407.343 +MinimumVisualStudioVersion = 10.0.40219.1 +Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "SPT-AKI Installer", "SPT-AKI Installer.csproj", "{7B07749A-3BE8-41B5-9B98-9F41C83FA15B}" +EndProject +Global + GlobalSection(SolutionConfigurationPlatforms) = preSolution + Debug|Any CPU = Debug|Any CPU + Release|Any CPU = Release|Any CPU + EndGlobalSection + GlobalSection(ProjectConfigurationPlatforms) = postSolution + {7B07749A-3BE8-41B5-9B98-9F41C83FA15B}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {7B07749A-3BE8-41B5-9B98-9F41C83FA15B}.Debug|Any CPU.Build.0 = Debug|Any CPU + {7B07749A-3BE8-41B5-9B98-9F41C83FA15B}.Release|Any CPU.ActiveCfg = Release|Any CPU + {7B07749A-3BE8-41B5-9B98-9F41C83FA15B}.Release|Any CPU.Build.0 = Release|Any CPU + EndGlobalSection + GlobalSection(SolutionProperties) = preSolution + HideSolutionNode = FALSE + EndGlobalSection + GlobalSection(ExtensibilityGlobals) = postSolution + SolutionGuid = {6F8EE63B-3DC5-4168-A560-9B39F7785D84} + EndGlobalSection +EndGlobal