fix: update Linux via spawn comme Windows (plus app.relaunch)
app.relaunch() ne fonctionne pas avec les AppImages — il tente de relancer le binaire Electron interne au lieu du fichier .AppImage. On utilise maintenant spawn + detach + app.quit() comme sur Windows. selfInstallLinux() gère la copie vers ~/.local/bin/ au premier démarrage du nouvel AppImage. Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
This commit is contained in:
22
main.js
22
main.js
@@ -153,25 +153,9 @@ async function downloadAndInstall(downloadUrl, version) {
|
||||
sendUpdateProgress(100, 'installing');
|
||||
if (process.platform === 'linux') {
|
||||
fs.chmodSync(tmpPath, 0o755);
|
||||
const stablePath = path.join(require('os').homedir(), '.local', 'bin', 'farm-tracker.AppImage');
|
||||
try {
|
||||
fs.mkdirSync(path.dirname(stablePath), { recursive: true });
|
||||
fs.copyFileSync(tmpPath, stablePath);
|
||||
fs.chmodSync(stablePath, 0o755);
|
||||
fs.unlinkSync(tmpPath);
|
||||
app.relaunch({ execPath: stablePath });
|
||||
} catch (_) {
|
||||
// fallback: remplace l'AppImage courant si la copie vers bin/ échoue
|
||||
const fallback = process.env.APPIMAGE;
|
||||
if (fallback) {
|
||||
fs.copyFileSync(tmpPath, fallback);
|
||||
fs.unlinkSync(tmpPath);
|
||||
app.relaunch({ execPath: fallback });
|
||||
} else {
|
||||
app.relaunch({ execPath: tmpPath });
|
||||
}
|
||||
}
|
||||
app.exit(0);
|
||||
const { spawn } = require('child_process');
|
||||
spawn(tmpPath, [], { detached: true, stdio: 'ignore' }).unref();
|
||||
app.quit();
|
||||
} else if (process.platform === 'win32') {
|
||||
const { spawn } = require('child_process');
|
||||
spawn(tmpPath, ['/S'], { detached: true, stdio: 'ignore' }).unref();
|
||||
|
||||
Reference in New Issue
Block a user