public void RemoveController(InstallController controller)
        {
            controller.Installed -= Controller_Installed;

            try
            {
                controller.Dispose();
            }
            catch (Exception e) when(!PlayniteEnvironment.ThrowAllErrors)
            {
                logger.Error(e, $"Failed to dispose game controller {controller.GetType()}");
            }

            InstallControllers.Remove(controller);
        }
        public void Setup()
        {
            _container = new MocksAndStubsContainer();

            _applicationSettings           = _container.ApplicationSettings;
            _applicationSettings.Installed = false;

            _settingsService     = _container.SettingsService;
            _userService         = _container.UserService;
            _configReaderWriter  = _container.ConfigReaderWriter;
            _repositoryFactory   = _container.RepositoryFactory;
            _installationService = _container.InstallationService;
            _databaseTester      = _container.DatabaseTester;
            _installerRepository = _container.InstallerRepository;

            _installController = new InstallController(_applicationSettings, _configReaderWriter, _installationService, _databaseTester);
        }
        public void Setup()
        {
            _container = new MocksAndStubsContainer();

            _applicationSettings           = _container.ApplicationSettings;
            _applicationSettings.Installed = false;

            _context            = _container.UserContext;
            _repository         = _container.Repository;
            _pluginFactory      = _container.PluginFactory;
            _settingsService    = _container.SettingsService;
            _userService        = _container.UserService;
            _historyService     = _container.HistoryService;
            _pageService        = _container.PageService;
            _searchService      = _container.SearchService;
            _configReaderWriter = new ConfigReaderWriterStub();

            _installController = new InstallController(_applicationSettings, _userService, _pageService, _searchService, _repository, _settingsService, _context, _configReaderWriter);
        }
        public void finalize_should_install_and_save_site_settings()
        {
            // Arrange
            var model = new SettingsViewModel();

            model.AdminEmail    = "email";
            model.AdminPassword = "******";
            model.Theme         = "ConcupiscentGoatOnHolidayTheme";

            var installationServiceMock = new Mock <IInstallationService>();

            _installController = new InstallController(_applicationSettings, _configReaderWriter, installationServiceMock.Object, _databaseTester);

            // Act
            _installController.FinalizeInstall(model);

            // Assert
            Assert.That(model.IgnoreSearchIndexErrors, Is.True);
            Assert.That(model.IsPublicSite, Is.True);

            installationServiceMock.Verify(service => service.Install(model));

            Assert.That(_configReaderWriter.Saved, Is.True);
        }
        private static int Main(string[] args)
        {
            try
            {
                var log = SetUpLogConfig();

                var options = Options.ParseArguments(args);

                var settings = ConfigurationParser.ParseSettings(log, options.ConfigFile);
                Settings.Default = settings;

                var installController = new InstallController(settings.ServiceName, settings.IsProcessElevated);
                if (options.Uninstall)
                {
                    installController.Uninstall();
                }
                else if (options.Install)
                {
                    installController.Install();
                    if (options.Start)
                    {
                        installController.StartService();
                    }
                }
                else if (options.Start)
                {
                    installController.StartService();
                }
                else if (options.Stop)
                {
                    installController.StopService();
                }
                else if (options.InstallOrStart)
                {
                    installController.InstallOrStart();
                }
                else
                {
                    Thread.CurrentThread.Name = "Main";
                    settings.TestMode         = options.TestMode;
                    log.InfoFormat("New Relic Sql Server Plugin");
                    log.Info("Loaded Settings:");
                    settings.ToLog(log);

                    if (!settings.Endpoints.Any())
                    {
                        log.Error("No sql endpoints found please, update the configuration file to monitor one or more sql server instances.");
                    }

                    if (Environment.UserInteractive)
                    {
                        RunInteractive(settings);
                    }
                    else
                    {
                        ServiceBase[] services = { new SqlMonitorService(settings) };
                        ServiceBase.Run(services);
                    }
                }

                return(0);
            }
            catch (Exception ex)
            {
                Console.Out.WriteLine(ex.Message);

                if (Environment.UserInteractive)
                {
                    Console.Out.WriteLine();
                    Console.Out.WriteLine("Press any key to exit...");
                    Console.ReadKey();
                }

                return(-1);
            }
        }
 public void AddController(InstallController controller)
 {
     controller.Installed += Controller_Installed;
     InstallControllers.Add(controller);
 }