Files
DndGamePlayer/scripts/release-win-prep.mjs
T
2026-04-19 23:22:05 +08:00

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