/// <summary> /// Validates packaged files, ensures target directory looks like a TR game. /// </summary> public void ValidateInstallation() { try { ValidatePackagedFiles(); ProgramData.NLogger.Info("Successfully validated packaged files using MD5 hashes."); CheckGameDirLooksLikeATrInstall(); ProgramData.NLogger.Info($"Parent directory seems like a {ProgramData.GameAbbreviation} game installation."); } catch (Exception e) { if (e is BadInstallationLocationException || e is RequiredFileMissingException || e is InvalidGameFileException) { ProgramData.NLogger.Fatal($"Installation failed to validate. {e.Message}\n{e.StackTrace}"); ConsoleIO.PrintWithColor(e.Message, ConsoleColor.Red); Console.WriteLine("You are advised to re-install the latest release to fix the issue:"); Console.WriteLine(ProgramData.MiscInfo.LatestReleaseLink); TRVSProgramManager.EarlyPauseAndExit(2); } const string statement = "An unhandled exception occurred while validating your installation."; ProgramManager.GiveErrorMessageAndExit(statement, e, 1); } }
/// <summary> /// Runs the TR version swapper. /// </summary> /// <param name="args">Command-line arguments</param> /// <returns> /// OS exit code /// </returns> public int Main(IEnumerable <string> args) { var programManager = new TRVSProgramManager(ProgramData); programManager.ManageProgram(args); var installationManager = (TI)Activator.CreateInstance(typeof(TI), ProgramData, programManager, FileAudit, Directories); installationManager.VersionCheck(); installationManager.ValidateInstallation(); var versionSwapper = (TV)Activator.CreateInstance(typeof(TV), ProgramData, programManager, Directories); versionSwapper.SwapVersions(); ConsoleIO.PrintHeader("Version swap complete!", "Press any key to exit...", ConsoleColor.White); Console.ReadKey(true); return(0); }