@electron-forge/maker-dmg配置DMG图标位置时找不到.app文件如何解决
问题原因
你遇到的路径报错核心原因是@electron-forge/maker-dmg执行时的临时工作目录和你的.app构建输出目录不是同一个位置,直接写相对路径Gallery.app会被定位到临时目录下,自然找不到构建产物。
而你手动挂载DMG后用到的/Volumes/Gallery/Gallery.app路径仅在DMG生成挂载后才存在,构建阶段DMG还未生成,该路径必然无效。
可行解决方案
推荐使用函数式动态配置获取.app的真实输出路径,Electron Forge 的 maker 配置支持传入函数,会自动注入包含构建输出路径的参数,无需你手动拼接固定路径,兼容多架构打包场景:
const path = require('path'); // 放到你的forge配置的makers数组中 { name: "@electron-forge/maker-dmg", config: (makerOptions) => ({ title: "Gallery", background: "src/assets/installer-assets/installBackground.png", format: "ULFO", icon: "src/assets/installer-assets/brand-icon.icns", contents: [ { x: 192, y: 344, type: "file", path: path.join(makerOptions.appDirectory, 'Gallery.app') }, { x: 428, y: 344, type: "link", path: "/Applications" } ] }) }
其中
makerOptions.appDirectory是Electron Forge构建完应用后,.app文件所在的目录,直接拼接你的应用名即可准确定位到构建产物。
注意事项
- 确保拼接的应用名和你package.json中配置的
productName完全一致,macOS文件系统大小写敏感,大小写错误也会触发找不到文件的报错 - 如果你是固定架构打包,也可以直接写死绝对路径,但函数式配置兼容性更高,无需修改就能适配arm64、x64等不同架构的构建输出
内容的提问来源于stack exchange,提问作者Jhonycage
相关产品推荐
相关产品推荐

