From a6bba277428bff6a9ae22d111d6156c63b1be9b6 Mon Sep 17 00:00:00 2001 From: Brendan Osborne Date: Fri, 30 May 2025 09:01:59 +1000 Subject: [PATCH] feat(updater): add allowDowngrades option --- plugins/updater/guest-js/index.ts | 4 ++++ plugins/updater/src/commands.rs | 4 ++++ 2 files changed, 8 insertions(+) diff --git a/plugins/updater/guest-js/index.ts b/plugins/updater/guest-js/index.ts index 87f7929a..c33033ec 100644 --- a/plugins/updater/guest-js/index.ts +++ b/plugins/updater/guest-js/index.ts @@ -22,6 +22,10 @@ interface CheckOptions { * Target identifier for the running application. This is sent to the backend. */ target?: string + /** + * Allow downgrades to previous versions by not checking if the current version is greater than the available version. + */ + allowDowngrades?: boolean } /** Options used when downloading an update */ diff --git a/plugins/updater/src/commands.rs b/plugins/updater/src/commands.rs index ae84294f..129c413c 100644 --- a/plugins/updater/src/commands.rs +++ b/plugins/updater/src/commands.rs @@ -46,6 +46,7 @@ pub(crate) async fn check( timeout: Option, proxy: Option, target: Option, + allow_downgrades: Option, ) -> Result> { let mut builder = webview.updater_builder(); if let Some(headers) = headers { @@ -63,6 +64,9 @@ pub(crate) async fn check( if let Some(target) = target { builder = builder.target(target); } + if allow_downgrades.unwrap_or(false) { + builder = builder.version_comparator(|current, update| update.version != current); + } let updater = builder.build()?; let update = updater.check().await?;