fix(desktop): spawn SnoreToast from app.asar.unpacked (was ENOENT inside asar)
snoreExe returned the app.asar path (fs.existsSync lies about asar paths), so spawn failed with ENOENT and always fell back to the reply-less WindowsToaster. Map to app.asar.unpacked unconditionally so the real SnoreToast binary (with -w) runs and captures the reply. Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
This commit is contained in:
+7
-3
@@ -61,10 +61,14 @@ function snoreExe() {
|
|||||||
try {
|
try {
|
||||||
const dir = path.dirname(require.resolve('node-notifier'));
|
const dir = path.dirname(require.resolve('node-notifier'));
|
||||||
const exe = os.arch() === 'ia32' ? 'snoretoast-x86.exe' : 'snoretoast-x64.exe';
|
const exe = os.arch() === 'ia32' ? 'snoretoast-x86.exe' : 'snoretoast-x64.exe';
|
||||||
const base = path.join(dir, 'vendor', 'snoreToast', exe);
|
let p = path.join(dir, 'vendor', 'snoreToast', exe);
|
||||||
for (const c of [base, base.replace('app.asar' + path.sep, 'app.asar.unpacked' + path.sep)]) {
|
// In a packaged app the module resolves inside app.asar, but binaries live in
|
||||||
if (fs.existsSync(c)) return c;
|
// app.asar.unpacked — and fs.existsSync falsely reports the asar path exists, so we can't
|
||||||
|
// test it; map to the unpacked copy unconditionally (that's the real, spawnable file).
|
||||||
|
if (p.includes('app.asar' + path.sep) && !p.includes('app.asar.unpacked')) {
|
||||||
|
p = p.replace('app.asar' + path.sep, 'app.asar.unpacked' + path.sep);
|
||||||
}
|
}
|
||||||
|
return p;
|
||||||
} catch (_) {}
|
} catch (_) {}
|
||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user