Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Erroneous "unable to copy, file is symlinked outside the package" assumption in electron builder 26.0.1 #8823

Open
lukas2 opened this issue Jan 30, 2025 · 6 comments

Comments

@lukas2
Copy link

lukas2 commented Jan 30, 2025

Hi guys, we are observing a problem with version 26.0.1 if used in conjunction with quasar 4, the following happens.

 App •  WAIT  • Bundling app with electron/builder...
  • electron-builder  version=26.0.1 os=24.2.0
  • writing effective config  file=dist/electron/Packaged/builder-effective-config.yaml
  • executing @electron/rebuild  electronVersion=34.0.1 arch=x64 buildFromSource=false appDir=dist/electron/UnPackaged
  • installing native dependencies  arch=x64
  • completed installing native dependencies
  • packaging       platform=darwin arch=x64 electron=34.0.1 appOutDir=dist/electron/Packaged/mac-universal-x64-temp
  ⨯ unable to copy, file is symlinked outside the package  source=dist/electron/UnPackaged/icons/icons/appx/Square44x44Logo.png realPathFile=customer/x/app-icons/appx/Square44x44Logo.png
  ⨯ unable to copy, file is symlinked outside the package  source=dist/electron/UnPackaged/icons/icons/appx/Square150x150Logo.png realPathFile=customer/x/app-icons/appx/Square150x150Logo.png

 App • ⚠️   electron/builder could not build

Error: Cannot cleanup: 

Error #1 --------------------------------------------------------------------------------
Error: Cannot copy file (Square44x44Logo.png) symlinked to file (Square44x44Logo.png) outside the package as that violates asar security integrity
    at writeFileOrProcessSymlink (/redactedPath/node_modules/app-builder-lib/src/asar/asarUtil.ts:126:15)
    at processTicksAndRejections (node:internal/process/task_queues:105:5)
    at async Promise.all (index 8)
    at AsyncTaskManager.awaitTasks (/redactedPath/node_modules/app-builder-lib/node_modules/builder-util/src/asyncTaskManager.ts:65:25)
    at AsarPackager.detectAndCopy (/redactedPath/node_modules/app-builder-lib/src/asar/asarUtil.ts:161:11)
    at AsarPackager.pack (/redactedPath/node_modules/app-builder-lib/src/asar/asarUtil.ts:48:44)
    at /redactedPath/node_modules/app-builder-lib/src/platformPackager.ts:554:11
    at async Promise.all (index 0)
    at AsyncTaskManager.awaitTasks (/redactedPath/node_modules/app-builder-lib/node_modules/builder-util/src/asyncTaskManager.ts:65:25)
    at MacPackager.doPack (/redactedPath/node_modules/app-builder-lib/src/platformPackager.ts:324:5)
    at MacPackager.doPack (/redactedPath/node_modules/app-builder-lib/src/macPackager.ts:129:9)
    at MacPackager.pack (/redactedPath/node_modules/app-builder-lib/src/macPackager.ts:219:9)
    at Packager.doBuild (/redactedPath/node_modules/app-builder-lib/src/packager.ts:459:9)
    at executeFinally (/redactedPath/node_modules/app-builder-lib/node_modules/builder-util/src/promise.ts:12:14)
    at Packager.build (/redactedPath/node_modules/app-builder-lib/src/packager.ts:393:31)
    at executeFinally (/redactedPath/node_modules/app-builder-lib/node_modules/builder-util/src/promise.ts:12:14)

