uninstall: Less aggressive directory deletion

This commit is contained in:
Daniel
2021-06-25 13:12:08 +03:00
parent 8bb46337e1
commit b8b89420d8
2 changed files with 36 additions and 19 deletions
+29 -12
View File
@@ -21,12 +21,12 @@ namespace CleanFlashCommon {
}
public static void RecursiveDelete(DirectoryInfo rootDir, DirectoryInfo baseDir, string filename) {
if (!baseDir.Exists) {
if (!baseDir.FullName.StartsWith(rootDir.FullName)) {
// Sanity check.
return;
}
if (!baseDir.FullName.StartsWith(rootDir.FullName)) {
// Sanity check.
if (!baseDir.Exists) {
return;
}
@@ -44,15 +44,6 @@ namespace CleanFlashCommon {
DeleteFile(file);
}
}
if (!Directory.EnumerateFileSystemEntries(baseDir.FullName).Any()) {
try {
baseDir.Delete();
} catch {
HandleUtil.KillProcessesUsingFile(baseDir.FullName);
baseDir.Delete();
}
}
}
public static void DeleteFile(FileInfo file) {
@@ -77,6 +68,7 @@ namespace CleanFlashCommon {
}
HandleUtil.KillProcessesUsingFile(file.FullName);
Thread.Sleep(500);
file.Delete();
}
}
@@ -95,6 +87,31 @@ namespace CleanFlashCommon {
RecursiveDelete(dirInfo, dirInfo, null);
}
public static void WipeFolder(string baseDir) {
DirectoryInfo dirInfo = new DirectoryInfo(baseDir);
if (!dirInfo.Exists) {
return;
}
RecursiveDelete(dirInfo);
if (!Directory.EnumerateFileSystemEntries(dirInfo.FullName).Any()) {
try {
dirInfo.Delete();
} catch {
HandleUtil.KillProcessesUsingFile(dirInfo.FullName);
Thread.Sleep(500);
try {
dirInfo.Delete();
} catch {
// We've tried for long enough...
}
}
}
}
public static void DeleteFile(string file) {
DeleteFile(new FileInfo(file));
}