diff --git a/.changeset/few-eagles-learn.md b/.changeset/few-eagles-learn.md new file mode 100644 index 0000000000..24fbdd12ae --- /dev/null +++ b/.changeset/few-eagles-learn.md @@ -0,0 +1,6 @@ +--- +"electron-updater": patch +--- + + +fix: When error code is ENOENT, try to use electron.shell.openPath to run installer on Windows diff --git a/packages/electron-updater/src/NsisUpdater.ts b/packages/electron-updater/src/NsisUpdater.ts index c509ed3f0a..41339441d0 100644 --- a/packages/electron-updater/src/NsisUpdater.ts +++ b/packages/electron-updater/src/NsisUpdater.ts @@ -156,9 +156,15 @@ export class NsisUpdater extends BaseUpdater { // 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 const errorCode = (e as NodeJS.ErrnoException).code - this._logger.info(`Cannot run installer: error code: ${errorCode}, error message: "${e.message}", will be executed again using elevate if EACCES"`) + this._logger.info( + `Cannot run installer: error code: ${errorCode}, error message: "${e.message}", will be executed again using elevate if EACCES, and will try to use electron.shell.openItem if ENOENT` + ) if (errorCode === "UNKNOWN" || errorCode === "EACCES") { callUsingElevation() + } else if (errorCode === "ENOENT") { + require("electron") + .shell.openPath(options.installerPath) + .catch((err: Error) => this.dispatchError(err)) } else { this.dispatchError(e) }