fix: auto-install AppImage dans ~/.local/bin au premier lancement Linux
Au démarrage, si l'AppImage ne tourne pas depuis ~/.local/bin/farm-tracker.AppImage, elle s'y copie automatiquement — plus besoin d'installation manuelle. Les mises à jour suivantes y atterrissent toujours (fix update Linux). Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
This commit is contained in:
31
main.js
31
main.js
@@ -154,14 +154,23 @@ async function downloadAndInstall(downloadUrl, version) {
|
||||
if (process.platform === 'linux') {
|
||||
fs.chmodSync(tmpPath, 0o755);
|
||||
const stablePath = path.join(require('os').homedir(), '.local', 'bin', 'farm-tracker.AppImage');
|
||||
const target = fs.existsSync(stablePath) ? stablePath : process.env.APPIMAGE;
|
||||
if (target) {
|
||||
fs.copyFileSync(tmpPath, target);
|
||||
try {
|
||||
fs.mkdirSync(path.dirname(stablePath), { recursive: true });
|
||||
fs.copyFileSync(tmpPath, stablePath);
|
||||
fs.chmodSync(stablePath, 0o755);
|
||||
fs.unlinkSync(tmpPath);
|
||||
app.relaunch({ execPath: target });
|
||||
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);
|
||||
} else if (process.platform === 'win32') {
|
||||
const { spawn } = require('child_process');
|
||||
@@ -251,7 +260,21 @@ function createWindow() {
|
||||
mainWindow.loadFile(path.join(__dirname, 'renderer', 'index.html'));
|
||||
}
|
||||
|
||||
function selfInstallLinux() {
|
||||
if (process.platform !== 'linux' || !app.isPackaged) return;
|
||||
const appImagePath = process.env.APPIMAGE;
|
||||
if (!appImagePath) return;
|
||||
const stablePath = path.join(require('os').homedir(), '.local', 'bin', 'farm-tracker.AppImage');
|
||||
if (appImagePath === stablePath) return;
|
||||
try {
|
||||
fs.mkdirSync(path.dirname(stablePath), { recursive: true });
|
||||
fs.copyFileSync(appImagePath, stablePath);
|
||||
fs.chmodSync(stablePath, 0o755);
|
||||
} catch (_) {}
|
||||
}
|
||||
|
||||
app.whenReady().then(() => {
|
||||
selfInstallLinux();
|
||||
createWindow();
|
||||
setTimeout(() => checkForUpdates(false), 5000);
|
||||
});
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
{
|
||||
"name": "farm-tracker",
|
||||
"version": "1.0.3",
|
||||
"version": "1.0.5",
|
||||
"description": "Suivi de loot Minecraft en direct, avec sauvegarde automatique des stats et des chances de drop.",
|
||||
"main": "main.js",
|
||||
"scripts": {
|
||||
|
||||
Reference in New Issue
Block a user