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}"); } }
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); }