如何通过Electron获取macOS应用的构建版本号
解决Electron macOS应用运行时获取构建版本号的方法
以下几种方式可以实现运行时获取构建版本号:
方法1:直接读取macOS应用的Info.plist文件
macOS应用的构建版本号对应Info.plist中的CFBundleVersion字段,你可以通过Electron的app模块获取应用路径,再读取该文件解析出对应值。
示例代码(依赖plist库):
首先安装plist解析依赖:
npm install plist
在主进程中编写代码:
const { app } = require('electron'); const fs = require('fs'); const plist = require('plist'); const path = require('path'); function getBuildVersion() { // 获取应用程序路径(macOS下是.app包的路径) const appPath = app.getPath('exe'); // 拼接Info.plist的路径 const plistPath = path.join(appPath, '../Info.plist'); try { const plistContent = fs.readFileSync(plistPath, 'utf8'); const plistData = plist.parse(plistContent); return plistData.CFBundleVersion; // 对应你的buildVersion } catch (err) { console.error('读取构建版本失败:', err); return null; } } // 使用示例 console.log('构建版本号:', getBuildVersion()); // 输出123456
无依赖版本(调用系统命令):
const { app } = require('electron'); const { execSync } = require('child_process'); const path = require('path'); function getBuildVersion() { const appPath = app.getPath('exe'); const plistPath = path.join(appPath, '../Info.plist'); try { const result = execSync(`plutil -extract CFBundleVersion raw "${plistPath}"`).toString().trim(); return result; } catch (err) { console.error('读取构建版本失败:', err); return null; } }
方法2:打包时将构建版本注入到package.json
在forge.config.js中,通过extraMetadata将buildVersion注入到打包后的package.json中,之后直接读取:
修改forge.config.js:
module.exports = { // 其他配置... packagerConfig: { appVersion: '1.0.0', buildVersion: '123456', extraMetadata: { buildVersion: '123456' // 与buildVersion保持一致 } } };
在代码中读取:
const packageJson = require('./package.json'); console.log('构建版本号:', packageJson.buildVersion); // 输出123456
注意:如果在渲染进程中使用,需通过IPC从主进程获取该值,或配置Electron允许渲染进程读取package.json。
方法3:打包时注入环境变量
在forge.config.js中设置环境变量,运行时直接读取:
修改forge.config.js:
module.exports = { // 其他配置... packagerConfig: { appVersion: '1.0.0', buildVersion: '123456', env: { APP_BUILD_VERSION: '123456' } } };
在代码中读取:
console.log('构建版本号:', process.env.APP_BUILD_VERSION); // 输出123456
内容的提问来源于stack exchange,提问作者Vinicius Bazanella
相关产品推荐
相关产品推荐

