Esempio n. 1
0
        private List <int> GetOtherNzbDroneProcessIds()
        {
            try
            {
                var currentId = _processProvider.GetCurrentProcess().Id;

                var otherProcesses = _processProvider.FindProcessByName(ProcessProvider.NZB_DRONE_CONSOLE_PROCESS_NAME)
                                     .Union(_processProvider.FindProcessByName(ProcessProvider.NZB_DRONE_PROCESS_NAME))
                                     .Select(c => c.Id)
                                     .Except(new[] { currentId })
                                     .ToList();

                if (otherProcesses.Any())
                {
                    _logger.Info("{0} instance(s) of Sonarr are running", otherProcesses.Count);
                }

                return(otherProcesses);
            }
            catch (Exception ex)
            {
                _logger.Warn(ex, "Failed to check for multiple instances of Sonarr.");
                return(new List <int>());
            }
        }
Esempio n. 2
0
        private string GetUpdaterArgs(string updateSandboxFolder)
        {
            var processId            = _processProvider.GetCurrentProcess().Id.ToString();
            var executingApplication = _runtimeInfo.ExecutingApplication;

            return(String.Join(" ", processId, updateSandboxFolder.WrapInQuotes(), executingApplication.WrapInQuotes()));
        }
Esempio n. 3
0
        private string GetUpdaterArgs(string updateSandboxFolder)
        {
            var processId            = _processProvider.GetCurrentProcess().Id.ToString();
            var executingApplication = _runtimeInfo.ExecutingApplication;

            return(string.Join(" ", processId, updateSandboxFolder.TrimEnd(Path.DirectorySeparatorChar).WrapInQuotes(), executingApplication.WrapInQuotes(), _startupContext.PreservedArguments));
        }
Esempio n. 4
0
 public virtual void EnsurePriority(object sender)
 {
     try
     {
         if (_processProvider.GetCurrentProcessPriority() != ProcessPriorityClass.Normal)
         {
             _processProvider.SetPriority(_processProvider.GetCurrentProcess().Id, ProcessPriorityClass.Normal);
         }
     }
     catch (Exception e)
     {
         _logger.WarnException("Unable to verify priority", e);
     }
 }
Esempio n. 5
0
        private List <int> GetOtherNzbDroneProcessIds()
        {
            var currentId      = _processProvider.GetCurrentProcess().Id;
            var otherProcesses = _nzbDroneProcessProvider.FindNzbDroneProcesses()
                                 .Select(c => c.Id)
                                 .Except(new[] { currentId })
                                 .ToList();

            if (otherProcesses.Any())
            {
                _logger.Info("{0} instance(s) of NzbDrone are running", otherProcesses.Count);
            }

            return(otherProcesses);
        }
Esempio n. 6
0
        private List <int> GetOtherNzbDroneProcessIds()
        {
            var currentId      = _processProvider.GetCurrentProcess().Id;
            var otherProcesses = _processProvider.FindProcessByName(ProcessProvider.NZB_DRONE_CONSOLE_PROCESS_NAME)
                                 .Union(_processProvider.FindProcessByName(ProcessProvider.NZB_DRONE_PROCESS_NAME))
                                 .Select(c => c.Id)
                                 .Except(new[] { currentId })
                                 .ToList();

            if (otherProcesses.Any())
            {
                _logger.Info("{0} instance(s) of NzbDrone are running", otherProcesses.Count);
            }

            return(otherProcesses);
        }
Esempio n. 7
0
        public void Write()
        {
            var filename = Path.Combine(_appFolderInfo.AppDataFolder, "nzbdrone.pid");

            if (OsInfo.IsMono)
            {
                try
                {
                    File.WriteAllText(filename, _processProvider.GetCurrentProcess().Id.ToString());
                }
                catch (Exception ex)
                {
                    _logger.Error("Unable to write PID file: " + filename, ex);
                    throw;
                }
            }
        }
        private void InstallUpdate(UpdatePackage updatePackage)
        {
            try
            {
                var updateSandboxFolder = _appFolderInfo.GetUpdateSandboxFolder();

                var packageDestination = Path.Combine(updateSandboxFolder, updatePackage.FileName);

                if (_diskProvider.FolderExists(updateSandboxFolder))
                {
                    _logger.Info("Deleting old update files");
                    _diskProvider.DeleteFolder(updateSandboxFolder, true);
                }

                _logger.ProgressInfo("Downloading update {0} [{1}]", updatePackage.Version, updatePackage.Branch);
                _logger.Debug("Downloading update package from [{0}] to [{1}]", updatePackage.Url, packageDestination);
                _httpProvider.DownloadFile(updatePackage.Url, packageDestination);

                _logger.ProgressInfo("Extracting Update package");
                _archiveService.Extract(packageDestination, updateSandboxFolder);
                _logger.Info("Update package extracted successfully");

                _logger.Info("Preparing client");
                _diskProvider.MoveFolder(_appFolderInfo.GetUpdateClientFolder(),
                                         updateSandboxFolder);

                _logger.Info("Starting update client {0}", _appFolderInfo.GetUpdateClientExePath());

                _logger.ProgressInfo("NzbDrone will restart shortly.");

                _processProvider.Start(_appFolderInfo.GetUpdateClientExePath(), _processProvider.GetCurrentProcess().Id.ToString());
            }
            catch (Exception ex)
            {
                _logger.ErrorException("Update process failed", ex);
            }
        }