Error #2 --------------------------------------------------------------------------------
Error: Cannot copy file (Square150x150Logo.png) symlinked to file (Square150x150Logo.png) outside the package as that violates asar security integrity
    at writeFileOrProcessSymlink (/redactedPath/node_modules/app-builder-lib/src/asar/asarUtil.ts:126:15)
    at processTicksAndRejections (node:internal/process/task_queues:105:5)
    at async Promise.all (index 7)
    at AsyncTaskManager.awaitTasks (/redactedPath/node_modules/app-builder-lib/node_modules/builder-util/src/asyncTaskManager.ts:65:25)
    at AsarPackager.detectAndCopy (/redactedPath/node_modules/app-builder-lib/src/asar/asarUtil.ts:161:11)
    at AsarPackager.pack (/redactedPath/node_modules/app-builder-lib/src/asar/asarUtil.ts:48:44)
    at /redactedPath/node_modules/app-builder-lib/src/platformPackager.ts:554:11
    at async Promise.all (index 0)
    at AsyncTaskManager.awaitTasks (/redactedPath/node_modules/app-builder-lib/node_modules/builder-util/src/asyncTaskManager.ts:65:25)
    at MacPackager.doPack (/redactedPath/node_modules/app-builder-lib/src/platformPackager.ts:324:5)
    at MacPackager.doPack (/redactedPath/node_modules/app-builder-lib/src/macPackager.ts:129:9)
    at MacPackager.pack (/redactedPath/node_modules/app-builder-lib/src/macPackager.ts:219:9)
    at Packager.doBuild (/redactedPath/node_modules/app-builder-lib/src/packager.ts:459:9)
    at executeFinally (/redactedPath/node_modules/app-builder-lib/node_modules/builder-util/src/promise.ts:12:14)
    at Packager.build (/redactedPath/node_modules/app-builder-lib/src/packager.ts:393:31)
    at executeFinally (/redactedPath/node_modules/app-builder-lib/node_modules/builder-util/src/promise.ts:12:14)

undefined

 App • ⚠️   FAIL  App build failed (check the log above)

Looks like some faulty assumption regarding symlinks? The images are not symlinked:

% ls -la
total 112
drwxr-xr-x  6 x10  staff    192 Aug 27 13:21 .
drwxr-xr-x  6 x10  staff    192 Aug 27 13:21 ..
-rw-r--r--  1 x10  staff  17813 Aug 27 13:21 Square150x150Logo.png
-rw-r--r--  1 x10  staff   3122 Aug 27 13:21 Square44x44Logo.png
-rw-r--r--  1 x10  staff   3829 Aug 27 13:21 StoreLogo.png
-rw-r--r--@ 1 x10  staff  26776 Aug 27 13:21 Wide310x150Logo.png

Interestingly, with older quasar versions it works without a problem.

These package.json entries cause it to not work:

    "@quasar/extras": "1.16.16",
    "quasar": "2.17.7",
    "@quasar/app-webpack": "^4.0.8",
    "@quasar/quasar-app-extension-testing-unit-jest": "^3.0.3",

And these still work:

    "@quasar/extras": "1.16.15",
    "quasar": "2.17.5",
    "@quasar/app-webpack": "^3.15.1",
    "@quasar/quasar-app-extension-testing-unit-jest": "^3.0.3",
@mmaietta
Copy link
Collaborator

mmaietta commented Jan 30, 2025

Looks like "@quasar/app-webpack": "^4.0.8", is doing something weird with symlinks.
Looking at this

source=dist/electron/UnPackaged/icons/icons/appx/Square44x44Logo.png realPathFile=customer/x/app-icons/appx/Square44x44Logo.png

Where is customer/x/app-icons located? Is this a monorepo and still within project root?

Might be best to provide a minimum repro repo to help with debugging this. That way I can create a unit test around it if possible

@lukas2
Copy link
Author

lukas2 commented Jan 30, 2025

Yes, it's a subfolder in the main folder where package.json, quasar config file etc. are located.

@mmaietta
Copy link
Collaborator

mmaietta commented Jan 30, 2025

Re:

Looks like some faulty assumption regarding symlinks? The images are not symlinked:

Looks like @quasar/app-webpack is doing the symlink itself.

Can you try this suggestion from quasarframework/quasar#15654

viteConf.resolve.preserveSymlinks = true

@lukas2
Copy link
Author

lukas2 commented Jan 31, 2025

Thanks for the idea, but I don't think we even use vite. I might be wrong, but it's either vite or webpack, not both together.

To double check I created a vite config file, but that wasn't read.

@lukas2
Copy link
Author

lukas2 commented Jan 31, 2025

I tried to use extraResources and files like this:

      extraResources: [
        {
          "from": "customer/",
          "to": "customer/",
          "filter": ["**/app-icons/appx/*.png", "**/public/mio-sdk/*.svg"]
        }
      ],
      files: [
          "**/*",
          "!customer/**/app-icons/appx/*.png",
          "!customer/**/public/mio-sdk/*.svg",
          ... other rules here ...
      ]

