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:
s
2026-06-30 12:45:37 +02:00
parent 26b70d29c4
commit 35481fe7d7
2 changed files with 4 additions and 20 deletions

22
main.js
View File

@@ -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();

View File

@@ -1,6 +1,6 @@
{
"name": "farm-tracker",
"version": "1.0.5",
"version": "1.0.7",
"description": "Suivi de loot Minecraft en direct, avec sauvegarde automatique des stats et des chances de drop.",
"main": "main.js",
"scripts": {