From 8d587d27e59d56994b86e1e2b5b6280c9c6c3fe9 Mon Sep 17 00:00:00 2001 From: Eugene Pankov Date: Tue, 24 Aug 2021 19:13:49 +0200 Subject: [PATCH] reintroduced electron-updater --- app/package.json | 3 +- app/yarn.lock | 103 +++++++++++++++++- .../src/services/electron.service.ts | 4 +- .../src/services/updater.service.ts | 41 ++++--- webpack.plugin.config.js | 1 + 5 files changed, 130 insertions(+), 22 deletions(-) diff --git a/app/package.json b/app/package.json index baaab377..1847fb3b 100644 --- a/app/package.json +++ b/app/package.json @@ -16,17 +16,18 @@ "dependencies": { "@angular/cdk": "^12.2.0", "@electron/remote": "1.2.0", + "@tabby-gang/node-pty": "^0.11.0-beta.200", "any-promise": "^1.3.0", "electron-config": "2.0.0", "electron-debug": "^3.2.0", "electron-promise-ipc": "^2.2.4", + "electron-updater": "^4.3.9", "fontmanager-redux": "1.1.0", "glasstron": "0.0.7", "js-yaml": "4.1.0", "keytar": "^7.7.0", "mz": "^2.7.0", "native-process-working-directory": "^1.0.2", - "@tabby-gang/node-pty": "^0.11.0-beta.200", "npm": "6", "rxjs": "^7.2.0", "source-map-support": "^0.5.19", diff --git a/app/yarn.lock b/app/yarn.lock index e92e9124..9897ce97 100644 --- a/app/yarn.lock +++ b/app/yarn.lock @@ -115,6 +115,11 @@ resolved "https://registry.yarnpkg.com/@types/node/-/node-16.0.1.tgz#70cedfda26af7a2ca073fdcc9beb2fff4aa693f8" integrity sha512-hBOx4SUlEPKwRi6PrXuTGw1z6lz0fjsibcWCM378YxsSu/6+C30L6CR49zIBKHiwNWCYIcOLjg4OHKZaFeLAug== +"@types/semver@^7.3.5": + version "7.3.8" + resolved "https://registry.yarnpkg.com/@types/semver/-/semver-7.3.8.tgz#508a27995498d7586dcecd77c25e289bfaf90c59" + integrity sha512-D/2EJvAlCEtYFEYmmlGwbGXuK886HzyCc3nZX/tkFTQdEU8jZDAgiv08P162yB17y4ZXZoq7yFAnW4GDBb9Now== + JSONStream@^1.3.4, JSONStream@^1.3.5: version "1.3.5" resolved "https://registry.yarnpkg.com/JSONStream/-/JSONStream-1.3.5.tgz#3208c1f08d3a4d99261ab64f92302bc15e111ca0" @@ -359,6 +364,14 @@ buffer@^5.5.0: base64-js "^1.3.1" ieee754 "^1.1.13" +builder-util-runtime@8.7.5: + version "8.7.5" + resolved "https://registry.yarnpkg.com/builder-util-runtime/-/builder-util-runtime-8.7.5.tgz#fbe59e274818885e0d2e358d5b7017c34ae6b0f5" + integrity sha512-fgUFHKtMNjdvH6PDRFntdIGUPgwZ69sXsAqEulCtoiqgWes5agrMq/Ud274zjJRTbckYh2PHh8/1CpFc6dpsbQ== + dependencies: + debug "^4.3.2" + sax "^1.2.4" + builtins@^1.0.3: version "1.0.3" resolved "https://registry.yarnpkg.com/builtins/-/builtins-1.0.3.tgz" @@ -693,6 +706,13 @@ debug@^4.0.1, debug@^4.3.1: dependencies: ms "2.1.2" +debug@^4.3.2: + version "4.3.2" + resolved "https://registry.yarnpkg.com/debug/-/debug-4.3.2.tgz#f0a49c18ac8779e31d4a0c6029dfb76873c7428b" + integrity sha512-mOp8wKcvj7XxC78zLgw/ZA+6TSgkoE2C/ienthhRD298T7UNwAg9diBpLRxC0mOezLl4B0xV7M0cCO6P/O0Xhw== + dependencies: + ms "2.1.2" + debuglog@^1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/debuglog/-/debuglog-1.0.1.tgz" @@ -852,6 +872,20 @@ electron-promise-ipc@^2.2.4: serialize-error "^5.0.0" uuid "^3.0.1" +electron-updater@^4.3.9: + version "4.3.9" + resolved "https://registry.yarnpkg.com/electron-updater/-/electron-updater-4.3.9.tgz#247c660bafad7c07935e1b81acd3e9a5fd733154" + integrity sha512-LCNfedSwZfS4Hza+pDyPR05LqHtGorCStaBgVpRnfKxOlZcvpYEX0AbMeH5XUtbtGRoH2V8osbbf2qKPNb7AsA== + dependencies: + "@types/semver" "^7.3.5" + builder-util-runtime "8.7.5" + fs-extra "^10.0.0" + js-yaml "^4.1.0" + lazy-val "^1.0.4" + lodash.escaperegexp "^4.1.2" + lodash.isequal "^4.5.0" + semver "^7.3.5" + emoji-regex@^7.0.1: version "7.0.3" resolved "https://registry.yarnpkg.com/emoji-regex/-/emoji-regex-7.0.3.tgz#933a04052860c85e83c122479c4748a8e4c72156" @@ -1076,6 +1110,15 @@ fs-constants@^1.0.0: resolved "https://registry.npmjs.org/fs-constants/-/fs-constants-1.0.0.tgz" integrity sha512-y6OAwoSIf7FyjMIv94u+b5rdheZEjzR63GTyZJm5qh4Bi+2YgwLCcI/fPFZkL5PSixOt6ZNKm+w+Hfp/Bciwow== +fs-extra@^10.0.0: + version "10.0.0" + resolved "https://registry.yarnpkg.com/fs-extra/-/fs-extra-10.0.0.tgz#9ff61b655dde53fb34a82df84bb214ce802e17c1" + integrity sha512-C5owb14u9eJwizKGdchcDUQeFtlSHHthBk8pbX9Vc1PFZrLombudjDnNns88aYslCyF6IY5SUw3Roz6xShcEIQ== + dependencies: + graceful-fs "^4.2.0" + jsonfile "^6.0.1" + universalify "^2.0.0" + fs-minipass@^1.2.5: version "1.2.7" resolved "https://registry.yarnpkg.com/fs-minipass/-/fs-minipass-1.2.7.tgz#ccff8570841e7fe4265693da88936c55aed7f7c7" @@ -1240,6 +1283,11 @@ graceful-fs@^4.1.11, graceful-fs@^4.1.15, graceful-fs@^4.1.2, graceful-fs@^4.2.2 resolved "https://registry.yarnpkg.com/graceful-fs/-/graceful-fs-4.2.4.tgz" integrity sha512-WjKPNJF79dtJAVniUlGGWHYGz2jWxT6VhN/4m1NdkbZ2nOsEF+cI1Edgql5zCRhs/VsQYRvrXctxktVXZUkixw== +graceful-fs@^4.1.6, graceful-fs@^4.2.0: + version "4.2.8" + resolved "https://registry.yarnpkg.com/graceful-fs/-/graceful-fs-4.2.8.tgz#e412b8d33f5e006593cbd3cee6df9f2cebbe802a" + integrity sha512-qkIilPUYcNhJpd33n0GBXTB1MMPp14TxEsEs0pTrsSVucApsYzW5V+Q8Qxhik6KU3evy+qkAAowTByymK0avdg== + har-schema@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/har-schema/-/har-schema-2.0.0.tgz" @@ -1550,7 +1598,7 @@ isstream@~0.1.2: resolved "https://registry.yarnpkg.com/isstream/-/isstream-0.1.2.tgz" integrity sha1-R+Y/evVa+m+S4VAOaQ64uFKcCZo= -js-yaml@4.1.0: +js-yaml@4.1.0, js-yaml@^4.1.0: version "4.1.0" resolved "https://registry.yarnpkg.com/js-yaml/-/js-yaml-4.1.0.tgz#c1fb65f8f5017901cdd2c951864ba18458a10602" integrity sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA== @@ -1587,6 +1635,15 @@ json-stringify-safe@~5.0.1: resolved "https://registry.yarnpkg.com/json-stringify-safe/-/json-stringify-safe-5.0.1.tgz" integrity sha1-Epai1Y/UXxmg9s4B1lcB4sc1tus= +jsonfile@^6.0.1: + version "6.1.0" + resolved "https://registry.yarnpkg.com/jsonfile/-/jsonfile-6.1.0.tgz#bc55b2634793c679ec6403094eb13698a6ec0aae" + integrity sha512-5dgndWOriYSm5cnYaJNhalLNDKOqFwyDB/rr1E9ZsGciGvKPs8R2xYGCacuf3z6K1YKDz182fd+fY3cn3pMqXQ== + dependencies: + universalify "^2.0.0" + optionalDependencies: + graceful-fs "^4.1.6" + jsonparse@^1.2.0: version "1.3.1" resolved "https://registry.yarnpkg.com/jsonparse/-/jsonparse-1.3.1.tgz#3f4dae4a91fac315f71062f8521cc239f1366280" @@ -1632,6 +1689,11 @@ lazy-property@~1.0.0: resolved "https://registry.yarnpkg.com/lazy-property/-/lazy-property-1.0.0.tgz#84ddc4b370679ba8bd4cdcfa4c06b43d57111147" integrity sha1-hN3Es3Bnm6i9TNz6TAa0PVcREUc= +lazy-val@^1.0.4: + version "1.0.5" + resolved "https://registry.yarnpkg.com/lazy-val/-/lazy-val-1.0.5.tgz#6cf3b9f5bc31cee7ee3e369c0832b7583dcd923d" + integrity sha512-0/BnGCCfyUMkBpeDgWihanIAF9JmZhHBgUhEqzvf+adhNGLoP6TaiI5oF8oyb3I45P+PcnrqihSf01M0l0G5+Q== + lcid@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/lcid/-/lcid-1.0.0.tgz#308accafa0bc483a3867b4b6f2b9506251d1b835" @@ -1838,6 +1900,16 @@ lodash.clonedeep@^4.5.0, lodash.clonedeep@~4.5.0: resolved "https://registry.yarnpkg.com/lodash.clonedeep/-/lodash.clonedeep-4.5.0.tgz#e23f3f9c4f8fbdde872529c1071857a086e5ccef" integrity sha1-4j8/nE+Pvd6HJSnBBxhXoIblzO8= +lodash.escaperegexp@^4.1.2: + version "4.1.2" + resolved "https://registry.yarnpkg.com/lodash.escaperegexp/-/lodash.escaperegexp-4.1.2.tgz#64762c48618082518ac3df4ccf5d5886dae20347" + integrity sha1-ZHYsSGGAglGKw99Mz11YhtriA0c= + +lodash.isequal@^4.5.0: + version "4.5.0" + resolved "https://registry.yarnpkg.com/lodash.isequal/-/lodash.isequal-4.5.0.tgz#415c4478f2bcc30120c22ce10ed3226f7d3e18e0" + integrity sha1-QVxEePK8wwEgwizhDtMib30+GOA= + lodash.union@~4.6.0: version "4.6.0" resolved "https://registry.yarnpkg.com/lodash.union/-/lodash.union-4.6.0.tgz#48bb5088409f16f1821666641c44dd1aaae3cd88" @@ -1873,6 +1945,13 @@ lru-cache@^5.1.1: dependencies: yallist "^3.0.2" +lru-cache@^6.0.0: + version "6.0.0" + resolved "https://registry.yarnpkg.com/lru-cache/-/lru-cache-6.0.0.tgz#6d6fe6570ebd96aaf90fcad1dafa3b2566db3a94" + integrity sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA== + dependencies: + yallist "^4.0.0" + macos-native-processlist@^2.0.0: version "2.0.0" resolved "https://registry.npmjs.org/macos-native-processlist/-/macos-native-processlist-2.0.0.tgz" @@ -2989,6 +3068,11 @@ safe-buffer@~5.1.0, safe-buffer@~5.1.1: resolved "https://registry.yarnpkg.com/safer-buffer/-/safer-buffer-2.1.2.tgz" integrity sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg== +sax@^1.2.4: + version "1.2.4" + resolved "https://registry.yarnpkg.com/sax/-/sax-1.2.4.tgz#2816234e2378bddc4e5354fab5caa895df7100d9" + integrity sha512-NqVDv9TpANUjFm0N8uM5GxL36UgKi9/atZw+x7YFnQ8ckwFGKrl4xX4yWtrey3UJm5nP1kUbnYgLopqWNSRhWw== + semver-diff@^2.0.0: version "2.1.0" resolved "https://registry.yarnpkg.com/semver-diff/-/semver-diff-2.1.0.tgz#4bbb8437c8d37e4b0cf1a68fd726ec6d645d6d36" @@ -3001,6 +3085,13 @@ semver-diff@^2.0.0: resolved "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz" integrity sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ== +semver@^7.3.5: + version "7.3.5" + resolved "https://registry.yarnpkg.com/semver/-/semver-7.3.5.tgz#0b621c879348d8998e4b0e4be94b3f12e6018ef7" + integrity sha512-PoeGJYh8HK4BTO/a9Tf6ZG3veo/A7ZVsYrSA6J8ny9nb3B1VrpkuN+z9OE5wfE5p6H4LchYZsegiQgbJD94ZFQ== + dependencies: + lru-cache "^6.0.0" + serialize-error@^5.0.0: version "5.0.0" resolved "https://registry.yarnpkg.com/serialize-error/-/serialize-error-5.0.0.tgz#a7ebbcdb03a5d71a6ed8461ffe0fc1a1afed62ac" @@ -3471,6 +3562,11 @@ unique-string@^1.0.0: dependencies: crypto-random-string "^1.0.0" +universalify@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/universalify/-/universalify-2.0.0.tgz#75a4984efedc4b08975c5aeb73f530d02df25717" + integrity sha512-hAZsKq7Yy11Zu1DE0OzWjw7nnLZmJZYTDZZyEFHZdUhV8FkH5MCfoU1XMaxXovpyW5nq5scPqq0ZDP9Zyl04oQ== + unpipe@~1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/unpipe/-/unpipe-1.0.0.tgz#b2bf4ee8514aae6165b4817829d21b2ef49904ec" @@ -3708,6 +3804,11 @@ yallist@^3.0.0, yallist@^3.0.2, yallist@^3.0.3: resolved "https://registry.yarnpkg.com/yallist/-/yallist-3.1.1.tgz#dbb7daf9bfd8bac9ab45ebf602b8cbad0d5d08fd" integrity sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g== +yallist@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/yallist/-/yallist-4.0.0.tgz#9bb92790d9c0effec63be73519e11a35019a3a72" + integrity sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A== + yargs-parser@^15.0.1: version "15.0.1" resolved "https://registry.yarnpkg.com/yargs-parser/-/yargs-parser-15.0.1.tgz#54786af40b820dcb2fb8025b11b4d659d76323b3" diff --git a/tabby-electron/src/services/electron.service.ts b/tabby-electron/src/services/electron.service.ts index f7ee6a61..aab81e73 100644 --- a/tabby-electron/src/services/electron.service.ts +++ b/tabby-electron/src/services/electron.service.ts @@ -1,5 +1,5 @@ import { Injectable } from '@angular/core' -import { App, IpcRenderer, Shell, Dialog, Clipboard, GlobalShortcut, Screen, Remote, AutoUpdater, TouchBar, BrowserWindow, Menu, MenuItem, PowerSaveBlocker } from 'electron' +import { App, IpcRenderer, Shell, Dialog, Clipboard, GlobalShortcut, Screen, AutoUpdater, TouchBar, BrowserWindow, Menu, MenuItem, PowerSaveBlocker } from 'electron' import * as remote from '@electron/remote' export interface MessageBoxResponse { @@ -16,7 +16,7 @@ export class ElectronService { clipboard: Clipboard globalShortcut: GlobalShortcut screen: Screen - remote: Remote + remote = remote process: any autoUpdater: AutoUpdater powerSaveBlocker: PowerSaveBlocker diff --git a/tabby-electron/src/services/updater.service.ts b/tabby-electron/src/services/updater.service.ts index 9cfa0013..f3c86b83 100644 --- a/tabby-electron/src/services/updater.service.ts +++ b/tabby-electron/src/services/updater.service.ts @@ -1,3 +1,4 @@ +import type { AppUpdater } from 'electron-updater' import { Injectable } from '@angular/core' import axios from 'axios' @@ -12,6 +13,7 @@ export class ElectronUpdaterService extends UpdaterService { private downloaded: Promise private electronUpdaterAvailable = true private updateURL: string + private autoUpdater: AppUpdater constructor ( log: LogService, @@ -27,32 +29,35 @@ export class ElectronUpdaterService extends UpdaterService { return } - electron.autoUpdater.on('update-available', () => { + this.autoUpdater = electron.remote.require('electron-updater').autoUpdater + + this.autoUpdater.on('update-available', () => { this.logger.info('Update available') }) - electron.autoUpdater.on('update-not-available', () => { + this.autoUpdater.on('update-not-available', () => { this.logger.info('No updates') }) - electron.autoUpdater.on('error', err => { + this.autoUpdater.on('error', err => { this.logger.error(err) this.electronUpdaterAvailable = false }) this.downloaded = new Promise(resolve => { - electron.autoUpdater.once('update-downloaded', () => resolve(true)) + this.autoUpdater.once('update-downloaded', () => resolve(true)) }) - config.ready$.toPromise().then(() => { if (config.store.enableAutomaticUpdates && this.electronUpdaterAvailable && !process.env.TABBY_DEV) { this.logger.debug('Checking for updates') try { - electron.autoUpdater.setFeedURL({ - url: `https://update.electronjs.org/eugeny/tabby/${process.platform}-${process.arch}/${electron.app.getVersion()}`, + this.autoUpdater.setFeedURL({ + provider: 'github', + repo: 'tabby', + owner: 'eugeny', }) - electron.autoUpdater.checkForUpdates() + this.autoUpdater.checkForUpdates() } catch (e) { this.electronUpdaterAvailable = false this.logger.info('Electron updater unavailable, falling back', e) @@ -79,26 +84,26 @@ export class ElectronUpdaterService extends UpdaterService { reject(err) } cancel = () => { - this.electron.autoUpdater.off('error', onError) - this.electron.autoUpdater.off('update-not-available', onNoUpdate) - this.electron.autoUpdater.off('update-available', onUpdate) + this.autoUpdater.off('error', onError) + this.autoUpdater.off('update-not-available', onNoUpdate) + this.autoUpdater.off('update-available', onUpdate) } - this.electron.autoUpdater.on('error', onError) - this.electron.autoUpdater.on('update-not-available', onNoUpdate) - this.electron.autoUpdater.on('update-available', onUpdate) + this.autoUpdater.on('error', onError) + this.autoUpdater.on('update-not-available', onNoUpdate) + this.autoUpdater.on('update-available', onUpdate) try { - this.electron.autoUpdater.checkForUpdates() + this.autoUpdater.checkForUpdates() } catch (e) { this.electronUpdaterAvailable = false this.logger.info('Electron updater unavailable, falling back', e) } }) - this.electron.autoUpdater.on('update-available', () => { + this.autoUpdater.on('update-available', () => { this.logger.info('Update available') }) - this.electron.autoUpdater.once('update-not-available', () => { + this.autoUpdater.once('update-not-available', () => { this.logger.info('No updates') }) @@ -132,7 +137,7 @@ export class ElectronUpdaterService extends UpdaterService { } )).response === 0) { await this.downloaded - this.electron.autoUpdater.quitAndInstall() + this.autoUpdater.quitAndInstall() } } } diff --git a/webpack.plugin.config.js b/webpack.plugin.config.js index b5ff2df1..69ce91fa 100644 --- a/webpack.plugin.config.js +++ b/webpack.plugin.config.js @@ -97,6 +97,7 @@ module.exports = options => { 'any-promise', 'child_process', 'electron-promise-ipc', + 'electron-updater', 'electron', 'fontmanager-redux', 'fs',