possibly fixed the auto updater, and fixed the node processes closing

This commit is contained in:
2026-09-01 19:39:27 -07:00
parent 414ef73e1d
commit 769c0dadcd
5 changed files with 90 additions and 37 deletions

34
main.js
View File

@@ -84,11 +84,20 @@ cmdApp.get('/__tauri_cmd/:cmd', (req, res) => {
});
cmdApp.listen(4892, '127.0.0.1', () => debugLog("[CMD-SERVER] Dedicated command server listening on 127.0.0.1:4892"));
process.stdin.resume();
process.stdin.on('end', () => {
debugLog('stdin closed - parent died. Self-terminating...');
process.exit(0);
});
process.stdin.on('error', () => {
process.exit(0);
});
process.on('uncaughtException', (err) => {
debugLog(`CRITICAL UNCAUGHT EXCEPTION: ${err.stack || err.message}`);
if (err.code === 'EPIPE') {
if (err.code === 'EPIPE' || err.code === 'EOF') {
debugLog('Pipe to parent closed - parent process gone, exiting');
process.exit(1);
process.exit(0);
}
try { sendToTauri('error', { message: err.message }); } catch (e) { }
});
@@ -126,6 +135,9 @@ async function start() {
const installBuild = async (release) => {
const tempZipPath = path.join(APPDATA_DIR, 'download-temp.zip');
if (fs.existsSync(tempZipPath)) {
try { fs.unlinkSync(tempZipPath); } catch (e) { }
}
let attempts = 0;
let downloadSuccess = false;
@@ -367,17 +379,23 @@ process.on('exit', () => {
if (serviceManager) {
for (const name of Object.keys(serviceManager.processes)) {
const proc = serviceManager.processes[name];
if (proc && proc.child) {
try { proc.child.kill('SIGKILL'); } catch (e) { }
if (proc && proc.child && proc.child.pid) {
try {
if (process.platform === 'win32') {
require('child_process').spawnSync('taskkill', ['/F', '/T', '/PID', proc.child.pid.toString()], { stdio: 'ignore', windowsHide: true });
} else {
process.kill(-proc.child.pid, 'SIGKILL');
}
} catch (e) { }
}
}
}
});
process.on('SIGINT', async () => {
if (expressServer) expressServer.close();
if (playerExpressServer) playerExpressServer.close();
if (serviceManager) await serviceManager.stopAll();
process.on('SIGINT', () => {
process.exit(0);
});
process.on('SIGTERM', () => {
process.exit(0);
});