Electron-builder: Linux build is not using productName

Created on 4 Aug 2017  Â·  18Comments  Â·  Source: electron-userland/electron-builder

  • 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

bug

All 18 comments

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

https://github.com/tunepack/tunepack-desktop/blob/6d4982f1368b1567a24a944dc4a2b220f8a1e2be/package.json#L2-L3

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:

  1. use - as for dmg instead of space.
  2. even if space will be used in artifact pattern, still, product name will be preferred instead of name (i.e. before downgrade to use safe artifact name, now first we try to replace all spaces to dash — if after that name is safe for Github, then it is used).

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.

Was this page helpful?
0 / 5 - 0 ratings

Related issues

AidanNichol picture AidanNichol  Â·  3Comments

philcockfield picture philcockfield  Â·  3Comments

JohnWeisz picture JohnWeisz  Â·  3Comments

popod picture popod  Â·  3Comments

alexstrat picture alexstrat  Â·  3Comments