Example #1
0
 private static void RestoreCurrentVersionFromBackup()
 {
     try
     {
         if (Directory.Exists(_restartAppCurrenPathBackup))
         {
             foreach (var file in FilesWorks.GetFiles(_restartAppCurrenPathBackup, _searchPatterns, SearchOption.TopDirectoryOnly))
             {
                 try
                 {
                     file.CopyTo(Path.Combine(_restartAppCurrenPath, file.Name));
                 }
                 catch (Exception ex)
                 {
                     MLogger.Error($"Не критическая ошибка копирования файла из бекапа. Original: {ex.Message}");
                 }
             }
         }
         else
         {
             MLogger.Error($"Ошибка восстановления текущей версии из бекапа. Бекапа не существует.");
         }
         MLogger.Error($"Восстановление ткущей версии из бекапа выполнено.");
     }
     catch (Exception ex)
     {
         MLogger.Error($"Ошибка восстановления текущей версии из бекапа. Original: {ex.Message}");
     }
 }
Example #2
0
        public static bool UpdateNew()
        {
            #region Initialization
            _restartAppCurrentExePath   = Path.Combine(Path.GetDirectoryName(System.Reflection.Assembly.GetExecutingAssembly().Location), Constants.RESTART_MONITOR_APPLICATION_FOLDER, Constants.RESTART_MONITOR_APPLICATION_EXE_NAME);
            _restartAppUpdateExePath    = Path.Combine(MQueryCommand.GetSetting("MonitorSelfUpdatePath").Value, Constants.RESTART_MONITOR_APPLICATION_FOLDER, Constants.RESTART_MONITOR_APPLICATION_EXE_NAME);
            _restartAppUpdatePath       = Path.Combine(MQueryCommand.GetSetting("MonitorSelfUpdatePath").Value, Constants.RESTART_MONITOR_APPLICATION_FOLDER);
            _restartAppCurrenPath       = Path.Combine(Path.GetDirectoryName(System.Reflection.Assembly.GetExecutingAssembly().Location), Constants.RESTART_MONITOR_APPLICATION_FOLDER);
            _restartAppCurrenPathBackup = Path.Combine(_restartAppCurrenPath, "backup");
            _searchPatterns             = new string[]
            {
                "*.exe",
                "*.dll",
                "*.xml",
                "*.config",
                "*.pdb",
                "*.manifest",
            };

            if (!File.Exists(_restartAppCurrentExePath))
            {
                _restartAppCurrentExeVersion = new Version(0, 0, 0, 0);
            }
            else
            {
                _restartAppCurrentExeVersion = new Version(FileVersionInfo.GetVersionInfo(_restartAppCurrentExePath).FileVersion);
            }

            _restartAppUpdateExeVersion = new Version(FileVersionInfo.GetVersionInfo(_restartAppUpdateExePath).FileVersion);
            #endregion Initialization

            #region RestartApplicationUpdate
            //Мутим Backup
            try
            {
                FilesWorks.DeleteDirectoryFull(_restartAppCurrenPathBackup);
                Directory.CreateDirectory(_restartAppCurrenPathBackup);
                if (Directory.Exists(_restartAppCurrenPathBackup))
                {
                    foreach (var file in FilesWorks.GetFiles(_restartAppCurrenPath, _searchPatterns, SearchOption.TopDirectoryOnly))
                    {
                        file.CopyTo(Path.Combine(_restartAppCurrenPathBackup, file.Name));
                    }
                }
            }
            catch (Exception ex)
            {
                MLogger.Error($"Ошибка создания бекапа текущей версии {Constants.MAGIC_UPDATER_RESTART}. Original: {ex.Message}");
                return(false);
            }

            //Удаляем текущую версию
            try
            {
                foreach (var file in FilesWorks.GetFiles(_restartAppCurrenPath, _searchPatterns, SearchOption.TopDirectoryOnly))
                {
                    file.Delete();
                }
            }
            catch (Exception ex)
            {
                MLogger.Error($"Ошибка удаления текущей версии. Original: {ex.Message}. Выполняется восстановление из бекапа");
                RestoreCurrentVersionFromBackup();
                return(false);
            }

            //Копируем новую версию
            try
            {
                Directory.CreateDirectory(_restartAppCurrenPath);
                foreach (var file in FilesWorks.GetFiles(_restartAppUpdatePath, _searchPatterns, SearchOption.TopDirectoryOnly))
                {
                    file.CopyTo(Path.Combine(_restartAppCurrenPath, file.Name));
                }
            }
            catch (Exception ex)
            {
                MLogger.Error($"Ошибка копирования новой версии в попку текущей. Original: {ex.Message}. Выполняется восстановление из бекапа");
                RestoreCurrentVersionFromBackup();
                return(false);
            }
            #endregion RestartApplicationUpdate

            return(true);
        }