58 lines
1.5 KiB
JavaScript
58 lines
1.5 KiB
JavaScript
#!/usr/bin/env node
|
|
|
|
const fs = require('fs')
|
|
const path = require('path')
|
|
const { spawnSync } = require('child_process')
|
|
|
|
const rootDir = process.cwd()
|
|
const sourcePath = path.join(rootDir, 'build', 'PortableUpdater.cs')
|
|
const outputDir = path.join(rootDir, 'build', 'bin')
|
|
const outputPath = path.join(outputDir, 'portable-updater.exe')
|
|
|
|
function findCompiler() {
|
|
const candidates = [
|
|
'C:\\Windows\\Microsoft.NET\\Framework64\\v4.0.30319\\csc.exe',
|
|
'C:\\Windows\\Microsoft.NET\\Framework\\v4.0.30319\\csc.exe'
|
|
]
|
|
|
|
return candidates.find((candidate) => fs.existsSync(candidate)) || null
|
|
}
|
|
|
|
function main() {
|
|
if (process.platform !== 'win32') {
|
|
console.log('Skipping updater compilation on non-Windows platform.')
|
|
return
|
|
}
|
|
|
|
if (!fs.existsSync(sourcePath)) {
|
|
throw new Error(`Updater source not found: ${sourcePath}`)
|
|
}
|
|
|
|
const compiler = findCompiler()
|
|
if (!compiler) {
|
|
throw new Error('Unable to find csc.exe for compiling portable-updater.exe')
|
|
}
|
|
|
|
fs.mkdirSync(outputDir, { recursive: true })
|
|
|
|
const compileArgs = ['/nologo', '/target:exe', '/optimize+', `/out:${outputPath}`, sourcePath]
|
|
|
|
const result = spawnSync(compiler, compileArgs, {
|
|
cwd: rootDir,
|
|
stdio: 'inherit'
|
|
})
|
|
|
|
if (result.status !== 0) {
|
|
throw new Error(`csc.exe failed with exit code ${result.status}`)
|
|
}
|
|
|
|
console.log(`Portable updater compiled successfully: ${outputPath}`)
|
|
}
|
|
|
|
try {
|
|
main()
|
|
} catch (error) {
|
|
console.error(`compile-updater failed: ${error.message}`)
|
|
process.exit(1)
|
|
}
|