"use strict";
|
Object.defineProperty(exports, "__esModule", { value: true });
|
exports.BaseUpdater = void 0;
|
const AppUpdater_1 = require("./AppUpdater");
|
class BaseUpdater extends AppUpdater_1.AppUpdater {
|
constructor(options, app) {
|
super(options, app);
|
this.quitAndInstallCalled = false;
|
this.quitHandlerAdded = false;
|
}
|
quitAndInstall(isSilent = false, isForceRunAfter = false) {
|
this._logger.info(`Install on explicit quitAndInstall`);
|
// If NOT in silent mode use `autoRunAppAfterInstall` to determine whether to force run the app
|
const isInstalled = this.install(isSilent, isSilent ? isForceRunAfter : this.autoRunAppAfterInstall);
|
if (isInstalled) {
|
setImmediate(() => {
|
// this event is normally emitted when calling quitAndInstall, this emulates that
|
require("electron").autoUpdater.emit("before-quit-for-update");
|
this.app.quit();
|
});
|
}
|
else {
|
this.quitAndInstallCalled = false;
|
}
|
}
|
executeDownload(taskOptions) {
|
return super.executeDownload({
|
...taskOptions,
|
done: event => {
|
this.dispatchUpdateDownloaded(event);
|
this.addQuitHandler();
|
return Promise.resolve();
|
},
|
});
|
}
|
// must be sync (because quit even handler is not async)
|
install(isSilent, isForceRunAfter) {
|
if (this.quitAndInstallCalled) {
|
this._logger.warn("install call ignored: quitAndInstallCalled is set to true");
|
return false;
|
}
|
const downloadedUpdateHelper = this.downloadedUpdateHelper;
|
const installerPath = downloadedUpdateHelper == null ? null : downloadedUpdateHelper.file;
|
const downloadedFileInfo = downloadedUpdateHelper == null ? null : downloadedUpdateHelper.downloadedFileInfo;
|
if (installerPath == null || downloadedFileInfo == null) {
|
this.dispatchError(new Error("No valid update available, can't quit and install"));
|
return false;
|
}
|
// prevent calling several times
|
this.quitAndInstallCalled = true;
|
try {
|
this._logger.info(`Install: isSilent: ${isSilent}, isForceRunAfter: ${isForceRunAfter}`);
|
return this.doInstall({
|
installerPath,
|
isSilent,
|
isForceRunAfter,
|
isAdminRightsRequired: downloadedFileInfo.isAdminRightsRequired,
|
});
|
}
|
catch (e) {
|
this.dispatchError(e);
|
return false;
|
}
|
}
|
addQuitHandler() {
|
if (this.quitHandlerAdded || !this.autoInstallOnAppQuit) {
|
return;
|
}
|
this.quitHandlerAdded = true;
|
this.app.onQuit(exitCode => {
|
if (this.quitAndInstallCalled) {
|
this._logger.info("Update installer has already been triggered. Quitting application.");
|
return;
|
}
|
if (!this.autoInstallOnAppQuit) {
|
this._logger.info("Update will not be installed on quit because autoInstallOnAppQuit is set to false.");
|
return;
|
}
|
if (exitCode !== 0) {
|
this._logger.info(`Update will be not installed on quit because application is quitting with exit code ${exitCode}`);
|
return;
|
}
|
this._logger.info("Auto install update on quit");
|
this.install(true, false);
|
});
|
}
|
}
|
exports.BaseUpdater = BaseUpdater;
|
//# sourceMappingURL=BaseUpdater.js.map
|