3.0.0 • Published 2 years ago

update-electron-app v3.0.0

Weekly downloads
2,440
License
MIT
Repository
github
Last release
2 years ago

update-electron-app

A drop-in module that adds autoUpdating capabilities to Electron apps

CircleCI build status npm version

Supports multiple update sources:

  • The free and open-source update.electronjs.org service.
  • Static file storage E.g. S3, Google Cloud Storage, etc.

screenshot

Requirements

Before using this module, make sure your Electron app meets these criteria:

  • Your app runs on macOS or Windows
  • Your builds are code signed
  • If using update.electronjs.org
    • Your app has a public GitHub repository
    • Your builds are published to GitHub Releases
  • If using static file storage
    • Your builds are published to S3 or other similar static file host using a tool like @electron-forge/publisher-s3

Installation

npm i update-electron-app

Usage

With update.electronjs.org

Drop this anywhere in your main process:

const { updateElectronApp } = require('update-electron-app')
updateElectronApp()

By default your repository URL is found in your app's package.json file.

You can also specify custom options:

const { updateElectronApp, UpdateSourceType } = require('update-electron-app')
updateElectronApp({
  updateSource: {
    type: UpdateSourceType.ElectronPublicUpdateService,
    repo: 'github-user/repo'
  },
  updateInterval: '1 hour',
  logger: require('electron-log')
})

With static file storage

const { updateElectronApp, UpdateSourceType } = require('update-electron-app')
updateElectronApp({
  updateSource: {
    type: UpdateSourceType.StaticStorage,
    baseUrl: `https://my-bucket.s3.amazonaws.com/my-app-updates/${process.platform}/${process.arch}`
  }
})

What happens?

Once you've called updateElectronApp as documented above, that's it! Here's what happens by default:

  • Your app will check for updates at startup, then every ten minutes. This interval is configurable.
  • No need to wait for your app's ready event; the module figures that out.
  • If an update is found, it will automatically be downloaded in the background.
  • When an update is finished downloading, a dialog is displayed allowing the user to restart the app now or later.

API

update(options)

Additional Options:

  • updateInterval String (optional) - How frequently to check for updates. Defaults to 10 minutes. Minimum allowed interval is 5 minutes. This is a human readable interval supported by the ms module
  • logger Object (optional) - A custom logger object that defines a log function. Defaults to console. See electron-log, a module that aggregates logs from main and renderer processes into a single file.
  • notifyUser Boolean (optional) - Defaults to true. When enabled the user will be prompted to apply the update immediately after download.

FAQ

What kinds of assets do I need to build?

For macOS, you'll need to build a .zip file. Use electron-forge or electron-installer-zip to package your app as a zip.

For Windows, you'll need to build a .exe and .nupkg files with electron-forge or electron-winstaller.

Why is my app launching multiple times?

Windows apps have an update process that requires multiple application restarts. You can use the electron-squirrel-startup module to improve this behavior.

Can I use this module by uploading my private app's builds to a public GitHub repository?

Yes :)

I want to manually upload my builds to a static storage solution, where do I put them?

If you publish your builds manually ensure the file structure is:

  • **/{platform}/{arch}/{artifact}

For example that means that these files should exist:

  • **/win32/x64/RELEASES
  • **/darwin/arm64/RELEASES.json
  • **/darwin/arm64/My App v1.0.0.zip (or something similar)
  • ...

License

MIT

See Also

webtoons-desktopmoi-castquick-parent-uploadermurderhornetlellis-desktoptoxen3@infinitebrahmanuniverse/nolb-updjovapos-pos@everything-registry/sub-chunk-3018progress-report-generator-v2oil-money-kioskcicada-notifications-appatmosfar_desktopdesktop-vue-golangwindows95wireguisunrizetest_electron_autoupdate_v3dipositive-billiard-adminjs-blitzjoycastcicada-notifications-app-v2cobook-appuniversal-penguinultima-desktopultima-desktop-releasestuto_electron_frameworktrioslibtims.software@axfelix/moveit@axfelix/proveit@bdsm-tools/v-dom4xx8tlr-router-desktop@coding_india/all_in_one_packagezcl-clientupdate-test-freedomgptvease@mrgodhani/rss-readermy-app090899my-app-electronmodern-terminal-iposmonoblokk2-clinetmi-tienditamermaid-storemypharma_notificadororange-css-guide-appoxplorer-guiraven-readerremote-control-clientpicknplaceraindrop-desktopridereceiptspropresenter-extensionreapi-desktopsmartpossmapi-managersimply-scum-botslid_desktopgofer-appgladminappgif-cake-2gta-derzhava-launcherguessing-gamehr-betalellis-desktop-appmacintosh.jsmacros-to-helldivers-pcmaha-climagnum-opus-launcherabstrolabe-appawesome-client-flyelecantar-syncconpadchat_pluschatgpt-desktopchatgpt-macchatgpt-tray-appchatgpt-universalcloudslurp-desktopclient-electronjsclientedi-electronjscostofwardesktop-call-libdesktop-electrondesktop-nodecurvemaxctbarataotesteebarataoctbelievers-swordauto-update-pocdiscord-ghostdida-clidirectful-desktop-appdownloadsound.clouddst-app-tselectron-fiddledst-dashboard-applicationelectron-api-demoserp-integration-client
3.0.0

2 years ago

2.0.1

5 years ago

1.5.0

6 years ago

1.4.2

6 years ago

1.3.0

7 years ago

1.2.0

7 years ago

1.1.2

7 years ago

1.1.1

7 years ago

1.1.0

7 years ago

1.0.1

7 years ago

1.0.0

7 years ago