You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何通过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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.13 11:35:18