• Stars
    star
    358
  • Rank 118,855 (Top 3 %)
  • Language
    JavaScript
  • License
    MIT License
  • Created about 8 years ago
  • Updated over 1 year ago

Reviews

There are no reviews yet. Be the first to send feedback to the community and the maintainers!

Repository Details

Simple way to enable update for the electron application

logo

electron-simple-updater

Build Status npm version

Description

This module allows to automatically update your application. You only need to install this module and write two lines of code! To publish your updates you just need a simple file hosting, it does not require a dedicated server.

Supported OS:

Differences between electron-simple-updater and built-in autoUpdater

  • Actually, autoUpdater is used inside.
  • Linux support.
  • It handles Squirrel.Windows install/update command line arguments.
  • It doesn't require a dedicated release server.
  • You need only 2 lines of code to make it work.

Installation

Install with npm:

npm install --save electron-simple-updater

Usage

Publish a new release

  1. Insert a link to a hosting where you will store updates.json to main.js. You can find a sample of updates.json in the example

    // Just place this code at the entry point of your application:
    const updater = require('src/index');
    updater.init('https://raw.githubusercontent.com/megahertz/electron-simple-updater/master/example/updates.json');

    You can set this link in package.json:updater.url instead of init() argument.

  2. Build your release using electron-builder or another tool. Note: Your application must be signed for automatic updates on macOS. This is a requirement of Squirrel.Mac.

  3. Upload your release with update.json to a hosting. You can do it manually or use electron-simple-publisher to simplify this process. Note: Squirrel.Mac requires a properly prepared release.json file. A release in the property url must be zipped .app file.

  4. That's it!

    Now your application will check for updates on start and download it automatically if an update is available. After app is restarted a new version will be loaded. But you can customize it to ask a user if he would like to install updates. See the example for details.

API

Options

You can set options when calling init() method or in package.json:updater section.

Name Default Description
autoDownload true Automatically download an update when it's found in updates.json
channel 'prod' An application which is built for channel like 'beta' will receive updates only from this channel
checkUpdateOnStart true Check for updates immediately when init() is called
disabled false Disable update feature. This option is set to true automatically for applications built for Mac App Store or Windows Store
logger console You can pass electron-log, winston or another logger with the following interface: { debug(), info(), warn() }. Set it to false if you would like to disable a logging feature
version app.getVersion() Current app version. In most cases, you should not pass this options manually, it is read by electron from version at package.json
url* undefined The only required parameter. This is a URL to updates.json file. You can use templates '{platform}', '{arch}' and '{channel}' in a file name.

Method

init(options)

Initialize a package. By default it finish the process if is run by Squirrel.Windows installer.

setFeedURL(url) deprecated

Sets the url and initialize the electron-simple-updater. Instead of built-in auto-updater init(), this method receives a URL to updates.json.

getFeedURL() deprecated

Return the current updates.json URL.

checkForUpdates()

Asks the server whether there is an update. url must be set before this call. Instead of built-in auto-updater, this method does not start downloading if autoDownload options is set to false.

downloadUpdate()

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

quitAndInstall()

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

setOptions(name, value)

Set one or a few options. Pass an object as the name for multiple set.

Properties (read only)

These properties are mapped to options

  • build
  • channel
  • version
  • buildId - this string contains a build, a channel and version

Events

meta object of some events is a data from updates.json

error(err)

Emitted when there is an error while updating.

checking-for-update

Emitted when start downloading update.json file.

update-available(meta)

Emitted when there is an available update.

update-not-available

Emitted when there is no available update.

update-downloading(meta)

Emitted when star downloading an update.

update-downloaded(meta)

Emitted when an update has been downloaded.

squirrel-win-installer(event)

Emitted when the app is run by Squirrel.Windows when installing. The SimpleUpdater creates/removes shortcuts and finishes the process by default.

  • event.preventDefault - set to true if you would like to customize this action
  • event.squirrelAction - squirrel-install, squirrel-updated, squirrel-uninstall, squirrel-obsolete

Related

  • electron-builder - A complete solution to package and build an Electron app. Also it contains alternative implementation of update package.
  • electron-simple-publisher - Simple way to publish releases for electron-simple-updater

License

Licensed under MIT.

Logo was designed by prolko base on the original electron logo.

More Repositories

1

electron-log

Just a simple logging module for your Electron application
JavaScript
1,128
star
2

guzzle-tor

This Guzzle middleware allows to use Tor client as a proxy
PHP
67
star
3

electron-simple-publisher

Simple way to publish releases for electron-simple-updater
JavaScript
65
star
4

react-simple-wysiwyg

Simple and lightweight React WYSIWYG editor
TypeScript
60
star
5

howfat

Shows how fat is a package
JavaScript
59
star
6

electron-cfg

Simple key-value storage for electron
JavaScript
33
star
7

spech

Check your text for grammar and spelling mistakes using multiple providers
JavaScript
31
star
8

react-media-slider

React Slider for HTML5 audio and video
JavaScript
15
star
9

twigjs-loader

twig.js loader for Webpack
JavaScript
13
star
10

gulp-task-doc

Make gulp task documentation (help) easy - just write javascript comments
JavaScript
9
star
11

electron-call

The easiest main-renderer IPC communication
JavaScript
8
star
12

jquery.get-word-by-event

jQuery GetWordByEvent plugin
JavaScript
7
star
13

clipboard-share

Share clipboard between two computers
JavaScript
7
star
14

pascal-nodejs-ipc

Free Pascal library for communicating with a parent Node.js process through IPC
Pascal
5
star
15

nginx-letsencrypt

Nginx with auto-renewal Let’s Encrypt script in a single Docker container
Shell
5
star
16

mongoomig

Yet another mongoose migration tool
JavaScript
4
star
17

if-prod

Conditional running of npm scripts depending on environment
Shell
3
star
18

gulp-audiosprite

Gulp wrapper for audiosprite, which is ffmpeg wrapper that will take in multiple audio files and combines them into a single file
JavaScript
3
star
19

samarkand-guide

samarkand-guide.com website
TypeScript
3
star
20

mg-model

Simple and lightweight angular model library
JavaScript
2
star
21

mongo-backup-alpine

Simple MongoDB backup service in Docker
Shell
2
star
22

node-purified-image

Load, save and draw on image with API similar to HTML Canvas Context 2D. No native dependencies.
JavaScript
2
star
23

letssl

Simple way to retrieve SSL certificate using HTTP ACME challenge
JavaScript
1
star
24

fvm

Free Pascal Version Manager: Simple bash script to manage multiple active Free Pascal Compiler versions
Shell
1
star
25

webunit

Yii 1 PHPUnit web interface
CSS
1
star
26

package-options

The single point to load options for your node package
JavaScript
1
star
27

mongoose-model

Define your mongoose models easily with Typescript
TypeScript
1
star
28

humile

Make Jasmine Great Again!
JavaScript
1
star
29

monitor-test

Just a tiny HTML monitor test
HTML
1
star
30

mg-translate

Simple and lightweight (3kb) angular translate library with format similar to yii or drupal
JavaScript
1
star
31

s3u

S3 URL manipulation helper
JavaScript
1
star
32

secrypt

Tool for keeping repository secrets encrypted
JavaScript
1
star