How to release the electron app with only modified modules/files?

738 Views Asked by At

I am using electron builder to package the app and releasing on github private repository and also implemented electron-updater to update the app automatically in background, everything is working fine.

but the problem is each time i am releasing the app on github using below script

"scripts": {
      "deploy": "electron-builder --config=electron-builder.yml build --win --x64 --ia32 --publish always" 
 },

Electron-builder config file

directories:
  output: dist
  buildResources: build

nsis:
  allowToChangeInstallationDirectory: true
  oneClick: false
  perMachine: false
  deleteAppDataOnUninstall: true
  license: ./license.txt

win:
  target:
    - target: nsis
  icon: ./icons/logo.png   
  
mac:
  icon: ./icons/icon.icns
  target:
    - target: dmg
    - target: zip

  hardenedRuntime: true
  gatekeeperAssess: false
  entitlements: build/macos/entitlements.mac.plist
  entitlementsInherit: build/macos/entitlements.mac.plist

dmg:
  sign: false

linux:  
  target:
    - target: deb
    - target: tar.gz
    - target: snap 

asar: true
buildDependenciesFromSource: true
compression: store

publish:
  provider: github
  token: xxxxxxxxxxxxxxxxxxxxxxxxxxx
  releaseType: release

Pakcage.json

{
  "name": "testapp",
  "productName": "testapp",
  "version": "0.0.1",
  "description": "My Electron application description",
  "main": "src/main.js",
  "scripts": {
    "start": "electron-forge start",
    "package": "electron-forge package",
    "make": "electron-forge make",
    "publish": "electron-forge publish",
    "lint": "echo \"No linting configured\"",
    "clean": "npm cache clean --force",
    "build": "electron-builder --config=electron-builder.yml build --win --x64 --ia32 --publish never",
     "deploy": "electron-builder --config=electron-builder.yml build --win --x64 --ia32 --publish always",
    "postinstall": "electron-builder install-app-deps"
  },
  "repository": {
    "type": "git",
    "url": "repourl"
  },
  "keywords": [],
  "author": {
    "name": "name",
    "email": "emailid"
  },
  "license": "MIT",
  "build": {
    "appId": "appid",
    "category": "Business",
    "publish": [
      {
        "provider": "github",
        "private": true,
        "owner": "user",
        "repo": "reponmae"
      }
    ]
  },
  "config": {
    "forge": {
      "packagerConfig": {},
      "makers": [
        {
          "name": "@electron-forge/maker-squirrel",
          "config": {
            "name": "DesktopDMS"
          }
        },
        {
          "name": "@electron-forge/maker-zip",
          "platforms": [
            "darwin"
          ]
        },
        {
          "name": "@electron-forge/maker-deb",
          "config": {}
        },
        {
          "name": "@electron-forge/maker-rpm",
          "config": {}
        }
      ]
    }
  },
  "dependencies": {
    "@progress/kendo-ui": "^2020.2.617", //i know kendo and synfusion UI packages increasing app size
    "@syncfusion/ej2": "^18.1.59",
    "axios": "^0.19.2",    
    "electron-json-storage": "^4.2.0",
    "electron-updater": "^4.3.5",
    "jquery": "^3.5.1",
    "jsrender": "^1.0.6",
    "material-datetime-picker": "^2.4.0",
    "materialize-css": "^1.0.0-rc.2"
  },
  "devDependencies": {
    "@electron-forge/cli": "^6.0.0-beta.52",
    "@electron-forge/maker-deb": "^6.0.0-beta.51",
    "@electron-forge/maker-rpm": "^6.0.0-beta.51",
    "@electron-forge/maker-squirrel": "^6.0.0-beta.51",
    "@electron-forge/maker-zip": "^6.0.0-beta.51",
    "electron": "9.0.4",
    "electron-builder": "^22.8.0",
  }
}

electron builder always creating new package/installer/app with same size[in between 250-300MB] and electron updater is downloading the updated version of app.

So how can i reduce the size of progressive releases[or release only modified module/files] because its very frustrating to download complete app each time.

I have tried compression[not getting much difference] and removed some unused packages as well. As i know VS Code/ Zoom/ Slack are managing this scenario but i don't know how.

I need some help/direction to achieve it. Thanks in advance.

1

There are 1 best solutions below

1
On

Mate that's not possible at the moment. I request you to follow the common approach of bundling new application and make release.