/** * Creates a backup of the target simulator's config files. */ public static bool CreateTargetSimulatorBackup() { SimulatorOption simOption = MainFormHandler.GetSelectedTargetSimulator(); if (simOption == null) { return(false); } return(CreateConfigFilesBackup(simOption.GetProgramDataPath(), simOption.GetAppDataPath(), true)); }
/** * Copies the config files from the target sim to the source sim. */ public static bool CopyTargetSimFilesToSource() { SimulatorOption sourceOption = MainFormHandler.GetSelectedSourceSimulator(); SimulatorOption targetOption = MainFormHandler.GetSelectedTargetSimulator(); if (sourceOption == null || targetOption == null) { return(false); } CreateTargetSimulatorBackup(); CreateSourceSimulatorBackup(); string sourceAppDataFolder = sourceOption.GetAppDataPath(true); string sourceProgramDataFolder = sourceOption.GetProgramDataPath(true); string targetAppDataFolder = targetOption.GetAppDataPath(true); string targetProgramDataFolder = targetOption.GetProgramDataPath(true); foreach (string configFile in configFiles) { string sourceConfigFile = configFile; //Handling Prepar3d.CFG and FSX.CFG files. if (configFile.Equals(targetOption.GetSimConfigFile())) { sourceConfigFile = sourceOption.GetSimConfigFile(); } try { if (File.Exists(targetAppDataFolder + "\\" + configFile)) { File.Copy(targetAppDataFolder + "\\" + configFile, sourceAppDataFolder + "\\" + sourceConfigFile, true); } if (File.Exists(targetProgramDataFolder + "\\" + configFile)) { File.Copy(targetProgramDataFolder + "\\" + configFile, sourceProgramDataFolder + "\\" + sourceConfigFile, true); } } catch (Exception e) { ErrorLogger.LogError("Could not copy file, function copyTargetSimFilesToSource() - " + e.ToString()); continue; } } HistoryHandler.AppendHistory("3," + sourceOption.GetValue()); return(true); }
/** * Initializes the backup dates. */ public static void OnLoadHandler() { SimulatorOption targetSimulator = MainFormHandler.GetSelectedTargetSimulator(); string appDataPath = targetSimulator.GetAppDataPath(true) + "\\migrationBackup"; string programDataPath = targetSimulator.GetProgramDataPath(true) + "\\migrationBackup"; List <string> dates = new List <string>(); bool appDataExists = Directory.Exists(appDataPath); bool programDataExists = Directory.Exists(programDataPath); if (appDataExists || programDataExists) { if (appDataExists) { string[] appDataDirectories = Directory.GetDirectories(appDataPath); foreach (string dir in appDataDirectories) { AddDateToList(dates, dir); } } if (programDataExists) { string[] programDataDirectories = Directory.GetDirectories(programDataPath); foreach (string dir in programDataDirectories) { AddDateToList(dates, dir); } } } if (dates.Count > 0) { ComboBox restoreDatesCombo = FileRestorationForm.GetRestoreDatesCombo(); Button restoreButton = FileRestorationForm.GetRestoreButton(); dates.Reverse(); foreach (string date in dates) { restoreDatesCombo.Items.Add(date); } restoreButton.Enabled = true; } }
/** * Restores the source config files. Should be called on program startup. */ public static bool RestoreSourceConfigFiles(SimulatorOption simOption) { if (simOption == null) { return(false); } string sourceAppDataFolder = simOption.GetAppDataPath(true); string sourceProgramDataFolder = simOption.GetProgramDataPath(true); foreach (string configFile in configFiles) { string completeAppDataBackupFilePath = sourceAppDataFolder + @"\migrationBackup\" + configFile; string completeProgramDataBackupFilePath = sourceProgramDataFolder + @"\migrationBackup\" + configFile; try{ if (File.Exists(completeAppDataBackupFilePath)) { File.Copy(completeAppDataBackupFilePath, sourceAppDataFolder + "\\" + configFile, true); File.Delete(completeAppDataBackupFilePath); } } catch (Exception e) { ErrorLogger.LogError("Could not copy or delete file at function restoreSourceConfigFiles() - " + e); } try { if (File.Exists(completeProgramDataBackupFilePath)) { File.Copy(completeProgramDataBackupFilePath, sourceProgramDataFolder + "\\" + configFile, true); File.Delete(completeProgramDataBackupFilePath); } } catch (Exception e) { ErrorLogger.LogError("Could not copy or delete file at function restoreSourceConfigFiles() - " + e); } } return(true); }
/** * The actual listener's functionality. */ private void FileListener(string configFile, System.Timers.Timer currentTimer) { SimulatorOption sourceOption = MainFormHandler.GetSelectedSourceSimulator(); SimulatorOption targetOption = MainFormHandler.GetSelectedTargetSimulator(); //Should never happen but just in case... if (sourceOption == null || targetOption == null) { currentTimer.Stop(); timers.Remove(currentTimer); return; } string targetConfigFile = configFile; //Handling Prepare3D.CFG and FSX.CFG. if (configFile.Equals(sourceOption.GetSimConfigFile())) { targetConfigFile = targetOption.GetSimConfigFile(); } string sourceAppDataPath = sourceOption.GetAppDataPath(true) + "\\" + configFile; string sourceProgramDataPath = sourceOption.GetProgramDataPath(true) + "\\" + configFile; string targetAppDataPath = targetOption.GetAppDataPath(true) + "\\" + targetConfigFile; string targetProgramDataPath = targetOption.GetProgramDataPath(true) + "\\" + targetConfigFile; bool sourceAppDataExists = File.Exists(sourceAppDataPath); bool sourceProgramDataExists = File.Exists(sourceProgramDataPath); bool targetAppDataExists = File.Exists(targetAppDataPath); bool targetProgramDataExists = File.Exists(targetProgramDataPath); //If the config file does not exist at all we skip it if (!sourceAppDataExists && !sourceProgramDataExists && !targetAppDataExists && !targetProgramDataExists) { currentTimer.Stop(); timers.Remove(currentTimer); return; } if (!targetAppDataExists && !targetProgramDataExists) { currentTimer.Stop(); timers.Remove(currentTimer); return; } if (targetAppDataExists) { try { if (ShouldCopyFile(targetAppDataPath)) { File.Copy(targetAppDataPath, sourceAppDataPath, true); } } catch (Exception e) { ErrorLogger.LogError("Could not copy file, function fileListener() - " + e.ToString()); } } if (targetProgramDataExists) { try { if (ShouldCopyFile(targetProgramDataPath)) { File.Copy(targetProgramDataPath, sourceProgramDataPath, true); } } catch (Exception e) { ErrorLogger.LogError("Could not copy file, function fileListener() - " + e.ToString()); } } if (sourceAppDataExists) { try { if (ShouldCopyFile(sourceAppDataPath)) { File.Copy(sourceAppDataPath, targetAppDataPath, true); } } catch (Exception e) { ErrorLogger.LogError("Could not copy file, function fileListener() - " + e.ToString()); } } if (sourceProgramDataExists) { try { if (ShouldCopyFile(sourceProgramDataPath)) { File.Copy(sourceProgramDataPath, targetProgramDataPath, true); } } catch (Exception e) { ErrorLogger.LogError("Could not copy file, function fileListener() - " + e.ToString()); } } }
/** * Restores the files according to the date. */ public static bool RestoreFiles(string date) { SimulatorOption targetSimulator = MainFormHandler.GetSelectedTargetSimulator(); string appDataPath = targetSimulator.GetAppDataPath(true); string programDataPath = targetSimulator.GetProgramDataPath(true); string appDataBackupPath = targetSimulator.GetAppDataPath(true) + "\\migrationBackup"; string programDataBackupPath = targetSimulator.GetProgramDataPath(true) + "\\migrationBackup"; string[] fullDateSplitted = date.Split(' '); string[] timeSplitted = fullDateSplitted[1].Split(':'); string[] dateSplitted = fullDateSplitted[0].Split('/'); string folderName = dateSplitted[2] + "_" + dateSplitted[0] + "_" + dateSplitted[1] + "_" + timeSplitted[0] + "_" + timeSplitted[1] + "_" + timeSplitted[2]; appDataBackupPath += "\\" + folderName; programDataBackupPath += "\\" + programDataPath; bool appDataExists = Directory.Exists(appDataBackupPath); bool programDataExists = Directory.Exists(programDataBackupPath); int filesRestored = 0; if (appDataExists) { string[] appDataFiles = Directory.GetFiles(appDataBackupPath); foreach (string file in appDataFiles) { string appDataFileName = Path.GetFileName(file); try { File.Copy(file, appDataPath + "\\" + appDataFileName, true); filesRestored++; } catch (Exception e) { ErrorLogger.LogError("Could not copy file from migrationBackup, function restoreFiles() - " + e.ToString()); } } } if (programDataExists) { string[] programDataBackupFiles = Directory.GetFiles(programDataBackupPath); foreach (string file in programDataBackupFiles) { string programDataFileName = Path.GetFileName(file); try { File.Copy(file, programDataPath + "\\" + programDataFileName, true); filesRestored++; } catch (Exception e) { ErrorLogger.LogError("Could not copy file from migrationBackup, function restoreFiles() - " + e.ToString()); } } } return((appDataExists || programDataExists) && filesRestored > 0); }