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

Electron asarUnpack配置无效:无法将EXE排除在asar包外求助

解决方案

你的问题核心是误用了Electron Builder的配置格式(package.json里的build字段),但Electron Forge不识别这套配置,得把资源相关配置移到forge.config.js的packagerConfig中,具体改法如下:

1. 清理无效配置

直接删掉package.json里的整个build字段,Electron Forge不会读取这个区域的配置。

2. 修改forge.config.js配置

在packagerConfig里添加extraResource和asarUnpack项,确保资源文件被正确复制并排除在asar包外:

const { FusesPlugin } = require('@electron-forge/plugin-fuses');
const { FuseV1Options, FuseVersion } = require('@electron/fuses');

module.exports = {
  packagerConfig: {
    asar: true,
    // 将指定目录的文件复制到打包后的resources目录下
    extraResource: [
      './resources/win'
    ],
    // 把resources/win下的所有文件排除在asar包外
    asarUnpack: [
      './resources/win/**/*'
    ]
  },
  rebuildConfig: {},
  makers: [
    {
      name: '@electron-forge/maker-squirrel',
      config: {},
    },
    {
      name: '@electron-forge/maker-zip',
      platforms: ['darwin'],
    },
    {
      name: '@electron-forge/maker-deb',
      config: {},
    },
    {
      name: '@electron-forge/maker-rpm',
      config: {},
    },
  ],
  plugins: [
    {
      name: '@electron-forge/plugin-auto-unpack-natives',
      config: {},
    },
    new FusesPlugin({
      version: FuseVersion.V1,
      [FuseV1Options.RunAsNode]: false,
      [FuseV1Options.EnableCookieEncryption]: true,
      [FuseV1Options.EnableNodeOptionsEnvironmentVariable]: false,
      [FuseV1Options.EnableNodeCliInspectArguments]: false,
      [FuseV1Options.EnableEmbeddedAsarIntegrityValidation]: true,
      // 注:若调用EXE时出现权限或路径问题,可暂时将此选项改为false测试
      [FuseV1Options.OnlyLoadAppFromAsar]: true,
    }),
  ],
};

3. 修正EXE调用路径

打包后,EXE文件会被放到安装目录/resources/win下,代码里要动态获取资源路径,避免硬编码:

const { app } = require('electron');
const path = require('path');
const { spawn } = require('child_process');

// 获取打包后的resources目录绝对路径
const resourcesPath = app.getPath('resources');
// 拼接目标EXE的完整路径
const exePath = path.join(resourcesPath, 'win', '你的EXE文件名.exe');

// 调用外部EXE
spawn(exePath, [], {
  stdio: 'inherit'
});

验证打包结果

重新执行npm run package或npm run make,安装后查看安装目录/resources,会看到win文件夹(内含你的EXE)和app.asar,此时EXE已不在asar包内。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.25 11:07:08