Ecosyste.ms: Awesome

An open API service indexing awesome lists of open source software.

Awesome Lists | Featured Topics | Projects

https://github.com/megahertz/electron-simple-updater

Simple way to enable update for the electron application
https://github.com/megahertz/electron-simple-updater

electron linux macos squirrel update windows

Last synced: 7 days ago
JSON representation

Simple way to enable update for the electron application

Awesome Lists containing this project

README

        

![logo](https://raw.githubusercontent.com/megahertz/electron-simple-updater/master/logo.png)
# electron-simple-updater
[![Build Status](https://travis-ci.org/megahertz/electron-simple-updater.svg?branch=master)](https://travis-ci.org/megahertz/electron-simple-updater)
[![npm version](https://badge.fury.io/js/electron-simple-updater.svg)](https://badge.fury.io/js/electron-simple-updater)

## 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:
- Mac, ([Squirrel.Mac](https://github.com/Squirrel/Squirrel.Mac))
- Windows ([Squirrel.Windows](https://github.com/Squirrel/Squirrel.Windows))
- Linux (for [AppImage](http://appimage.org/) format)

## 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](https://npmjs.org/package/electron-simple-updater):

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](example)

```js
// 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](example/updates.json) or use
[electron-simple-publisher](https://github.com/megahertz/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](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](https://github.com/megahertz/electron-log), [winston](https://github.com/winstonjs/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](https://github.com/megahertz/electron-simple-updater/blob/master/example/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](https://github.com/electron-userland/electron-builder) -
A complete solution to package and build an Electron app. Also it contains
alternative implementation of update package.
- [electron-simple-publisher](https://github.com/megahertz/electron-simple-publisher) -
Simple way to publish releases for electron-simple-updater


## License

Licensed under MIT.

Logo was designed by [prolko](https://www.behance.net/prolko) base on the
original [electron](https://github.com/electron/electron) logo.