Skip to main content

Abstract Class: AppUpdater

Extends​

  • TypedEmitter<AppUpdaterEvents, this>

Extended by​

Constructors​

Constructor​

protected new AppUpdater(options, app?): AppUpdater

Parameters​

options​

AllPublishOptions | null | undefined

app?​

AppAdapter

Returns​

AppUpdater

Overrides​

(EventEmitter as new () => TypedEmitter<AppUpdaterEvents>).constructor

Properties​

_isUpdateSupported​

protected _isUpdateSupported: VerifyUpdateSupport


_isUserWithinRollout​

protected _isUserWithinRollout: VerifyUpdateSupport


_logger​

protected _logger: Logger = console


allowDowngrade​

allowDowngrade: boolean = false

Whether to allow version downgrade (when a user from the beta channel wants to go back to the stable channel).

Taken in account only if channel differs (pre-release version component in terms of semantic versioning).

Default​

false

allowPrerelease​

allowPrerelease: boolean = false

GitHub provider only. Whether to allow update to pre-release versions. Defaults to true if application version contains prerelease components (e.g. 0.12.1-alpha.1, here alpha is a prerelease component), otherwise false.

If true, downgrade will be allowed (allowDowngrade will be set to true).


app​

protected readonly app: AppAdapter


autoDownload​

autoDownload: boolean = true

Whether to automatically download an update when it is found.

Default​

true

autoInstallOnAppQuit​

autoInstallOnAppQuit: boolean = true

Whether to automatically install a downloaded update on app quit (if quitAndInstall was not called before).

Default​

true

autoRunAppAfterInstall​

autoRunAppAfterInstall: boolean = true

Whether to run the app after finish install when run the installer is NOT in silent mode.

Default​

true

currentVersion​

readonly currentVersion: SemVer

The current application version.


disableDifferentialDownload​

disableDifferentialDownload: boolean = false

NSIS only Disable differential downloads and always perform full download of installer.

Default​

false

disableWebInstaller​

disableWebInstaller: boolean = false

Web installer files might not have signature verification, this switch prevents to load them unless it is needed.

Currently false to prevent breaking the current API, but it should be changed to default true at some point that breaking changes are allowed.

Default​

false

downloadedUpdateHelper​

protected downloadedUpdateHelper: DownloadedUpdateHelper | null = null


forceDevUpdateConfig​

forceDevUpdateConfig: boolean = false

Allows developer to force the updater to work in "dev" mode, looking for "dev-app-update.yml" instead of "app-update.yml" Dev: path.join(this.app.getAppPath(), "dev-app-update.yml") Prod: path.join(process.resourcesPath!, "app-update.yml")

Default​

false

fullChangelog​

fullChangelog: boolean = false

GitHub provider only. Get all release notes (from current version to latest), not just the latest.

Default​

false

previousBlockmapBaseUrlOverride​

previousBlockmapBaseUrlOverride: string | null = null

The base URL of the old block map file.

When null, the updater will use the base URL of the update file to download the update. When set, the updater will use this string as the base URL of the old block map file. Some servers like github cannot download the old block map file from latest release, so you need to compute the old block map file base URL manually.

Default​

null

requestHeaders​

requestHeaders: OutgoingHttpHeaders | null = null

The request headers.


signals​

readonly signals: UpdaterSignal

For type safety you can use signals, e.g. autoUpdater.signals.updateDownloaded(() => {}) instead of autoUpdater.on('update-available', () => {})


stagingUserIdPromise​

protected readonly stagingUserIdPromise: Lazy<string>


updateInfoAndProvider​

protected updateInfoAndProvider: UpdateInfoAndProvider | null = null

Accessors​

channel​

Get Signature​

get channel(): string | null

Get the update channel. Doesn't return channel from the update configuration, only if was previously set.

Returns​

string | null

Set Signature​

set channel(value): void

Set the update channel. Overrides channel in the update configuration.

allowDowngrade will be automatically set to true. If this behavior is not suitable for you, simple set allowDowngrade explicitly after.

Parameters​
value​

string | null

Returns​

void


isUpdateSupported​

Get Signature​

get isUpdateSupported(): VerifyUpdateSupport

Allows developer to override default logic for determining if an update is supported. The default logic compares the UpdateInfo minimum system version against the os.release() with semver package

Returns​

VerifyUpdateSupport

Set Signature​

set isUpdateSupported(value): void

Parameters​
value​