but to no avail.

I also deleted the culprit files, but then just other ones cause it to fail:

Error #1 --------------------------------------------------------------------------------
Error: Cannot copy file (icon.icns) symlinked to file (icon.icns) outside the package as that violates asar security integrity
    at writeFileOrProcessSymlink (/redactedPath/node_modules/app-builder-lib/src/asar/asarUtil.ts:126:15)
    at processTicksAndRejections (node:internal/process/task_queues:105:5)
    at async Promise.all (index 7)
    at AsyncTaskManager.awaitTasks (/redactedPath/node_modules/app-builder-lib/node_modules/builder-util/src/asyncTaskManager.ts:65:25)
    at AsarPackager.detectAndCopy (/redactedPath/node_modules/app-builder-lib/src/asar/asarUtil.ts:161:11)
    at AsarPackager.pack (/redactedPath/node_modules/app-builder-lib/src/asar/asarUtil.ts:48:44)
    at /redactedPath/node_modules/app-builder-lib/src/platformPackager.ts:554:11
    at async Promise.all (index 0)
    at AsyncTaskManager.awaitTasks (/redactedPath/node_modules/app-builder-lib/node_modules/builder-util/src/asyncTaskManager.ts:65:25)
    at MacPackager.doPack (/redactedPath/node_modules/app-builder-lib/src/platformPackager.ts:324:5)
    at MacPackager.doPack (/redactedPath/node_modules/app-builder-lib/src/macPackager.ts:129:9)
    at MacPackager.pack (/redactedPath/node_modules/app-builder-lib/src/macPackager.ts:219:9)
    at Packager.doBuild (/redactedPath/node_modules/app-builder-lib/src/packager.ts:459:9)
    at executeFinally (/redactedPath/node_modules/app-builder-lib/node_modules/builder-util/src/promise.ts:12:14)
    at Packager.build (/redactedPath/node_modules/app-builder-lib/src/packager.ts:393:31)
    at executeFinally (/redactedPath/node_modules/app-builder-lib/node_modules/builder-util/src/promise.ts:12:14)

Error #2 --------------------------------------------------------------------------------
Error: Cannot copy file (icon.ico) symlinked to file (icon.ico) outside the package as that violates asar security integrity
    at writeFileOrProcessSymlink (/redactedPath/node_modules/app-builder-lib/src/asar/asarUtil.ts:126:15)
    at processTicksAndRejections (node:internal/process/task_queues:105:5)
    at async Promise.all (index 8)
    at AsyncTaskManager.awaitTasks (/redactedPath/node_modules/app-builder-lib/node_modules/builder-util/src/asyncTaskManager.ts:65:25)
    at AsarPackager.detectAndCopy (/redactedPath/node_modules/app-builder-lib/src/asar/asarUtil.ts:161:11)
    at AsarPackager.pack (/redactedPath/node_modules/app-builder-lib/src/asar/asarUtil.ts:48:44)
    at /redactedPath/node_modules/app-builder-lib/src/platformPackager.ts:554:11
    at async Promise.all (index 0)
    at AsyncTaskManager.awaitTasks (/redactedPath/node_modules/app-builder-lib/node_modules/builder-util/src/asyncTaskManager.ts:65:25)
    at MacPackager.doPack (/redactedPath/node_modules/app-builder-lib/src/platformPackager.ts:324:5)
    at MacPackager.doPack (/redactedPath/node_modules/app-builder-lib/src/macPackager.ts:129:9)
    at MacPackager.pack (/redactedPath/node_modules/app-builder-lib/src/macPackager.ts:219:9)
    at Packager.doBuild (/redactedPath/node_modules/app-builder-lib/src/packager.ts:459:9)
    at executeFinally (/redactedPath/node_modules/app-builder-lib/node_modules/builder-util/src/promise.ts:12:14)
    at Packager.build (/redactedPath/node_modules/app-builder-lib/src/packager.ts:393:31)
    at executeFinally (/redactedPath/node_modules/app-builder-lib/node_modules/builder-util/src/promise.ts:12:14)

@mmaietta
Copy link
Collaborator

Might be best to provide a minimum repro repo to help with debugging this. That way I can create a unit test around it if possible

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

2 participants