Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/toyobayashi/electron-github-asar-updater
https://github.com/toyobayashi/electron-github-asar-updater
Last synced: 11 days ago
JSON representation
- Host: GitHub
- URL: https://github.com/toyobayashi/electron-github-asar-updater
- Owner: toyobayashi
- License: mit
- Created: 2018-11-06T04:52:08.000Z (about 6 years ago)
- Default Branch: master
- Last Pushed: 2022-03-29T13:12:27.000Z (over 2 years ago)
- Last Synced: 2024-10-11T20:58:32.956Z (27 days ago)
- Language: C
- Size: 40 KB
- Stars: 18
- Watchers: 2
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
- License: LICENSE.md
Awesome Lists containing this project
README
# electron-github-asar-updater
This package works after Electron app is packaged.
electron-github-asar-updater v2.x require Electron version **`>= 2.0.0 && < 15.0.0`**
## Usage
1. Default
``` js
// Electron main process
const Updater = require('electron-github-asar-updater')/**
* Write file
* ${process.resourcesPath}/updater/index.js
* ${process.resourcesPath}/updater/package.json
*/
const updater = new Updater('githubUser/repoName', '{{prefix}}');(async function () {
/**
* Check latest github release.
*
* Tag name must be "vX.X.X".
* For example: v2.3.3
*
* Asar zip name must be `{{prefix}}-${process.platform}-${process.arch}.zip`
* For example: {{prefix}}-win32-ia32.zip {{prefix}}-linux-x64.zip
*
* Full asset name example:
* myapp-v2.3.3-win32-x64.zip
* myapp-v2.3.3-win32-ia32.exe
* myapp-v2.3.3-linux-x64.deb
*/
await updater.check({
/**
* -1: ignore pre-release (default)
* 0: include pre-release
* 1: check prerelease only
*/
prerelease: -1
})const info = updater.getUpdateInfo()
if (info) { // newer version found
console.log(info)
if (updater.isReadyToDownload()) { // exists `resources-${process.platform}-${process.arch}.zip`
/**
* Download `resources-${process.platform}.zip` and unzip to
* `${process.resourcesPath}/.patch`
*/
const downloadResult = await updater.download(({ name, current, max, loading }) => {
/**
* {
* name: string;
* current: number;
* max: number;
* loading: number;
* }
*
* do something, return void
*/
})if (downloadResult) { // Success
/**
* 1. Rename `${process.resourcesPath}/updater` to `${process.resourcesPath}/app`
* 2. Relaunch. Copy `${process.resourcesPath}/.patch/*` to `${process.resourcesPath}`
* 3. Remove `${process.resourcesPath}/.patch`
* 4. Rename `${process.resourcesPath}/app` to `${process.resourcesPath}/updater`
* 5. Relaunch
*/
updater.relaunch()
} else {
console.log('download aborted.')
}
}
}
})()
```2. Use custom updater executable
``` js
// Electron main process
const Updater = require('electron-github-asar-updater')// use custom updater executable
const updater = new Updater('githubUser/repoName', '{{prefix}}', true);
(async function () {await updater.check({
prerelease: -1
})const info = updater.getUpdateInfo()
if (info) {
if (updater.isReadyToDownload()) {
const downloadResult = await updater.download(({ name, current, max, loading }) => {})
if (downloadResult) {
// run executable and exit app, relaunch app by your program
require('child_process').spawn(/* ... */).unref()
updater.relaunch() // just call app.exit()
} else {
console.log('download aborted.')
}
}
}
})()
```