From 7d25b1462cbe08b184f3d04e0d7f7aabf362c1e5 Mon Sep 17 00:00:00 2001 From: Kyle Spearrin Date: Fri, 23 Feb 2018 15:23:21 -0500 Subject: [PATCH] updater can only run on certain installations --- src/main/updater.main.ts | 14 +++++++++++--- src/scripts/utils.ts | 14 +++++++++++++- 2 files changed, 24 insertions(+), 4 deletions(-) diff --git a/src/main/updater.main.ts b/src/main/updater.main.ts index 652398b9ac..a01d262723 100644 --- a/src/main/updater.main.ts +++ b/src/main/updater.main.ts @@ -10,6 +10,9 @@ import { Main } from '../main'; import { isAppImage, isDev, + isMacAppStore, + isWindowsPortable, + isWindowsStore, } from '../scripts/utils'; const UpdaterCheckInitalDelay = 5 * 1000; // 5 seconds @@ -18,8 +21,14 @@ const UpdaterCheckInterval = 12 * 60 * 60 * 1000; // 12 hours export class UpdaterMain { private doingUpdateCheck = false; private doingUpdateCheckWithFeedback = false; + private canUpdate = false; - constructor(private main: Main) { } + constructor(private main: Main) { + const linuxCanUpdate = process.platform === 'linux' && isAppImage(); + const windowsCanUpdate = process.platform === 'win32' && !isWindowsStore() && !isWindowsPortable(); + const macCanUpdate = process.platform === 'darwin' && !isMacAppStore(); + this.canUpdate = linuxCanUpdate || windowsCanUpdate || macCanUpdate; + } async init() { global.setTimeout(async () => await this.checkForUpdate(), UpdaterCheckInitalDelay); @@ -107,8 +116,7 @@ export class UpdaterMain { return; } - if (process.platform === 'linux' && !isAppImage()) { - // Only AppImage packages support auto-update on linux + if (!this.canUpdate) { if (withFeedback) { shell.openExternal('https://github.com/bitwarden/desktop/releases'); } diff --git a/src/scripts/utils.ts b/src/scripts/utils.ts index 7da7b85a0d..0c94d9981f 100644 --- a/src/scripts/utils.ts +++ b/src/scripts/utils.ts @@ -7,5 +7,17 @@ export function isDev() { } export function isAppImage() { - return 'APPIMAGE' in process.env; + return process.platform === 'linux' && 'APPIMAGE' in process.env; +} + +export function isMacAppStore() { + return process.platform === 'darwin' && process.mas && process.mas === true; +} + +export function isWindowsStore() { + return process.platform === 'win32' && process.windowsStore && process.windowsStore === true; +} + +export function isWindowsPortable() { + return process.platform === 'win32' && process.env.PORTABLE_EXECUTABLE_DIR != null; }