feat: rebuild portable auto-update flow
This commit is contained in:
57
scripts/compile-updater.js
Normal file
57
scripts/compile-updater.js
Normal file
@@ -0,0 +1,57 @@
|
||||
#!/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)
|
||||
}
|
||||
Reference in New Issue
Block a user