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

如何让Electron Builder macOS代码签名跳过Locale文件?

解决方案:移除Electron locale文件并跳过签名(或直接删除)

完全可以把这些多余的locale文件从代码签名阶段移除,甚至直接从安装包中清理掉,下面分场景给你具体方法:

1. 先确认electronLanguages配置是否真的生效

你用的electronLanguages: "en"配置本身是正确的,但要注意两个细节:

  • 部分旧版本electron-builder要求用数组格式:"electronLanguages": ["en"]
  • 这个配置会自动删除Electron Framework里非指定语言的locale文件,但少数版本可能没覆盖到Versions/A、Versions/Current这类软链接指向的目录,你可以直接打开打包后的.app包检查——如果非en的locale文件还存在,说明配置没生效,换下面的方法。

2. 用files字段直接排除多余文件

在package.json的build节点里添加files配置,明确保留英文locale文件,排除其他所有:

{
  "build": {
    "electronLanguages": ["en"],
    "files": [
      "**/*",
      "!**/Frameworks/Electron Framework.framework/**/*.lproj/locale.pak",
      "**/Frameworks/Electron Framework.framework/**/en.lproj/locale.pak"
    ]
  }
}

这样打包时会自动删掉非英文的locale文件,自然不会进入后续的签名阶段。

3. 仅跳过签名(不删除文件)

要是你不想删除文件,只是不想让这些locale文件被签名,可以用signingIgnore字段指定签名时忽略的路径:

{
  "build": {
    "mac": {
      "signingIgnore": [
        "**/*.lproj/locale.pak"
      ]
    }
  }
}

这个配置会告诉代码签名工具直接跳过所有匹配的locale文件,不执行签名操作。

4. 用afterPack钩子手动清理

如果上面的配置都没生效,还可以写个自定义脚本,在打包完成后、签名前手动删除多余文件:

  1. 在项目根目录新建scripts/clean-locales.js:
const fs = require('fs');
const path = require('path');

module.exports = async (context) => {
  const frameworkPath = path.join(context.appOutDir, 'Contents/Frameworks/Electron Framework.framework');
  // 递归遍历所有目录,清理非英文locale文件
  const walkDir = (dir) => {
    const files = fs.readdirSync(dir);
    for (const file of files) {
      const fullPath = path.join(dir, file);
      const stat = fs.statSync(fullPath);
      if (stat.isDirectory()) {
        if (file.endsWith('.lproj') && file !== 'en.lproj') {
          const localePakPath = path.join(fullPath, 'locale.pak');
          if (fs.existsSync(localePakPath)) {
            fs.unlinkSync(localePakPath);
          }
        }
        walkDir(fullPath);
      }
    }
  };
  walkDir(frameworkPath);
};
  1. 在package.json的build里配置钩子:
{
  "build": {
    "afterPack": "./scripts/clean-locales.js"
  }
}

这个脚本会在打包完成后自动清理所有非en.lproj目录下的locale.pak文件。

内容的提问来源于stack exchange,提问作者Walton

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.27 03:37:42