From 2e40ca9fee39fe316df5fb434cf1cc9dea99086f Mon Sep 17 00:00:00 2001 From: purocean Date: Tue, 2 Jul 2024 22:21:48 +0800 Subject: [PATCH] refactor: enable updater on Windows only if uninstaller is found --- src/main/updater.ts | 14 +++++++++++++- 1 file changed, 13 insertions(+), 1 deletion(-) diff --git a/src/main/updater.ts b/src/main/updater.ts index f5e59eef..f265cfcd 100644 --- a/src/main/updater.ts +++ b/src/main/updater.ts @@ -1,5 +1,7 @@ import type { RequestOptions } from 'http' import { dialog, app, shell } from 'electron' +import { dirname } from 'path' +import { readdirSync } from 'fs' import { autoUpdater, CancellationToken, UpdateInfo } from 'electron-updater' import { resolveFiles } from 'electron-updater/out/providers/Provider' import { GitHubProvider } from 'electron-updater/out/providers/GitHubProvider' @@ -20,7 +22,7 @@ autoUpdater.logger = logger let progressBar: any = null const isAppx = app.getAppPath().indexOf('\\WindowsApps\\') > -1 -const disabled = isAppx || (process as any).mas +let disabled = isAppx || (process as any).mas class UpdateProvider extends GitHubProvider { constructor (options: any, updater: any, runtimeOptions: any) { @@ -87,6 +89,16 @@ const init = (call?: () => void) => { return } + if (process.platform === 'win32') { + const fileList = readdirSync(dirname(app.getPath('exe'))) + const hasUninstall = fileList.some(x => x.includes('Uninstall')) + if (!hasUninstall) { + disabled = true + console.log('updater >', 'No uninstaller found, updater disabled') + return + } + } + autoUpdater.setFeedURL({ provider: 'custom', owner: 'purocean', repo: 'yn', updateProvider: UpdateProvider as any }) autoUpdater.autoDownload = false