diff --git a/Blueberry/Constants.cs b/Blueberry/Constants.cs index 3deae45..a2e6c3f 100644 --- a/Blueberry/Constants.cs +++ b/Blueberry/Constants.cs @@ -40,17 +40,17 @@ $destDir = '{appDir}' $maxRetries = 10 $retryCount = 0 -while ($retryCount -lt $maxRetries) {{ - try {{ +while ($retryCount -lt $maxRetries) { + try { # Attempt to delete the old executable - if (Test-Path $exePath) {{ Remove-Item $exePath -Force -ErrorAction Stop }} + if (Test-Path $exePath) { Remove-Item $exePath -Force -ErrorAction Stop } break # If successful, exit loop - }} - catch {{ + } + catch { Start-Sleep -Milliseconds 500 $retryCount++ - }} -}} + } +} # Unzip the new version Expand-Archive -Path $zipPath -DestinationPath $destDir -Force diff --git a/Blueberry/UpdateManager.cs b/Blueberry/UpdateManager.cs index bd99b80..d30f083 100644 --- a/Blueberry/UpdateManager.cs +++ b/Blueberry/UpdateManager.cs @@ -9,7 +9,8 @@ namespace Blueberry { private const string releaseUrl = "https://git.technopunk.space/api/v1/repos/tomi/Blueberry/releases/latest"; public const string CurrentVersion = "0.1.4"; - private static readonly string AppDir = AppDomain.CurrentDomain.BaseDirectory; + private static readonly string appDir = AppDomain.CurrentDomain.BaseDirectory; + private static readonly string zipPath = Path.Combine(appDir, "blueberry_update.zip"); private static readonly HttpClient client = new(); public delegate void DownloadCompletedEventArgs(); public static event DownloadCompletedEventArgs DownloadCompleted; @@ -39,7 +40,6 @@ namespace Blueberry var file = release.assets.Find(x => x.name.Contains(".zip")); if (file == null) return; - string zipPath = Path.Combine(AppDir, "blueberry_update.zip"); long offset = 0; if (File.Exists(zipPath)) @@ -90,10 +90,9 @@ namespace Blueberry // If offset > 0, we APPEND. If 0, we CREATE/OVERWRITE. var fileMode = offset > 0 ? FileMode.Append : FileMode.Create; - string filePath = Path.Combine(AppDir, "blueberry_update.zip"); using var contentStream = await response.Content.ReadAsStreamAsync(); - using var fileStream = new FileStream(filePath, fileMode, FileAccess.Write, FileShare.None); + using var fileStream = new FileStream(zipPath, fileMode, FileAccess.Write, FileShare.None); await contentStream.CopyToAsync(fileStream); isDownloading = false; @@ -106,13 +105,11 @@ namespace Blueberry public static async Task PerformUpdate() { - string tempZip = Path.Combine(Path.GetTempPath(), "blueberry_update.zip"); string currentExe = Process.GetCurrentProcess().MainModule.FileName; - string appDir = AppDomain.CurrentDomain.BaseDirectory; string psScript = Constants.UpdateScript .Replace("{currentExe}", $"{currentExe}") - .Replace("{tempZip}", $"{tempZip}") + .Replace("{tempZip}", $"{zipPath}") .Replace("{appDir}", $"{appDir}"); string psPath = Path.Combine(Path.GetTempPath(), "blueberry_updater.ps1"); File.WriteAllText(psPath, psScript);