https://github.com/electron-delta/electron-delta
True delta updates for electronjs
https://github.com/electron-delta/electron-delta
delta-updates electron-app electron-builder electron-updater electronjs
Last synced: 4 months ago
JSON representation
True delta updates for electronjs
- Host: GitHub
- URL: https://github.com/electron-delta/electron-delta
- Owner: electron-delta
- Created: 2022-03-24T18:13:14.000Z (about 3 years ago)
- Default Branch: main
- Last Pushed: 2022-08-16T18:36:22.000Z (almost 3 years ago)
- Last Synced: 2025-02-08T16:39:53.184Z (4 months ago)
- Topics: delta-updates, electron-app, electron-builder, electron-updater, electronjs
- Language: JavaScript
- Homepage: https://electrondelta.com/
- Size: 3.45 MB
- Stars: 39
- Watchers: 1
- Forks: 4
- Open Issues: 3
-
Metadata Files:
- Readme: README.md
Awesome Lists containing this project
README
## I'm working on macos delta updates. It's going to come soon. Help required!
# @electron-delta/builder
True delta updates for electronjs apps. It reduces the bandwidth usage by 90%. Users download only the delta. It uses binary diffing (`HDiffPatch` library) to generate the delta.

## Requirements
1. The app must use `electron-builder` to build the app.
2. Currently only `Windows` os is supported. MacOS support is arriving soon.
3. Target must be `nsis` or `nsis-web`## Installation
#### Step 1:
```sh
npm install @electron-delta/builder -D
```#### Step 2:
Create a file name called `.electron-delta.js` in the root of the project.
#### Step 3:
In the `electron-builder` config, mention the above file as `afterAllArtifactBuild` hook.
```json
"build": {
"appId": "com.electron.sample-app",
"afterAllArtifactBuild": ".electron-delta.js",
"win": {
"target": ["nsis"],
"publish": ["github"]
},
"nsis": {
"oneClick": true,
"perMachine": false,
}
}
```#### Step 4:
Paste the following code in the `.electron-delta.js` file. It will be executed after the app is built.
```js
// .electron-delta.js
const DeltaBuilder = require("@electron-delta/builder");
const path = require("path");const options = {
productIconPath: path.join(__dirname, "icon.ico"),
productName: "electron-sample-app",getPreviousReleases: async () => {
return [
{
version: '0.0.12',
url: 'https://github.com/electron-delta/electron-sample-app/releases/download/v0.0.12/electron-sample-app-0.0.12.exe'
},
{
version: '0.0.11',
url: 'https://github.com/electron-delta/electron-sample-app/releases/download/v0.0.11/electron-sample-app-0.0.11.exe'
},
{
version: '0.0.9',
url: 'https://github.com/electron-delta/electron-sample-app/releases/download/v0.0.9/electron-sample-app-0.0.9.exe'
}
];
},
sign: async (filePath) => {
// sign each delta executable
},
};exports.default = async function (context) {
const deltaInstallerFiles = await DeltaBuilder.build({
context,
options,
});
return deltaInstallerFiles;
};
```## `options`
- `productIconPath`: (required) Path to the icon file. The icon file must be a .ico file.
- `productName`: (required) Name of the product.
- `getPreviousReleases`: (required) Function to get the previous releases. It must return an array of objects. Each object must have `version` and `url` properties.
- `sign`: (required) Function to sign the delta executable.
- `cache`: (optional) Path to the cache directory. If not specified, the default cache directory will be used. The default cache directory is `~/.electron-delta/`.
- `processName`: (optional) Name of the process. If different from the product name.
- `latestVersion`: (optional) Latest version of the product. If not specified, the latest version will be fetched `process.env.npm_package_version`.