VerifyUpdateSupport

Returns​

void


isUserWithinRollout​

Get Signature​

get isUserWithinRollout(): VerifyUpdateSupport

Allows developer to override default logic for determining if the user is below the rollout threshold. The default logic compares the staging percentage with numerical representation of user ID. An override can define custom logic, or bypass it if needed.

Returns​

VerifyUpdateSupport

Set Signature​

set isUserWithinRollout(value): void

Parameters​
value​

VerifyUpdateSupport

Returns​

void


logger​

Get Signature​

get logger(): Logger | null

The logger. You can pass electron-log, winston or another logger with the following interface: { info(), warn(), error() }. Set it to null if you would like to disable a logging feature.

Returns​

Logger | null

Set Signature​

set logger(value): void

Parameters​
value​

Logger | null

Returns​

void


netSession​

Get Signature​

get netSession(): Session

Returns​

Session

Methods​

addAuthHeader()​

addAuthHeader(token): void

Shortcut for explicitly adding auth tokens to request headers

Parameters​

token​

string

Returns​

void


addListener()​

addListener<U>(event, listener): this

Type Parameters​

U​

U extends keyof AppUpdaterEvents

Parameters​

event​

U

listener​

AppUpdaterEvents[U]

Returns​

this

Inherited from​

(EventEmitter as new () => TypedEmitter<AppUpdaterEvents>).addListener


checkForUpdates()​

checkForUpdates(): Promise<UpdateCheckResult | null>

Asks the server whether there is an update.

Returns​

Promise<UpdateCheckResult | null>

null if the updater is disabled, otherwise info about the latest version


checkForUpdatesAndNotify()​

checkForUpdatesAndNotify(downloadNotification?): Promise<UpdateCheckResult | null>

Parameters​

downloadNotification?​

DownloadNotification

Returns​

Promise<UpdateCheckResult | null>


differentialDownloadInstaller()​

protected differentialDownloadInstaller(fileInfo, downloadUpdateOptions, installerPath, provider, oldInstallerFileName): Promise<boolean>

Parameters​

fileInfo​

ResolvedUpdateFileInfo

downloadUpdateOptions​

DownloadUpdateOptions

installerPath​

string

provider​

Provider<any>

oldInstallerFileName​

string

Returns​

Promise<boolean>


dispatchError()​

protected dispatchError(e): void

Parameters​

e​

Error

Returns​

void


dispatchUpdateDownloaded()​

protected dispatchUpdateDownloaded(event): void

Parameters​

event​

UpdateDownloadedEvent

Returns​

void


doDownloadUpdate()​

abstract protected doDownloadUpdate(downloadUpdateOptions): Promise<DownloadExecutorResult>

Parameters​

downloadUpdateOptions​

DownloadUpdateOptions

Returns​

Promise<DownloadExecutorResult>


downloadUpdate()​

downloadUpdate(cancellationToken?): Promise<string[]>

Start downloading update manually. You can use this method if autoDownload option is set to false.

Parameters​

cancellationToken?​

CancellationToken = ...

Returns​

Promise<string[]>

Paths to downloaded files.


emit()​

emit<U>(event, ...args): boolean

Type Parameters​

U​

U extends keyof AppUpdaterEvents

Parameters​

event​

U

args​

...Parameters<AppUpdaterEvents[U]>

Returns​

boolean

Inherited from​

(EventEmitter as new () => TypedEmitter<AppUpdaterEvents>).emit


eventNames()​

eventNames<U>(): U[]

Type Parameters​

U​

U extends keyof AppUpdaterEvents

Returns​

U[]

Inherited from​

(EventEmitter as new () => TypedEmitter<AppUpdaterEvents>).eventNames


executeDownload()​

protected executeDownload(taskOptions): Promise<DownloadExecutorResult>

Parameters​

taskOptions​

DownloadExecutorTask

Returns​

Promise<DownloadExecutorResult>


getFeedURL()​

getFeedURL(): string | null | undefined

Returns​

string | null | undefined


getMaxListeners()​

getMaxListeners(): number

Returns​

number

Inherited from​

(EventEmitter as new () => TypedEmitter<AppUpdaterEvents>).getMaxListeners


getUpdateInfoAndProvider()​

protected getUpdateInfoAndProvider(): Promise<UpdateInfoAndProvider>

Returns​

Promise<UpdateInfoAndProvider>


isUpdaterActive()​

