const fs = require("fs"); const log = require("electron-log"); const { valid } = require("semver"); const AtLeastWin7 = "6.1.7601"; // const AtLeastWin10 = "10.0.10240"; log.transports.console.format = "[{y}-{m}-{d} {h}:{i}:{s}.{ms}] [beforePackHook] [{level}] {text}"; exports.default = async function beforePackHook({ arch, packager }) { // Validate package.json version const packageJson = JSON.parse(fs.readFileSync("package.json")); if (!valid(packageJson.version)) { log.error( `App version is not a valid semver version: ${packageJson.version}` ); process.exit(1); } // add json data about build as notes for latest.yml log.info(`Generating release-notes.md...`); const notes = { minWinVersion: AtLeastWin7, electronVersion: packager.config.electronVersion, arch: arch ? "x64" : "ia32", }; fs.writeFileSync("./packages/release-notes.md", JSON.stringify(notes)); // check required dist files log.info(`Checking if required files successfully bundled...`); let isCheckPassed = true; const files = [ "./dist/main.js", "./dist/preload.js", "./dist/renderer/index.html", "./dist/renderer/js/renderer.js", "./dist/workers/winEventHook.js", "./dist/workers/autoswitchWorker.js", "./bin/win-control-server.exe", "./bin/win-key-server.exe", ]; Object.values(files).forEach((file) => { try { if (!fs.existsSync(file)) { log.error(`${file} not exists!`); isCheckPassed = false; } } catch (e) { log.error(e); process.exit(1); } }); if (!isCheckPassed) process.exit(1); log.info(`All files checked!`); };