// https://www.electron.build/tutorials/two-package-structure const fs = require('fs') const path = require('path') const axios = require('axios') const { exec } = require('child_process') const { build } = require('electron-builder') const convertPath = (dir) => path.resolve(__dirname, dir) const outputDir = convertPath('dist_electron') // 打包输出目录 const fileContents = fs.readFileSync(convertPath('dist/config/appconfig.json'), 'utf-8') const appConfig = JSON.parse(fileContents) // 打包之前清空目录 exec('rd/s/q ' + outputDir) // 打包自动修改版本号 const pkgContents = fs.readFileSync(convertPath('package.json'), 'utf-8') const pkg = JSON.parse(pkgContents) pkg.version = appConfig.version fs.writeFileSync(convertPath('package.json'), JSON.stringify(pkg, null, 2)) axios.get(appConfig.apiUrl).then((res) => { const data = res.data.data console.log(data) const config = { productName: appConfig.appName, directories: { output: outputDir }, files: [ 'dist', 'main.js', ], nsis: { oneClick: false, allowToChangeInstallationDirectory: true }, win: { icon: convertPath('dist/favicon.ico'), target: [ 'nsis' ] }, // 应用更新服务器地址,配置了 publish 才会生成 latest.yml 文件,和 .exe 文件一起放到该服务器地址下 publish: [ { provider: 'generic', url: data.pcUpdateUrl ?? '' } ] } build({ config }) }).catch((err) => { console.error(err) })