fix(desktop): stop daemon before auto-update restart

The daemon is a detached process that survives Electron restarts,
so after an auto-update the old daemon version would keep running.
Now we stop it before quitAndInstall so the new app instance
starts a fresh daemon with the updated binary.
This commit is contained in:
Mohamed Boudra
2026-04-03 16:53:14 +07:00
parent 44da0c67b2
commit a96f2d7652
3 changed files with 6 additions and 26 deletions
@@ -548,7 +548,9 @@ export function createDaemonCommandHandlers(): Record<string, DesktopCommandHand
},
install_app_update: async () => {
const currentVersion = await resolveCurrentUpdateVersion();
return downloadAndInstallUpdate(currentVersion);
return downloadAndInstallUpdate(currentVersion, async () => {
await stopDaemon();
});
},
get_local_daemon_version: () => getLocalDaemonVersion(),
};
@@ -98,6 +98,7 @@ export async function checkForAppUpdate(currentVersion: string): Promise<AppUpda
export async function downloadAndInstallUpdate(
currentVersion: string,
onBeforeQuit?: () => Promise<void>,
): Promise<AppUpdateInstallResult> {
if (!app.isPackaged) {
return {
@@ -131,8 +132,9 @@ export async function downloadAndInstallUpdate(
await autoUpdater.downloadUpdate();
// quitAndInstall restarts the app with the new version.
// Use a short delay to allow the renderer to receive the response.
setTimeout(() => {
setTimeout(async () => {
try {
if (onBeforeQuit) await onBeforeQuit();
autoUpdater.quitAndInstall(/* isSilent */ false, /* isForceRunAfter */ true);
} catch (error) {
console.error("[auto-updater] quitAndInstall failed:", error);