예제 #1
0
        public virtual void Start()
        {
            _iisProvider.StopServer();
            _securityProvider.MakeAccessible();

            if (_securityProvider.IsCurrentUserAdmin())
            {
                var tempFiles = Path.Combine(RuntimeEnvironment.GetRuntimeDirectory(), "Temporary ASP.NET Files");
                logger.Debug("Creating Temporary ASP.Net folder: {0}", tempFiles);
                _diskProvider.CreateDirectory(tempFiles);
            }

            _iisProvider.StartServer();
            //Todo: verify that IIS is actually started

            _debuggerProvider.Attach();

            if (_environmentProvider.IsUserInteractive && _configFileProvider.LaunchBrowser)
            {
                try
                {
                    logger.Info("Starting default browser. {0}", _iisProvider.AppUrl);
                    _processProvider.Start(_iisProvider.AppUrl);
                }
                catch (Exception e)
                {
                    logger.ErrorException("Failed to open URL in default browser.", e);
                }
            }

            _monitoringProvider.Start();
        }
예제 #2
0
        public virtual void Start(ProgressNotification notification, dynamic options)
        {
            notification.CurrentMessage = "Restarting NzbDrone";
            logger.Info("Restarting NzbDrone");

            _iisProvider.StopServer();
        }
예제 #3
0
        public virtual void Start(string targetFolder)
        {
            Verify(targetFolder);
            AppType appType = AppType.Normal;

            logger.Info("Stopping all running services");

            if (_serviceProvider.ServiceExist(ServiceProvider.NZBDRONE_SERVICE_NAME) &&
                _serviceProvider.IsServiceRunning(ServiceProvider.NZBDRONE_SERVICE_NAME))
            {
                appType = AppType.Service;
                _serviceProvider.Stop(ServiceProvider.NZBDRONE_SERVICE_NAME);
            }

            else
            {
                appType = AppType.Normal;
            }

            //TODO:Should be able to restart service if anything beyond this point fails
            logger.Info("Killing all running processes");
            var processes = _processProvider.GetProcessByName(ProcessProvider.NzbDroneProccessName);

            foreach (var processInfo in processes)
            {
                _processProvider.Kill(processInfo.Id);
            }

            var consoleProcesses = _processProvider.GetProcessByName(ProcessProvider.NzbDroneConsoleProccessName);

            foreach (var processInfo in consoleProcesses)
            {
                appType = AppType.Console;
                _processProvider.Kill(processInfo.Id);
            }

            logger.Info("Killing all orphan IISExpress processes");
            _iisProvider.StopServer();

            logger.Info("Creating backup of existing installation");
            _diskProvider.CopyDirectory(targetFolder, _environmentProvider.GetUpdateBackUpFolder());

            logger.Info("Moving update package to target");

            try
            {
                _diskProvider.CopyDirectory(_environmentProvider.GetUpdatePackageFolder(), targetFolder);

                logger.Trace("Deleting Update Package.");
                _diskProvider.DeleteFolder(_environmentProvider.GetUpdatePackageFolder(), true);
            }
            catch (Exception e)
            {
                RollBack(targetFolder);

                foreach (var key in e.Data.Keys)
                {
                    logger.Trace("Key: {0}, Value: {1}", key, e.Data[key]);
                }

                logger.FatalException("Failed to copy upgrade package to target folder.", e);
            }
            finally
            {
                StartNzbDrone(appType, targetFolder);
            }
        }
예제 #4
0
 private void ProgramExited(object sender, EventArgs e)
 {
     _iisProvider.StopServer();
 }