diff --git a/src/Nullinside.Api.Common/Desktop/GitHubUpdateManager.cs b/src/Nullinside.Api.Common/Desktop/GitHubUpdateManager.cs
index 4fd3f91..5f3c229 100644
--- a/src/Nullinside.Api.Common/Desktop/GitHubUpdateManager.cs
+++ b/src/Nullinside.Api.Common/Desktop/GitHubUpdateManager.cs
@@ -48,7 +48,7 @@ public static async Task PrepareUpdate() {
// To prepare the update, we just need to back up our files
string ourFolder = Path.GetDirectoryName(typeof(GitHubUpdateManager).Assembly.Location) ?? "";
string backupFolder = Path.Combine(ourFolder, "..", "backup");
- await DeleteRetry(backupFolder);
+ await DeleteFolderRetry(backupFolder);
Directory.CreateDirectory(backupFolder);
FileSystem.CopyDirectory(ourFolder, backupFolder);
@@ -78,7 +78,7 @@ public static void ExitApplicationToUpdate() {
///
public static async Task PerformUpdateAndRestart(string owner, string repo, string installFolder, string assetName) {
// Delete the old install folder.
- await DeleteRetry(installFolder);
+ await DeleteFolderContentsRetry(installFolder);
// Get the latest version of the application from GitHub.
string ourFolder = Path.GetDirectoryName(typeof(GitHubUpdateManager).Assembly.Location) ?? "";
@@ -96,7 +96,7 @@ public static async Task PerformUpdateAndRestart(string owner, string repo, stri
// Run the new version of the application.
Process.Start(Path.Combine(installFolder, $"{AppDomain.CurrentDomain.FriendlyName}.exe"), "--justUpdated");
-
+
// Close this version of the application.
Environment.Exit(0);
}
@@ -108,15 +108,15 @@ public static async Task CleanupUpdate() {
string ourFolder = Path.GetDirectoryName(typeof(GitHubUpdateManager).Assembly.Location) ?? "";
string backupFolder = Path.Combine(ourFolder, "..", "backup");
- await DeleteRetry(backupFolder);
+ await DeleteFolderRetry(backupFolder);
}
///
- /// Retries deleting a folder multiple times.
+ /// Retries deleting a folder multiple times.
///
/// The folder to delete.
- private static async Task DeleteRetry(string folder) {
- await Retry.Execute(() => {
+ private static async Task DeleteFolderRetry(string folder) {
+ await Retry.Execute(() => {
if (Directory.Exists(folder)) {
Directory.Delete(folder, true);
}
@@ -124,4 +124,22 @@ await Retry.Execute(() => {
return Task.FromResult(true);
}, 30, waitTime: TimeSpan.FromSeconds(1));
}
+
+ ///
+ /// Retries deleting the contents of a folder multiple times.
+ ///
+ /// The folder to delete the contents of.
+ private static async Task DeleteFolderContentsRetry(string folder) {
+ await Retry.Execute(() => {
+ if (!Directory.Exists(folder)) {
+ return Task.FromResult(true);
+ }
+
+ foreach (string file in Directory.GetFiles(folder)) {
+ File.Delete(file);
+ }
+
+ return Task.FromResult(true);
+ }, 30, waitTime: TimeSpan.FromSeconds(1));
+ }
}
\ No newline at end of file