private void StartGame(string args) { StartButton.IsEnabled = false; LauncherManager LauncherManager = App.Kernel.Get <LauncherManager>(); Profile currentProfile = ProfileManager.CurrentProfile; GameModel model = currentProfile.GameModel; IConfiguration configuration = ConfigurationManager.GetConfiguration(model); ILauncher launcher = LauncherManager.GetLauncher(currentProfile); ConfigurationManager CM = ConfigurationManager as ConfigurationManager; // we should not provide this api as public. CM.UpdateRegistryPaths(model); bool executed = false; try { executed = launcher.Execute( UpdateRequired ? ConfigurationManager.GetLauncherEXE(model) : ConfigurationManager.GetGameEXE(model), UpdateRequired ? configuration.ConvertLauncherStartArgs(args) : configuration.ConvertGameStartArgs(args)); } catch { DialogManager.ShowMessageDialog(LanguageManager.Model.ErrorOccured, LanguageManager.Model.ErrorOccured); } if (executed) { StartButton.SetBinding(Button.ContentProperty, WaitingButtonBinding); if (currentProfile.KBLCServiceEnabled) { launcher = LauncherManager.findByType <DirectLauncher>(typeof(DirectLauncher)); launcher.Execute(EnvironmentManager.KBLCFile, "-attach -notray"); } TaskManager.CloseApp(); } else { ProfileManager.OnProfileLocked(false); EnvironmentManager.OnFileSystemLocked(false); StartButton.IsEnabled = true; } }