isUpdaterActive(): boolean

Returns​

boolean


listenerCount()​

listenerCount(type): number

Parameters​

type​

keyof AppUpdaterEvents

Returns​

number

Inherited from​

(EventEmitter as new () => TypedEmitter<AppUpdaterEvents>).listenerCount


listeners()​

listeners<U>(type): AppUpdaterEvents[U][]

Type Parameters​

U​

U extends keyof AppUpdaterEvents

Parameters​

type​

U

Returns​

AppUpdaterEvents[U][]

Inherited from​

(EventEmitter as new () => TypedEmitter<AppUpdaterEvents>).listeners


off()​

off<U>(event, listener): this

Type Parameters​

U​

U extends keyof AppUpdaterEvents

Parameters​

event​

U

listener​

AppUpdaterEvents[U]

Returns​

this

Inherited from​

(EventEmitter as new () => TypedEmitter<AppUpdaterEvents>).off


on()​

on<U>(event, listener): this

Type Parameters​

U​

U extends keyof AppUpdaterEvents

Parameters​

event​

U

listener​

AppUpdaterEvents[U]

Returns​

this

Inherited from​

(EventEmitter as new () => TypedEmitter<AppUpdaterEvents>).on


once()​

once<U>(event, listener): this

Type Parameters​

U​

U extends keyof AppUpdaterEvents

Parameters​

event​

U

listener​

AppUpdaterEvents[U]

Returns​

this

Inherited from​

(EventEmitter as new () => TypedEmitter<AppUpdaterEvents>).once


onUpdateAvailable()​

protected onUpdateAvailable(updateInfo): void

Parameters​

updateInfo​

UpdateInfo

Returns​

void


prependListener()​

prependListener<U>(event, listener): this

Type Parameters​

U​

U extends keyof AppUpdaterEvents

Parameters​

event​

U

listener​

AppUpdaterEvents[U]

Returns​

this

Inherited from​

(EventEmitter as new () => TypedEmitter<AppUpdaterEvents>).prependListener


prependOnceListener()​

prependOnceListener<U>(event, listener): this

Type Parameters​

U​

U extends keyof AppUpdaterEvents

Parameters​

event​

U

listener​

AppUpdaterEvents[U]

Returns​

this

Inherited from​

(EventEmitter as new () => TypedEmitter<AppUpdaterEvents>).prependOnceListener


quitAndInstall()​

abstract quitAndInstall(isSilent?, isForceRunAfter?): void

Restarts the app and installs the update after it has been downloaded. It should only be called after update-downloaded has been emitted.

Note: autoUpdater.quitAndInstall() will close all application windows first and only emit before-quit event on app after that. This is different from the normal quit event sequence.

Parameters​

isSilent?​

boolean

windows-only Runs the installer in silent mode. Defaults to false.

isForceRunAfter?​

boolean

Run the app after finish even on silent install. Not applicable for macOS. Ignored if isSilent is set to false(In this case you can still set autoRunAppAfterInstall to false to prevent run the app after finish).

Returns​

void


rawListeners()​

rawListeners<U>(type): AppUpdaterEvents[U][]

Type Parameters​

U​

U extends keyof AppUpdaterEvents

Parameters​

type​

U

Returns​

AppUpdaterEvents[U][]

Inherited from​

(EventEmitter as new () => TypedEmitter<AppUpdaterEvents>).rawListeners


removeAllListeners()​

removeAllListeners(event?): this

Parameters​

event?​

keyof AppUpdaterEvents

Returns​

this

Inherited from​

(EventEmitter as new () => TypedEmitter<AppUpdaterEvents>).removeAllListeners


removeListener()​

removeListener<U>(event, listener): this

Type Parameters​

U​

U extends keyof AppUpdaterEvents

Parameters​

event​

U

listener​

AppUpdaterEvents[U]

Returns​

this

Inherited from​

(EventEmitter as new () => TypedEmitter<AppUpdaterEvents>).removeListener


setFeedURL()​

setFeedURL(options): void

Configure update provider. If value is string, GenericServerOptions will be set with value as url.

Parameters​

options​

PublishConfiguration | AllPublishOptions

If you want to override configuration in the app-update.yml.

Returns​

void


setMaxListeners()​

setMaxListeners(n): this

Parameters​

n​

number

Returns​

this

Inherited from​

(EventEmitter as new () => TypedEmitter<AppUpdaterEvents>).setMaxListeners