BetterDiscordApp-v2/WindowsRepair/WinRepair/Program.cs

114 lines
3.5 KiB
C#

using System;
using System.IO;
using System.Text.RegularExpressions;
namespace WinRepair
{
class Program
{
static void Main(string[] args)
{
Console.WriteLine("WinRepair will delete all nonessential BetterDiscord/Discord files that might cause problems");
Console.WriteLine("The following files/directories will be deleted");
String appdata = Environment.GetFolderPath(Environment.SpecialFolder.ApplicationData);
String discordDir = appdata + "\\discord";
String bdDir = appdata + "\\betterdiscord";
Console.WriteLine(Environment.SpecialFolder.ApplicationData);
if (Directory.Exists(bdDir))
{
foreach (string directory in Directory.GetDirectories(bdDir))
{
Console.WriteLine(directory);
}
foreach (string file in Directory.GetFiles(bdDir))
{
Console.WriteLine(file);
}
}
if (Directory.Exists(discordDir))
{
if (Directory.Exists(discordDir + "\\cache"))
{
Console.WriteLine(discordDir + "\\cache and all it's contents");
}
}
if (Directory.Exists(discordDir + "\\Local Storage"))
{
if (File.Exists(discordDir + "\\Local Storage\\https_discordapp.com_0.localstorage"))
{
Console.WriteLine(discordDir + "\\Local Storage\\https_discordapp.com_0.localstorage");
}
}
Console.WriteLine("Is this ok? Y/N");
String response = Console.ReadLine().ToLower();
if (Regex.IsMatch(response, "(yes|y)"))
{
if (Directory.Exists(bdDir))
{
DeleteAndLogFiles(bdDir);
}
if (Directory.Exists(bdDir))
{
DeleteAndLogDirectories(bdDir);
}
if (Directory.Exists(discordDir + "\\cache"))
{
DeleteAndLogFiles(discordDir + "\\cache");
}
if (File.Exists(discordDir + "\\Local Storage\\https_discordapp.com_0.localstorage"))
{
Console.WriteLine("Deleting: " + discordDir + "\\Local Storage\\https_discordapp.com_0.localstorage");
File.Delete(discordDir + "\\Local Storage\\https_discordapp.com_0.localstorage");
}
Console.WriteLine("All done");
Console.WriteLine("Press any key to exit...");
Console.ReadKey();
}
else
{
Console.WriteLine("Aborted");
Console.WriteLine("Press any key to exit...");
Console.ReadKey();
}
}
private static void DeleteAndLogFiles(String directory)
{
foreach (String file in Directory.GetFiles(directory))
{
Console.WriteLine("Deleting: " + file);
File.Delete(file);
}
foreach (String dir in Directory.GetDirectories(directory))
{
DeleteAndLogFiles(dir);
}
}
private static void DeleteAndLogDirectories(String directory)
{
Console.WriteLine("Cleaning: " + directory);
Directory.Delete(directory, true);
}
}
}