描述一下遇到的问题!
1.因为Electron软件需要使用特殊的文件层级包裹,里面携带一些驱动 固件等等,所以不能直接使用electron-update升级的方式去升级应用程序,所以另辟蹊径。
2.目前使用了VNISEdit 编译环境来编译安装包(NSIS脚本编译),下载时直接安装覆盖。
const http = require('http')
const path = require('path')
const fs = require('fs')http.get("http://serverIp:8088/AppInstall.exe", (res) => {if (res.statusCode !== "200") {const file = fs.createWriteStream(path.join(__dirname) + `${res.req.path.split('/')[res.req.path.split('/').length-1]}`)// 进度const len = parseInt(res.headers['content-length']) // 文件总长度console.log(len);let cur = 0res.on('data', function (chunk) {cur += chunk.lengthconst progress = (100.0 * cur / len).toFixed(2) // 当前进度const currProgress = (cur / 1048576).toFixed(2) // 当前了多少//这里开启新的线程启动子窗子 将进度条数据传送至子窗口 显示下载进度。// console.log(progress);// console.log(currProgress + "M");})res.on('end', () => {console.log('下载结束')//下载完成执行exe文件ToolsUpgrade(path.join(__dirname) + `${res.req.path.split('/')[res.req.path.split('/').length-1]}`);})file.on('finish', () => {// console.log('文件写入结束')file.close()}).on('error', (err) => {fs.unlink(path.join(__dirname) + `${res.req.path.split('/')[res.req.path.split('/').length-1]}`)if (err) {console.log(err)}})res.pipe(file)} else {console.log("网络错误!")}
})//调用.exe文件
function ToolsUpgrade(url) {var cluster = require('child_process');cluster.exec('"' + url + '"', (err, res) => {console.log(err)console.log(res)})
}