Skip to content

hyperdivision/hyperupdate

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

23 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

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

About

P2P Electron updater with binary diffing built in

Resources

License

Stars

Watchers

Forks

Packages

No packages published