/** * Handles the start migration button's functionality. */ public static void StartMigrationHandler() { string isStarted = SettingsHandler.GetSetting("started"); if (isStarted.Equals("1")) { if (HistoryHandler.RevertChanges()) { SettingsHandler.SetSetting("started", "0"); startMigrateButton.Text = START_MIGRATION_TEXT; EnableMigrationCombos(); StopSpecialAddonListeners(); } else { MessageBox.Show("An error has occured, please try again or contact the developer for support."); } } else { DisableMigrationCombos(); if (!FileListeners.InitStaticListeners()) { HistoryHandler.RevertChanges(); MessageBox.Show("An error has occured, please try again or contact the developer for support."); EnableMigrationCombos(); return; } if (!RegistryHandler.SetSourceAsTarget()) { FileListeners.RemoveListeners(); HistoryHandler.RevertChanges(); MessageBox.Show("An error has occured, please try again or contact the developer for support."); EnableMigrationCombos(); return; } StartSpecialAddonListeners(); FilesHandler.CreateFakeFsxExecutable(GetSelectedTargetSimulator().GetSimPath()); startMigrateButton.Text = STOP_MIGRATION_TEXT; SettingsHandler.SetSetting("started", "1"); } }
/** * Reverts all changes according to the history file. */ public static bool RevertChanges() { FileListeners.RemoveListeners(); List <string> history = GetHistory(); history.Reverse(); List <string> newHistory = new List <string>(history); foreach (string item in history) { if (!IsValidHistoryRow(item)) { newHistory.Remove(item); continue; } string[] itemData = item.Split(','); int itemType = Int32.Parse(itemData[0]); int simOptionVal; SimulatorOption simOption; switch (itemType) { case 1: //Revert registry changes. simOptionVal = Int32.Parse(itemData[1]); simOption = SimulatorOptions.GetOptionByVal(simOptionVal); if (simOption != null) { bool deleteKey = itemData.Length < 4 || itemData[3].Equals("") || itemData[3].Equals("0"); int registryIndex = Int32.Parse(itemData[2]); int counter = 0; foreach (string registryPath in simOption.GetRegistryPaths()) { if (registryIndex != counter) { counter++; continue; } if (deleteKey) { RegistryInterface.DeleteRegistryKey(registryPath); } else { string sourcePath = itemData[3]; RegistryInterface.SetRegistryValue(registryPath, sourcePath, true); } counter++; } } newHistory.Remove(item); break; case 2: //Delete the fake FSX executable file. simOption = MainFormHandler.GetSelectedTargetSimulator(); FilesHandler.DeleteFakeFsxExecutable(simOption.GetSimPath()); newHistory.Remove(item); break; case 3: //Restore the config files from the migrationBackup folder and delete the file from the backup folder. simOptionVal = Int32.Parse(itemData[1]); simOption = SimulatorOptions.GetOptionByVal(simOptionVal); FilesHandler.RestoreSourceConfigFiles(simOption); newHistory.Remove(item); break; } } //Sets the history file content. SetHistory(newHistory); return(true); }