/// <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);
            }
        }
Exemple #2
0
        /// <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);
        }