Skip to content

Commit 5bf4498

Browse files
neilreesdevelar
authored andcommitted
fix(electron-updater): when AllowDowngrade is true and latest version is older, take the update (#4218)
1 parent 1d21620 commit 5bf4498

File tree

1 file changed

+8
-9
lines changed

1 file changed

+8
-9
lines changed

packages/electron-updater/src/AppUpdater.ts

Lines changed: 8 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,7 @@ import { OutgoingHttpHeaders } from "http"
77
import { safeLoad } from "js-yaml"
88
import { Lazy } from "lazy-val"
99
import * as path from "path"
10-
import { eq as isVersionsEqual, gt as isVersionGreaterThan, parse as parseVersion, prerelease as getVersionPreleaseComponents, SemVer } from "semver"
10+
import { eq as isVersionsEqual, gt as isVersionGreaterThan, lt as isVersionLessThan, parse as parseVersion, prerelease as getVersionPreleaseComponents, SemVer } from "semver"
1111
import { AppAdapter } from "./AppAdapter"
1212
import { createTempUpdateFile, DownloadedUpdateHelper } from "./DownloadedUpdateHelper"
1313
import { ElectronAppAdapter } from "./ElectronAppAdapter"
@@ -317,18 +317,17 @@ export abstract class AppUpdater extends EventEmitter {
317317
// https://github.com/electron-userland/electron-builder/pull/3111#issuecomment-405033227
318318
// https://github.com/electron-userland/electron-builder/pull/3111#issuecomment-405030797
319319
const isLatestVersionNewer = isVersionGreaterThan(latestVersion, currentVersion)
320-
if (!this.allowDowngrade) {
321-
return isLatestVersionNewer
320+
const isLatestVersionOlder = isVersionLessThan(latestVersion, currentVersion)
321+
322+
if (isLatestVersionNewer) {
323+
return true
322324
}
323325

324-
const currentVersionPrereleaseComponent = getVersionPreleaseComponents(currentVersion)
325-
const latestVersionPrereleaseComponent = getVersionPreleaseComponents(latestVersion)
326-
if (currentVersionPrereleaseComponent === latestVersionPrereleaseComponent) {
327-
// allowDowngrade taken in account only if channel differs
328-
return isLatestVersionNewer
326+
if (this.allowDowngrade && isLatestVersionOlder) {
327+
return true
329328
}
330329

331-
return true
330+
return false
332331
}
333332

334333
protected async getUpdateInfoAndProvider(): Promise<UpdateInfoAndProvider> {

0 commit comments

Comments
 (0)