This repo contains the bare minimum code to have an auto-updating Electron app using electron-updater
with releases stored on GitHub.
If you can't use GitHub, you can use other providers:
- Complete electron-updater HTTP example
- Complete electron-updater from gitlab.com private repo example
NOTE: If you want to run through this whole process, you will need to fork this repo on GitHub and replace all instances of iffy
(or robertpatrick
) with your GitHub username before doing the following steps.
-
For macOS, you will need a code-signing certificate.
Install Xcode (from the App Store), then follow these instructions to make sure you have a "Mac Developer" certificate. If you'd like to export the certificate (for automated building, for instance) you can. You would then follow these instructions.
-
For MacOS, create a file named
.env
in the project base directory and add entries that look like the following.
APPLEID=<Apple Developer ID>
APPLEIDPASS=<Apple Developer ID Password or authentication token>
-
Adjust
package.json
,electron-builder.yaml
, andbuild/notarize.js
.By default,
electron-updater
will try to detect the GitHub settings (such as the repo name and owner) from reading the.git/config
or from reading other attributes withinpackage.json
. If the auto-detected settings are not what you want, configure thepublish
property as follows:{ ... "build": { "publish": [{ "provider": "github", "owner": "iffy", "repo": "electron-updater-example" }], ... } }
-
Install necessary dependencies with:
yarn
or
npm install
-
Generate a GitHub access token by going to https://github.com/settings/tokens/new. The access token should have the
repo
scope/permission. Once you have the token, assign it to an environment variableOn macOS/linux:
export GH_TOKEN="<YOUR_TOKEN_HERE>"
On Windows, run in powershell:
[Environment]::SetEnvironmentVariable("GH_TOKEN","<YOUR_TOKEN_HERE>","User")
Make sure to restart IDE/Terminal to inherit latest env variable.
-
Publish for your platform with:
electron-builder --config electron-builder.yaml -p always
or
npm run publish
If you want to publish for more platforms, edit the
publish
script inpackage.json
. For instance, to build for Windows and macOS. Note that signing/notarizing the MacOS app will only work when run on MacOS.... "scripts": { "publish": "electron-builder --config electron-builder.yaml --mac --win -p always" }, ...
-
Release the release on GitHub by going to https://github.com/YOUR_GIT_HUB_USERNAME/electron-updater-example/releases, editing the release and clicking "Publish release."
-
Download and install the app from https://github.com/YOUR_GIT_HUB_USERNAME/electron-updater-example/releases.
-
Update the version in
package.json
, commit and push to GitHub. -
Do steps 6 and 7 again.
-
Open the installed version of the app and see that it updates itself.