У меня есть электронное приложение, которое использует electron-builder
для сборки, упаковки и публикации приложения.
У меня есть следующий код автообновления:
autoUpdater.logger = log;
autoUpdater.logger.transports.file.level = "info";
autoUpdater.autoDownload = true;
const updateCheck = () => {
autoUpdater.checkForUpdates().then(resp => {
log.info("autoUpdate response:");
log.info(resp);
});
};
app.on("ready", async () => {
log.info(`Version: ${app.getVersion()}`);
autoUpdater.on("update-downloaded", () => {
log.info("update downloaded");
setImmediate(() => {
try {
log.info("installing update");
// app.relaunch();
autoUpdater.quitAndInstall();
} catch (err) {
log.error("Error installing update");
log.error(err);
}
});
});
autoUpdater.on("error", err => {
log.error("AutoUpdater error");
log.error(err);
});
updateCheck();
schedule.scheduleJob("*/10 * * * *", updateCheck);
});
Когда я публикуюВ новой версии автообновление обнаруживает, успешно загружает и пытается установить его.
Во время установки обновления индикатор выполнения наполовину заполняется, а затем исчезает.
приложение остается закрытым и не перезапускается автоматически после исчезновения индикатора выполнения.
Когда я перезапускаю его вручную, это все еще старая версия.Он обнаруживает, что есть обновление, которое уже загружено, и пытается установить его с тем же результатом (индикатор выполнения заполняется на полпути, затем исчезает, приложение остается закрытым).
Мой файл журнала не показывает ошибок, либоиз блока catch или обратного вызова autoUpdater.on("error")
.
Местоположение C:\Users\<User>\AppData\Local\<app-name>-updater
содержит файл installer.exe
, который устанавливает предыдущую версию, и папку pending
, которая содержит установщик для новой версии.Выполнение этого установщика вручную приводит к тому, что приложение обновляется без ошибок.
Как можно отладить это дальше?Почему я не вижу ошибок?Где мне их искать?Что я делаю не так?