public bool Execute(ConsoleDisplay console, string configurationFile) { console.WriteLine("Repairing shell icon overlays..."); var serializer = new ConfigurationSerializer(); var configuration = serializer.Read(configurationFile); if (configuration.Sets == null || configuration.Sets.Count == 0) { console.WriteError($"No sets defined"); return(false); } var backupTask = new ExecuteOnce(new BackupRegistryKeys()); var duplicates = GatherDuplicates().ToList(); if (duplicates.Any()) { if (!backupTask.Execute(console, configurationFile)) { return(false); } console.WriteLine($"Deleting {duplicates.Count} duplicate identifiers"); foreach (var duplicate in duplicates) { _identifiers.Delete(duplicate); } } var changes = GatherChanges(console, configuration).ToList(); if (!changes.Any()) { console.WriteLine($"No identifiers need updating"); return(true); } if (!backupTask.Execute(console, configurationFile)) { return(false); } console.WriteLine($"Updating {changes.Count} identifiers"); foreach (var change in changes) { _identifiers.UpdateIdentifier(change.Item1, change.Item2); } return(new RestartExplorerProcess().Execute(console, configurationFile)); }
public bool Execute(ConsoleDisplay console, string configurationFile) { if (!File.Exists(configurationFile)) { console.WriteError("Configuration file not found!"); return(false); } try { var serializer = new ConfigurationSerializer(); var configuration = serializer.Read(configurationFile); } catch (ConfigurationSchemaVersionException) { console.WriteError("Configuration file is for a different version and is unsupported in this version."); return(false); } return(true); }