diff --git a/.changeset/famous-terms-crash.md b/.changeset/famous-terms-crash.md new file mode 100644 index 0000000000..d488077410 --- /dev/null +++ b/.changeset/famous-terms-crash.md @@ -0,0 +1,5 @@ +--- +"electron-updater": patch +--- + +fix: NsisUpdater - only resolving true if pid !== undefined diff --git a/packages/electron-updater/src/AppImageUpdater.ts b/packages/electron-updater/src/AppImageUpdater.ts index c8edc966c1..a8cc747e79 100644 --- a/packages/electron-updater/src/AppImageUpdater.ts +++ b/packages/electron-updater/src/AppImageUpdater.ts @@ -98,7 +98,8 @@ export class AppImageUpdater extends BaseUpdater { this.emit("appimage-filename-updated", destination) } - const env: any = { + const env: NodeJS.ProcessEnv = { + ...process.env, APPIMAGE_SILENT_INSTALL: "true", } @@ -107,7 +108,7 @@ export class AppImageUpdater extends BaseUpdater { this.spawnLog(destination, [], env) } else { env.APPIMAGE_EXIT_AFTER_INSTALL = "true" - execFileSync(destination, [], env) + execFileSync(destination, [], { env }) } return true } diff --git a/packages/electron-updater/src/BaseUpdater.ts b/packages/electron-updater/src/BaseUpdater.ts index deeaea1e78..d4cb713fe1 100644 --- a/packages/electron-updater/src/BaseUpdater.ts +++ b/packages/electron-updater/src/BaseUpdater.ts @@ -1,5 +1,5 @@ import { AllPublishOptions } from "builder-util-runtime" -import { spawn, spawnSync } from "child_process" +import { spawn, SpawnOptions, spawnSync, StdioOptions } from "child_process" import { AppAdapter } from "./AppAdapter" import { AppUpdater, DownloadExecutorTask } from "./AppUpdater" @@ -134,20 +134,19 @@ export abstract class BaseUpdater extends AppUpdater { */ // https://github.com/electron-userland/electron-builder/issues/1129 // Node 8 sends errors: https://nodejs.org/dist/latest-v8.x/docs/api/errors.html#errors_common_system_errors - protected async spawnLog(cmd: string, args: string[] = [], env: any = {}): Promise { + protected async spawnLog(cmd: string, args: string[] = [], env: any = undefined, stdio: StdioOptions = "ignore"): Promise { this._logger.info(`Executing: ${cmd} with args: ${args}`) return new Promise((resolve, reject) => { try { - const p = spawn(cmd, args, { - stdio: "inherit", - env: { ...process.env, ...env }, - detached: true, - }) + const params: SpawnOptions = { stdio, env, detached: true } + const p = spawn(cmd, args, params) p.on("error", error => { reject(error) }) p.unref() - resolve(p.pid !== undefined) + if (process.pid !== undefined) { + resolve(true) + } } catch (error) { reject(error) }