1.2.2 • Published 3 years ago

hyperupdate v1.2.2

Weekly downloads
14
License
MIT
Repository
github
Last release
3 years ago

hyperupdate

P2P Electron updater with binary diffing built in

npm install hyperupdate

Status

Note that this project is still experimental

Usage

First setup the releaser in your app

npm install -g hyperupdate
cd your-electron-app
hyperupdate-release # will print a release config map

The release lines are store in ./hyperupdate, you might want to add this folder to your .gitignore.

Then in your Electron app, setup the updater in either your electron process or in the renderer process if you have Node.js integration enabled.

const Hyperupdate = require('hyperupdate')

const u = new Hyperupdate({
  darwin: '<from-above>',
  linux: '<from-above>',
  win32: '<from-above>'
})

u.on('update-available', () => {
  console.log('New update available', this.latestRelease)
})

u.on('update-downloaded', () => {
  console.log('New update downloaded', this.latestRelease)
})

After the update-downloaded event has fired you can use the updateAndRelaunch method to apply the new update

u.updateAndRelaunch() // will apply the update and relaunch your app

RPC

If you want to run the updater in the Electron process instead of the renderer you can use the RPC interface to access it.

In the Electron process do

await u.listen()

And then in renderer do

const Client = require('hyperupdate/client')

const u = new Client()

The remote client has the same interface as the normal updater instance.

Adding a new release

To add a new release, bump the version in your Electron's package.json and build your app using electron-builder.

Then point hyperupdate-release to the .app file on mac or unpacked directory on linux / windows.

# on mac
hyperupdate-release ./dist/mac/my-app.app

# on linux
hyperupdate-release ./dist/linux-unpacked

# on windows
hyperupdate-release ./dist/win-unpacked

Hyperupdate will chunk each release using a bundled rabin chunker, to try to make the update diff as small as possible.

After it has been added the updater will start swarming the new release.

If you the release you add is the same as the latest release, hyperupdate will just start swarming the releases instead of re-adding it.

License

MIT