import { existsSync, readdirSync } from 'node:fs' import path from 'node:path' import { fileURLToPath } from 'node:url' import rcedit from 'rcedit' const rootDir = path.resolve(path.dirname(fileURLToPath(import.meta.url)), '..') export async function patchWindowsBinaries(appDir) { if (process.platform !== 'win32') { return } const binDir = path.join(appDir, 'bin') if (!existsSync(binDir)) { throw new Error(`patch-windows-binaries: bin directory not found at ${binDir}`) } const executables = readdirSync(binDir).filter((name) => name.toLowerCase().endsWith('.exe') ) for (const executable of executables) { const executablePath = path.join(binDir, executable) await rcedit(executablePath, { 'requested-execution-level': 'asInvoker' }) console.log(`patch-windows-binaries: set asInvoker on ${executablePath}`) } } if (process.argv[1] === fileURLToPath(import.meta.url)) { const appDirArg = process.argv[2] if (!appDirArg) { console.error('Usage: bun scripts/patch-windows-binaries.mjs ') process.exit(1) } await patchWindowsBinaries(path.resolve(appDirArg)) }