Skip to content

Bug: mergeASARs is changing file permissions in macOS MAS #135

@ollm

Description

@ollm

@electron/universal doesn't maintain all file permissions when merging app-x64.asar.unpacked and app-arm64.asar.unpacked to app.asar.unpacked (In my case used via electron-builder)

Related: electron-userland/electron-builder#8943

Test case repo: https://github.com/ollm/electron-builder-permissions-bug

mergeASARs: true

npm run build-mac-store
> electron-builder-permissions-bug@1.0.0 build-mac-store
> electron-builder --universal --mac mas && npm run postbuild
  • electron-builder  version=26.0.14 os=23.5.0
  • loaded configuration  file=package.json ("build" field)
  • description is missed in the package.json  appPackageFile=/Users/llopart/Documents/github/electron-builder-permissions-bug/package.json
  • writing effective config  file=dist/builder-effective-config.yaml
  • executing @electron/rebuild  electronVersion=36.1.0 arch=x64 buildFromSource=false appDir=./
  • installing native dependencies  arch=x64
  • completed installing native dependencies
  • packaging       platform=mas arch=x64 electron=36.1.0 appOutDir=dist/mas-universal-x64-temp
  • default Electron icon is used  reason=application icon is not set
  • executing @electron/rebuild  electronVersion=36.1.0 arch=arm64 buildFromSource=false appDir=./
  • installing native dependencies  arch=arm64
  • completed installing native dependencies
  • packaging       platform=mas arch=arm64 electron=36.1.0 appOutDir=dist/mas-universal-arm64-temp
  • packaging       platform=mas arch=universal electron=36.1.0 appOutDir=dist/mas-universal
  • signing         file=dist/mas-universal/electron-builder-permissions-bug.app platform=darwin type=distribution identityName=Developer ID Application: Oleguer Llopart (XXXXXXXXX) identityHash=XXXXXXXXXXXXXXXXXXXXXXXXXXX provisioningProfile=none
  • skipped macOS notarization  reason=`notarize` options were unable to be generated
  • signing         file=dist/mas-universal/electron-builder-permissions-bug.app platform=mas type=distribution identityName=Apple Distribution: Oleguer Llopart (XXXXXXXXX) identityHash=XXXXXXXXXXXXXXXXXXXXXXXXXXX provisioningProfile=none
> electron-builder-permissions-bug@1.0.0 postbuild
> node scripts/test-postbuild.js
Original x64                               | F:OK | R:OK | W:OK | X:OK | Exists:OK | -rwxr-xr-x
Original arm64                             | F:OK | R:OK | W:OK | X:OK | Exists:OK | -rwxr-xr-x
Darwin Mas x64 (app.asar.unpacked)         | F:OK | R:OK | W:OK | X:OK | Exists:OK | -rwxr-xr-x
Darwin Mas arm64 (app.asar.unpacked)       | F:OK | R:OK | W:OK | X:-- | Exists:OK | -rw-r--r--
Darwin Mas x64 (app-x64.asar.unpacked)     | F:-- | R:-- | W:-- | X:-- | Exists:-- | 
Darwin Mas arm64 (app-arm64.asar.unpacked) | F:-- | R:-- | W:-- | X:-- | Exists:-- | 

mergeASARs: false

npm run build-mac-store
> electron-builder-permissions-bug@1.0.0 build-mac-store
> electron-builder --universal --mac mas && npm run postbuild
  • electron-builder  version=26.0.14 os=23.5.0
  • loaded configuration  file=package.json ("build" field)
  • description is missed in the package.json  appPackageFile=/Users/llopart/Documents/github/electron-builder-permissions-bug/package.json
  • writing effective config  file=dist/builder-effective-config.yaml
  • executing @electron/rebuild  electronVersion=36.1.0 arch=x64 buildFromSource=false appDir=./
  • installing native dependencies  arch=x64
  • completed installing native dependencies
  • packaging       platform=mas arch=x64 electron=36.1.0 appOutDir=dist/mas-universal-x64-temp
  • default Electron icon is used  reason=application icon is not set
  • executing @electron/rebuild  electronVersion=36.1.0 arch=arm64 buildFromSource=false appDir=./
  • installing native dependencies  arch=arm64
  • completed installing native dependencies
  • packaging       platform=mas arch=arm64 electron=36.1.0 appOutDir=dist/mas-universal-arm64-temp
  • packaging       platform=mas arch=universal electron=36.1.0 appOutDir=dist/mas-universal
  • signing         file=dist/mas-universal/electron-builder-permissions-bug.app platform=darwin type=distribution identityName=Developer ID Application: Oleguer Llopart (XXXXXXXXX) identityHash=XXXXXXXXXXXXXXXXXXXXXXXXXXX provisioningProfile=none
  • skipped macOS notarization  reason=`notarize` options were unable to be generated
  • signing         file=dist/mas-universal/electron-builder-permissions-bug.app platform=mas type=distribution identityName=Apple Distribution: Oleguer Llopart (XXXXXXXXX) identityHash=XXXXXXXXXXXXXXXXXXXXXXXXXXX provisioningProfile=none
> electron-builder-permissions-bug@1.0.0 postbuild
> node scripts/test-postbuild.js
Original x64                               | F:OK | R:OK | W:OK | X:OK | Exists:OK | -rwxr-xr-x
Original arm64                             | F:OK | R:OK | W:OK | X:OK | Exists:OK | -rwxr-xr-x
Darwin Mas x64 (app.asar.unpacked)         | F:-- | R:-- | W:-- | X:-- | Exists:-- | 
Darwin Mas arm64 (app.asar.unpacked)       | F:-- | R:-- | W:-- | X:-- | Exists:-- | 
Darwin Mas x64 (app-x64.asar.unpacked)     | F:OK | R:OK | W:OK | X:OK | Exists:OK | -rwxr-xr-x
Darwin Mas arm64 (app-arm64.asar.unpacked) | F:OK | R:OK | W:OK | X:OK | Exists:OK | -rwxr-xr-x

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type
    No fields configured for issues without a type.

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions