- 新增初始化页面组件和路由 - 实现环境检查、Git下载、后端代码克隆等功能 - 添加下载服务和环境服务模块 - 更新类型定义,增加 Electron API 接口
58 lines
1.6 KiB
TypeScript
58 lines
1.6 KiB
TypeScript
import * as https from 'https'
|
|
import * as fs from 'fs'
|
|
import { BrowserWindow } from 'electron'
|
|
|
|
let mainWindow: BrowserWindow | null = null
|
|
|
|
export function setMainWindow(window: BrowserWindow) {
|
|
mainWindow = window
|
|
}
|
|
|
|
// 下载文件的通用函数
|
|
export function downloadFile(url: string, outputPath: string): Promise<void> {
|
|
return new Promise((resolve, reject) => {
|
|
console.log(`开始下载文件: ${url}`)
|
|
console.log(`保存路径: ${outputPath}`)
|
|
|
|
const file = fs.createWriteStream(outputPath)
|
|
|
|
https.get(url, (response) => {
|
|
const totalSize = parseInt(response.headers['content-length'] || '0', 10)
|
|
let downloadedSize = 0
|
|
|
|
console.log(`文件大小: ${totalSize} bytes`)
|
|
|
|
response.pipe(file)
|
|
|
|
response.on('data', (chunk) => {
|
|
downloadedSize += chunk.length
|
|
const progress = Math.round((downloadedSize / totalSize) * 100)
|
|
|
|
console.log(`下载进度: ${progress}% (${downloadedSize}/${totalSize})`)
|
|
|
|
if (mainWindow) {
|
|
mainWindow.webContents.send('download-progress', {
|
|
progress,
|
|
status: 'downloading',
|
|
message: `下载中... ${progress}%`
|
|
})
|
|
}
|
|
})
|
|
|
|
file.on('finish', () => {
|
|
file.close()
|
|
console.log(`文件下载完成: ${outputPath}`)
|
|
resolve()
|
|
})
|
|
|
|
file.on('error', (err) => {
|
|
console.error(`文件写入错误: ${err.message}`)
|
|
fs.unlink(outputPath, () => {}) // 删除不完整的文件
|
|
reject(err)
|
|
})
|
|
}).on('error', (err) => {
|
|
console.error(`下载错误: ${err.message}`)
|
|
reject(err)
|
|
})
|
|
})
|
|
} |