static int RunMain() { var commandLine = new CommandLineParser(Environment.GetCommandLineArgs()); Resources.InitGameDirectory(commandLine[Resources.GamesManagerArguments.GameDirOverrideArgument]); Application.ThreadException += Application_ThreadException; Application.EnableVisualStyles(); Application.SetCompatibleTextRenderingDefault(false); Game game = new Game(FileSystem.Combine(Resources.GameBaseDir,Resources.GameConfig)); if (game.ErrorCollection.Count>0) { ViewFactory.Current.CreateView<IMessage>().Show("Game configuration invalid " + game.ErrorCollection[0], "Game configuration invalid"); return -1; } Game.Current = game; Resources.InitUserDirectory(Game.Current.Uid, commandLine[Resources.GamesManagerArguments.UserDirOverrideArgument]!=null); Logger.Current = new Logger(Path.Combine(Resources.GameUserDir, "GamesManagerLog.txt")); if (commandLine[Resources.GamesManagerArguments.RegisterArgument] != null) { Logger.Current.Write(LogInfoLevel.Info,"Registering game..."); if (!UACControl.IsAdmin()) { Logger.Current.Write(LogInfoLevel.Error, "Registering requires administrator access"); ViewFactory.Current.CreateView<IMessage>().Show("Registering requires administrator access", "Administrator access required"); return -1; } var installer = new GameRegistrar(true, Game.Current); return installer.Start()==LongRunningTaskResult.Completed ? 0: -1; } else if (commandLine[Resources.GamesManagerArguments.DeregisterArgument] != null) { Logger.Current.Write(LogInfoLevel.Info, "Deregistering game..."); if (!UACControl.IsAdmin()) { Logger.Current.Write(LogInfoLevel.Error, "Deregistering requires administrator access"); ViewFactory.Current.CreateView<IMessage>().Show("Deregistering requires administrator access", "Administrator access required"); return -1; } var uninstaller = new GameRegistrar(false, Game.Current); return uninstaller.Start() == LongRunningTaskResult.Completed ? 0 : -1; } else if (commandLine[Resources.GamesManagerArguments.UpdateFrameworkArgument] != null || commandLine[Resources.GamesManagerArguments.UpdateGameArgument] != null) { Logger.Current.Write(LogInfoLevel.Info, "Updating game/framework..."); if (commandLine[Resources.GamesManagerArguments.UpdateFrameworkArgument] != null && commandLine[Resources.GamesManagerArguments.FrameworkUpdateHashArgument]==null) { Logger.Current.Write(LogInfoLevel.Error, "Framework update MD5 hash argument missing"); ViewFactory.Current.CreateView<IMessage>().Show("Framework update MD5 hash argument missing", "Missing argument"); return -1; } if (commandLine[Resources.GamesManagerArguments.UpdateGameArgument] != null && commandLine[Resources.GamesManagerArguments.GameUpdateHashArgument] == null) { Logger.Current.Write(LogInfoLevel.Error, "Game update MD5 hash argument missing"); ViewFactory.Current.CreateView<IMessage>().Show("Game update MD5 hash argument missing", "Missing argument"); return -1; } if (!UACControl.IsAdmin()) { Logger.Current.Write(LogInfoLevel.Error, "Updating requires administrator access"); ViewFactory.Current.CreateView<IMessage>().Show("Updating requires administrator access", "Administrator access required"); return -1; } var presenter = new UpdateGamePresenter( commandLine[Resources.GamesManagerArguments.UpdateGameArgument], commandLine[Resources.GamesManagerArguments.GameUpdateHashArgument], commandLine[Resources.GamesManagerArguments.UpdateFrameworkArgument], commandLine[Resources.GamesManagerArguments.FrameworkUpdateHashArgument]); presenter.ShowView(); Application.Run(presenter.View as Form); Process.Start(Resources.FrameworkUpdaterExecutable, Resources.GamesManagerBootArguments(string.Empty,string.Empty,string.Empty,string.Empty)); } else { Logger.Current.Write(LogInfoLevel.Info, "Launching game..."); var presenter = new LaunchGamePresenter(commandLine[Resources.GamesManagerArguments.NoUpdateCheckArgument] == null); presenter.ShowView(); Application.Run(presenter.View as Form); } return 0; }
static int RunMain() { CommandLineParser commandLine; if (FileSystem.Current.FileExists(Resources.ParamsOverrideFile)) { using (var stream = FileSystem.Current.GetFile(Resources.ParamsOverrideFile).OpenStream(FileMode.Open)) { using (var reader = new StreamReader(stream)) { commandLine = new CommandLineParser(reader.ReadToEnd().Split(), false); } } } else { commandLine = new CommandLineParser(Environment.GetCommandLineArgs()); } Resources.InitGameDirectory(commandLine[Resources.GamesManagerArguments.GameDirOverrideArgument]); Application.ThreadException += Application_ThreadException; Application.EnableVisualStyles(); Application.SetCompatibleTextRenderingDefault(false); Game game = new Game(FileSystem.Combine(Resources.GameBaseDir, Resources.GameConfig)); if (game.ErrorCollection.Count > 0) { ViewFactory.Current.CreateView <IMessage>().Show("Game configuration invalid " + game.ErrorCollection[0], "Game configuration invalid"); return(-1); } Game.Current = game; Resources.InitUserDirectory(Game.Current.Uid, commandLine[Resources.GamesManagerArguments.UserDirOverrideArgument] != null); Logger.Current = new Logger(Path.Combine(Resources.GameUserDir, "GamesManagerLog.txt")); if (commandLine[Resources.GamesManagerArguments.RegisterArgument] != null) { Logger.Current.Write(LogInfoLevel.Info, "Registering game..."); if (!UACControl.IsAdmin()) { Logger.Current.Write(LogInfoLevel.Error, "Registering requires administrator access"); ViewFactory.Current.CreateView <IMessage>().Show("Registering requires administrator access", "Administrator access required"); return(-1); } var installer = new GameRegistrar(true, Game.Current); return(installer.Start() == LongRunningTaskResult.Completed ? 0: -1); } else if (commandLine[Resources.GamesManagerArguments.DeregisterArgument] != null) { Logger.Current.Write(LogInfoLevel.Info, "Deregistering game..."); if (!UACControl.IsAdmin()) { Logger.Current.Write(LogInfoLevel.Error, "Deregistering requires administrator access"); ViewFactory.Current.CreateView <IMessage>().Show("Deregistering requires administrator access", "Administrator access required"); return(-1); } var uninstaller = new GameRegistrar(false, Game.Current); return(uninstaller.Start() == LongRunningTaskResult.Completed ? 0 : -1); } else if (commandLine[Resources.GamesManagerArguments.UpdateFrameworkArgument] != null || commandLine[Resources.GamesManagerArguments.UpdateGameArgument] != null) { Logger.Current.Write(LogInfoLevel.Info, "Updating game/framework..."); if (commandLine[Resources.GamesManagerArguments.UpdateFrameworkArgument] != null && commandLine[Resources.GamesManagerArguments.FrameworkUpdateHashArgument] == null) { Logger.Current.Write(LogInfoLevel.Error, "Framework update MD5 hash argument missing"); ViewFactory.Current.CreateView <IMessage>().Show("Framework update MD5 hash argument missing", "Missing argument"); return(-1); } if (commandLine[Resources.GamesManagerArguments.UpdateGameArgument] != null && commandLine[Resources.GamesManagerArguments.GameUpdateHashArgument] == null) { Logger.Current.Write(LogInfoLevel.Error, "Game update MD5 hash argument missing"); ViewFactory.Current.CreateView <IMessage>().Show("Game update MD5 hash argument missing", "Missing argument"); return(-1); } if (!UACControl.IsAdmin()) { Logger.Current.Write(LogInfoLevel.Error, "Updating requires administrator access"); ViewFactory.Current.CreateView <IMessage>().Show("Updating requires administrator access", "Administrator access required"); return(-1); } var presenter = new UpdateGamePresenter( commandLine[Resources.GamesManagerArguments.UpdateGameArgument], commandLine[Resources.GamesManagerArguments.GameUpdateHashArgument], commandLine[Resources.GamesManagerArguments.UpdateFrameworkArgument], commandLine[Resources.GamesManagerArguments.FrameworkUpdateHashArgument]); presenter.ShowView(); Application.Run(presenter.View as Form); Process.Start(Resources.FrameworkUpdaterExecutable, Resources.GamesManagerBootArguments(string.Empty, string.Empty, string.Empty, string.Empty)); } else { Logger.Current.Write(LogInfoLevel.Info, "Launching game..."); var presenter = new LaunchGamePresenter(commandLine[Resources.GamesManagerArguments.NoUpdateCheckArgument] == null); presenter.ShowView(); Application.Run(presenter.View as Form); } return(0); }