Example #1
0
        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));
        }
Example #2
0
        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);
        }