maker-dmg fails when run in parallel
Pre-flight checklist
- [X] I have read the contribution documentation for this project.
- [X] I agree to follow the code of conduct that this project uses.
- [X] I have searched the issue tracker for a bug that matches the one I want to file, without success.
Electron Forge version
7.3.0
Electron version
N/A
Operating system
macOS 14.3
Last known working Electron Forge version
It broke in 7.0.0
Expected behavior
Expect electron-forge make -- --arch=x64,arm64 to build both x64 and arm64 versions of the app.
Actual behavior
Both x64 and arm64 make steps fail.
with the error Target already exists
node_modules/appdmg/lib/appdmg.js:81:53
Steps to reproduce
electron-forge make -- --arch=x64,arm64
{
name: "@electron-forge/maker-dmg",
config: {
debug: true,
overwrite: true,
},
platforms: ["darwin"],
}
Additional information
For context it'll be helpful to read through this PR that changed how makers are run. https://github.com/electron/forge/pull/3363
I dug into this a bit.
the specific target error comes from appdmg.js:81:53
On a run through with just one target that succeeded:
console.log("Target step started", global.target); at the start of that shows
[REDACTED]/desktop/out/make/OurAppName.dmg for both of the builds that are happening simultaneously
I took a look at the electron code that calls into that @electron-forge/maker-dmg/src/MakerDMG.ts
output on line 21 is the one used as the target.
forgeDefaultOutPath is fine though. For example:
[REDACTED]/desktop/out/make/OurAppName-1.2.3-arm64.dmg
dmgConfig is
overwrite = true
name = "OurAppName"
debug = true
icon = "assets/resources/icon.icns"
background = "assets/resources/installBackground.png"
appPath = "[REDACTED]/desktop/out/OurAppName-darwin-arm64/OurAppName.app"
out = "[REDACTED]/desktop/out/make"
Execution goes into the conditional (if !this.config.name)
I think this could probably be fixed by adding the targetArch to the outPath.
I plan on submitting a PR to fix this soon.
I have the same issue when building to arm and x64 using electron-forge make --arch=x64,arm64
Also in MakerSquirrel MakerAppImage
with
new MakerSquirrel((arch) => ({
name: `Follow-${arch}`,
setupIcon: "resources/icon.ico",
})),
new MakerAppImage((arch) => ({
options: {
name: `Follow-${arch}`,
icon: "resources/icon.png",
mimeType: ["x-scheme-handler/follow"],
},
})),
I have the same issue when building to arm and x64 using
electron-forge make --arch=x64,arm64
Yeah me too. Is there any solution about that?
same here, any suggestion?
I use the code in this PR via this npm package:
"devDependencies": {
"@electron-forge/maker-dmg": "https://registry.npmjs.org/@fellow/maker-dmg/-/maker-dmg-7.4.0.tgz",
}
This is my workaround: I just use a different name for the dmg maker on different archs:
new MakerDMG((arch) => ({
name: `<app_name> Installer (${arch})`,
})),