diff --git a/src/Artemis.UI.Windows/ApplicationStateManager.cs b/src/Artemis.UI.Windows/ApplicationStateManager.cs index 966324b7a..e3d9ddba1 100644 --- a/src/Artemis.UI.Windows/ApplicationStateManager.cs +++ b/src/Artemis.UI.Windows/ApplicationStateManager.cs @@ -142,7 +142,7 @@ public class ApplicationStateManager string redirectSymbol = File.Exists(outputFile) && new FileInfo(outputFile).Length > 200000 ? ">" : ">>"; ProcessStartInfo info = new() { - Arguments = $"PowerShell -File \"{script}\" {arguments} {redirectSymbol} \"{outputFile}\"", + Arguments = $"PowerShell -ExecutionPolicy Bypass -File \"{script}\" {arguments} {redirectSymbol} \"{outputFile}\"", FileName = "PowerShell.exe", WindowStyle = ProcessWindowStyle.Hidden, CreateNoWindow = true, diff --git a/src/Artemis.UI.Windows/Scripts/update.ps1 b/src/Artemis.UI.Windows/Scripts/update.ps1 index d78fa8358..6d3fa3aca 100644 --- a/src/Artemis.UI.Windows/Scripts/update.ps1 +++ b/src/Artemis.UI.Windows/Scripts/update.ps1 @@ -26,20 +26,21 @@ if ($process) } # Check if the destination directory exists -if (!(Test-Path $destinationDirectory)) +if (!(Test-Path "$destinationDirectory")) { Write-Error "The destination directory does not exist" + Exit 1 } # Clear the destination directory but don't remove it, leaving ACL entries in tact Write-Host "Cleaning up old version where needed" -Get-ChildItem $destinationDirectory | Remove-Item -Recurse -Force +Get-ChildItem "$destinationDirectory" | Remove-Item -Recurse -Force # Move the contents of the source directory to the destination directory Write-Host "Installing new files" -Get-ChildItem $sourceDirectory | Move-Item -Destination $destinationDirectory +Get-ChildItem "$sourceDirectory" | Move-Item -Destination "$destinationDirectory" # Remove the now empty source directory -Remove-Item $sourceDirectory +Remove-Item "$sourceDirectory" Write-Host "Finished! Restarting Artemis" Start-Sleep -Seconds 1 @@ -47,9 +48,9 @@ Start-Sleep -Seconds 1 # When finished, run the updated version if ($artemisArgs) { - Start-Process -FilePath "$destinationDirectory\Artemis.UI.Windows.exe" -WorkingDirectory $destinationDirectory -ArgumentList $artemisArgs + Start-Process -FilePath "$destinationDirectory\Artemis.UI.Windows.exe" -WorkingDirectory "$destinationDirectory" -ArgumentList $artemisArgs } else { - Start-Process -FilePath "$destinationDirectory\Artemis.UI.Windows.exe" -WorkingDirectory $destinationDirectory + Start-Process -FilePath "$destinationDirectory\Artemis.UI.Windows.exe" -WorkingDirectory "$destinationDirectory" } \ No newline at end of file diff --git a/src/Artemis.UI/Services/Updating/UpdateService.cs b/src/Artemis.UI/Services/Updating/UpdateService.cs index a492ee96d..b417a49c8 100644 --- a/src/Artemis.UI/Services/Updating/UpdateService.cs +++ b/src/Artemis.UI/Services/Updating/UpdateService.cs @@ -88,7 +88,7 @@ public class UpdateService : IUpdateService _logger.Warning(e, "Failed to clean up old update file at {FilePath}", file); } } - + if (updated) _updateNotificationProvider.Value.ShowInstalledNotification(currentVersion); } @@ -205,15 +205,22 @@ public class UpdateService : IUpdateService { _logger.Error(e, "Failed to delete leftover installing folder"); } - } // If an update is pending, don't bother with anything else if (Directory.Exists(Path.Combine(Constants.UpdatingFolder, "pending"))) { _logger.Information("Installing pending update"); - RestartForUpdate(true); - return true; + try + { + RestartForUpdate(true); + return true; + } + catch (Exception e) + { + _logger.Warning(e, "Failed to apply pending update"); + return false; + } } ProcessReleaseStatus();