From 7dc19352581985f11d470f32daed34ac5bc5ab18 Mon Sep 17 00:00:00 2001 From: Szava Date: Tue, 20 Jun 2017 12:45:27 +0200 Subject: [PATCH] feat(nsis): Add flag to force start on silent install If --force-run flag is specified on installer then will start the app on silent install Exposed forceRun flag on NSIS updater quit and install, default value is false https://github.com/electron-userland/electron-builder/issues/1545 --- packages/electron-builder/templates/nsis/common.nsh | 9 +++++++++ .../templates/nsis/installSection.nsh | 1 + packages/electron-updater/src/NsisUpdater.ts | 13 +++++++++---- 3 files changed, 19 insertions(+), 4 deletions(-) diff --git a/packages/electron-builder/templates/nsis/common.nsh b/packages/electron-builder/templates/nsis/common.nsh index 745692f2b22..fc10e7a628d 100644 --- a/packages/electron-builder/templates/nsis/common.nsh +++ b/packages/electron-builder/templates/nsis/common.nsh @@ -54,6 +54,15 @@ Name "${PRODUCT_NAME}" !macroend !define Updated `"" Updated ""` +!macro _ForceRun _a _b _t _f + ClearErrors + ${GetParameters} $R9 + ${GetOptions} $R9 "--force-run" $R8 + IfErrors `${_f}` `${_t}` +!macroend +!define ForceRun `"" ForceRun ""` + + !macro extractEmbeddedAppPackage !ifdef COMPRESS SetCompress off diff --git a/packages/electron-builder/templates/nsis/installSection.nsh b/packages/electron-builder/templates/nsis/installSection.nsh index 019331d84ca..2d3ea5b73ce 100644 --- a/packages/electron-builder/templates/nsis/installSection.nsh +++ b/packages/electron-builder/templates/nsis/installSection.nsh @@ -210,6 +210,7 @@ ${endif} !ifdef ONE_CLICK !ifdef RUN_AFTER_FINISH ${IfNot} ${Silent} + ${OrIf} ${ForceRun} # otherwise app window will be in backround HideWindow !insertmacro StartApp diff --git a/packages/electron-updater/src/NsisUpdater.ts b/packages/electron-updater/src/NsisUpdater.ts index 1c6be71099c..e82cf2d35b5 100644 --- a/packages/electron-updater/src/NsisUpdater.ts +++ b/packages/electron-updater/src/NsisUpdater.ts @@ -134,17 +134,17 @@ export class NsisUpdater extends AppUpdater { this.app.on("quit", () => { this._logger.info("Auto install update on quit") - this.install(true) + this.install(true, false) }) } - quitAndInstall(isSilent: boolean = false): void { - if (this.install(isSilent)) { + quitAndInstall(isSilent: boolean = false, forceRunAfter: boolean = false): void { + if (this.install(isSilent, forceRunAfter)) { this.app.quit() } } - private install(isSilent: boolean): boolean { + private install(isSilent: boolean, forceRunAfter: boolean): boolean { if (this.quitAndInstallCalled) { return false } @@ -163,6 +163,11 @@ export class NsisUpdater extends AppUpdater { if (isSilent) { args.push("/S") } + + if (forceRunAfter) { + args.push("--force-run") + } + const spawnOptions = { detached: true, stdio: "ignore",