const fs = require('node:fs'); const path = require('node:path'); const runtimeNames = [ 'msvcp140.dll', 'msvcp140_1.dll', 'vcruntime140.dll', 'vcruntime140_1.dll', ]; function copyIfDifferent(sourcePath, targetPath) { const source = fs.statSync(sourcePath); const targetExists = fs.existsSync(targetPath); if (targetExists) { const target = fs.statSync(targetPath); if (target.size === source.size && target.mtimeMs >= source.mtimeMs) { return false; } } fs.copyFileSync(sourcePath, targetPath); return true; } function main() { if (process.platform !== 'win32') { return; } const projectRoot = path.resolve(__dirname, '..'); const sourceDir = path.join(projectRoot, 'resources', 'runtime', 'win32'); const targetDir = path.join(projectRoot, 'node_modules', 'electron', 'dist'); if (!fs.existsSync(sourceDir) || !fs.existsSync(targetDir)) { return; } let copiedCount = 0; for (const name of runtimeNames) { const sourcePath = path.join(sourceDir, name); const targetPath = path.join(targetDir, name); if (!fs.existsSync(sourcePath)) { continue; } if (copyIfDifferent(sourcePath, targetPath)) { copiedCount += 1; } } if (copiedCount > 0) { console.log(`[prepare-electron-runtime] synced ${copiedCount} runtime DLL(s) to ${targetDir}`); } } main();