Version: 19.18.0
Target: linux squirrel
I am trying to build for Linux with -- linux configuration and I am using productName in package.json.
For a mac build, productName is picked up correctly for both artifacts (dmg and zip).
For linux name is being used. This causes an error.
I cannot use name for product name as my app is also a scoped npm package.
package.json example:
"scripts": {
build:mac: build --mac,
build:win: build --win,
build:linux: build --linux,
},
"version":"0.0.0",
"name": "@myscope/my-package-name",
"productName": "My Desktop App",
"build": {
"appId": ".....",
...
Error:
xorriso : FAILURE : Cannot acquire drive '.../repos/electron/myapp/build/@myscope/my-package-name-0.0.0-x86_64.AppImage'
xorriso : aborting : -abort_on 'FAILURE' encountered 'FAILURE'
at .../repos/electron/.../electron-builder-util/src/util.ts:67:16
I have a related issue for Windows Squirrel but that has a workaround (thanks to @develar for pointing it out):
https://github.com/electron-userland/electron-builder/issues/1879
Please use 19.22.0. Or just set linux.executableName.
@develar Thanks for the prompt reply.
Just for the record, I have tried 19.22.1 with or withoutlinux.executableName and it is still breaking.
Do you mean that this issue is still not solved for you?
Yes, I do
The correct option to set is linux.artifactName.
e.g. package.json
{
"name": "@my-scope/my-package"
...
"build": {
...
"linux": {
"artifactName": "my-package-${version}"
}
}
}
"artifactName": "${productName}"
works too..
But why is it using productName correctly for Mac and Windows but not for Linux? At least the AppImage should be named like the Mac artifact by default imho.
Documentation says artifactName is unused for .deb packages, so that's really not the answer.
We use artifactName and productName and still see that the installed binary is called after name field in package.json. Which is clearly not what documentation says.
Why does electron-builder bother? Just use productName and let folks specify executableName if they wish to change that.
At least the AppImage should be named like the Mac artifact by default imho.
When this functionality was written, it was not safe to use space in AppImage file name. https://github.com/electron-userland/electron-builder/issues/775#issuecomment-249429902
Ok, I will revisit rules and current behaviour.
Cross-referencing here:
https://github.com/electron-userland/electron-builder/issues/806#issuecomment-438155694
Please use the proper unchanged application names (including capitalization, if any) for AppImages like you do for macOS. Every time I see an application like e.g., RcloneTray spelled correctly (RcloneTray.dmg) for macOS but wrongly (rclonetray.AppImage) for Linux it reminds me that macOS still feels more polished to me.
Point in case:
https://github.com/dimitrov-adrian/RcloneTray/releases
20.37.0 released as pre-release.
Please reopen, this still seems not to be working:
https://github.com/tunepack/tunepack-desktop/issues/6#issuecomment-497230517
When
"name": "tunepack-desktop",
"productName": "Tunepack",
is set, then we currently get

Tunepack-1.0.6-x86_64.AppImage would be expected. In other words, the dmg and the AppImage should always use the same name.
@probonopd cannot reproduce. works for me. Problem here is that Github doesn't allow space for names, so, when AppImage is uploaded, name is changed. In electron-builder 21, artifact name pattern for AppImage will be changed to use - to separate name and version.
Thanks @develar - do you have any idea why given
we don't get Tunepack-1.0.6.x86_64.AppImage then?
@probonopd
Problem here is that Github doesn't allow space for names, so, when AppImage is uploaded, name is changed
^^^
In electron-builder 21 two changes were done:
- as for dmg instead of space.I don't see a space in "Tunepack"? Why is it preferring "tunepack-desktop" to "Tunepack" then?
@probonopd Filename in your local file system and on GitHub is different.