46 lines
1.3 KiB
JavaScript
46 lines
1.3 KiB
JavaScript
/**
|
|
* Перед `electron-builder` на Windows: снять блокировку `release/win-unpacked/resources/app.asar`
|
|
* (часто из‑за запущенного exe из прошлой распаковки).
|
|
*/
|
|
import { execFileSync } from 'node:child_process';
|
|
import fs from 'node:fs';
|
|
import path from 'node:path';
|
|
import { fileURLToPath } from 'node:url';
|
|
|
|
const root = path.resolve(path.dirname(fileURLToPath(import.meta.url)), '..');
|
|
const winUnpacked = path.join(root, 'release', 'win-unpacked');
|
|
|
|
function sleep(ms) {
|
|
return new Promise((r) => setTimeout(r, ms));
|
|
}
|
|
|
|
function tryKillDndPlayer() {
|
|
if (process.platform !== 'win32') return;
|
|
try {
|
|
execFileSync('taskkill', ['/F', '/IM', 'DNDGamePlayer.exe', '/T'], {
|
|
stdio: 'ignore',
|
|
windowsHide: true,
|
|
});
|
|
} catch {
|
|
/* процесс не найден — нормально */
|
|
}
|
|
}
|
|
|
|
async function tryRmWinUnpacked() {
|
|
if (!fs.existsSync(winUnpacked)) return;
|
|
for (let i = 0; i < 8; i += 1) {
|
|
try {
|
|
fs.rmSync(winUnpacked, { recursive: true, force: true });
|
|
return;
|
|
} catch {
|
|
await sleep(500);
|
|
}
|
|
}
|
|
console.warn(
|
|
'[release-win-prep] Не удалось удалить release/win-unpacked. Закройте DNDGamePlayer и повторите pack.',
|
|
);
|
|
}
|
|
|
|
tryKillDndPlayer();
|
|
await tryRmWinUnpacked();
|