private void LogDetailError(string message, Exception ex) { var detail = $"{message}: {ErrorProcessing.ExceptionMessageToString(ex)}"; _logger.Error(detail); MessageBox.Show($"{message}"); }
private void InitRepos() { _logger.Debug("Инициализация репозиториев..."); try { _userRepository = new UserRepository(); _logger.Debug("Инициализация репозиториев выполнена"); } catch (Exception ex) { var detail = $"Ошибка Инициализации репозиториев: {ErrorProcessing.ExceptionMessageToString(ex)}"; _logger.Error(detail); } }
/// <summary> /// Заменяет имеющиеся dll новыми версиями. Eсли возникла ошибка, делается откат /// </summary> /// <returns>Успешно ли прошла подмена dll</returns> private bool TryUpdate() { this.LogOnMethodEnter(); var result = true; if (AppDomain.CurrentDomain.IsDefaultAppDomain()) { // Get the startup path. string assemblyPath = Assembly.GetExecutingAssembly().Location; string assemblyDirectory = Path.GetDirectoryName(assemblyPath); // Check deleted files folders existance string backupDirectory = Path.Combine(assemblyDirectory, BACKUP_FILES_SUBFOLDER); string updateDirectory = Path.Combine(assemblyDirectory, UPDATE_FILES_SUBFOLDER); CreateCleanDirectory(backupDirectory); var updateFilesList = new List <string>(); // Коллекция с теми файлами, которые мы обновили в директории программы UpdateSettingsObject updateAppSettingsScript = null; try { if (Directory.Exists(updateDirectory)) { foreach (string newFile in Directory.GetFiles(updateDirectory, "*", SearchOption.AllDirectories)) { if (CheckUpdateAppSettingsScript(newFile, ref updateAppSettingsScript)) { continue; } //если есть файл sql, то надо обновить БД if (Path.GetExtension(newFile).Equals(".sql")) { UpdateDatabase(newFile); continue; } var fileName = Path.GetFileName(newFile); if (fileName == AGENT_NAME) { _logger.Info($"Пропускаем файл {fileName}"); continue; } string backupingFile = Path.Combine(assemblyDirectory, fileName); if (File.Exists(backupingFile)) // Забэкапим обновляемый файл, если он есть в директории программы { string backupedFile = Path.Combine(assemblyDirectory, BACKUP_FILES_SUBFOLDER, fileName); CreateDirectoryIfNotExists(backupedFile); _logger.Info($"Делаем бекап файла {fileName}"); File.Move(backupingFile, backupedFile); } // Скопируем новый файл и создадим структуру папок для него, если необходимо CreateDirectoryIfNotExists(backupingFile); _logger.Info($"Копируем файл {fileName}"); File.Copy(newFile, backupingFile, true); updateFilesList.Add(backupingFile); } UpdateAppSettings(updateAppSettingsScript); } } catch (Exception ex) { // Обновить не получилось. Будем откатываться result = false; // Удалим добавленные файлы foreach (var file in updateFilesList) { File.Delete(file); } // Восстановим файлы из бэкапа foreach (string file in Directory.GetFiles(backupDirectory, "*", SearchOption.AllDirectories)) { var fileName = Path.GetFileName(file); var backupFile = Path.Combine(assemblyDirectory, fileName); CreateDirectoryIfNotExists(backupFile); _logger.Info($"Возвращаем файл {fileName}"); File.Copy(file, backupFile, true); } _logger.Error(ErrorProcessing.ExceptionMessageToString(ex)); } } return(this.LogOnReturn(result)); }