electron-userland / electron-builder

A complete solution to package and build a ready for distribution Electron app with “auto update” support out of the box
https://www.electron.build
MIT License
13.57k stars 1.73k forks source link

Building large electron app >= 4.2Gib #8396

Closed Bug-Reaper closed 1 month ago

Bug-Reaper commented 1 month ago

I want to build a large electron app and support auto-updates. I know it is possible to create a valid DMG build as I have previously done so via electron-forge however forge has some undesirable other aspects and is "lightly maintained" according to the current team so I'd prefer to use electron-builder.

My app is large as it contains many 3D assets, etc so looking for clarity on this hardcoded asar size check?

Error Message:

• downloaded      url=https://github.com/electron/electron/releases/download/v29.4.5/electron-v29.4.5-darwin-arm64.zip duration=10.492s
  ⨯ /Users/llama/Sorcery/releaseday/soundsafari/out/make/SoundSafari ver(0.0.0).dmg: file size cannot be larger than 4.2GB  failedTask=build stackTrace=Error: /Users/llama/Sorcery/releaseday/soundsafari/out/make/SoundSafari ver(0.0.0).dmg: file size cannot be larger than 4.2GB
    at AsarFilesystem.addFileNode (/Users/llama/Sorcery/releaseday/soundsafari/node_modules/app-builder-lib/src/asar/asar.ts:87:13)
    at AsarPackager.createPackageFromFiles (/Users/llama/Sorcery/releaseday/soundsafari/node_modules/app-builder-lib/src/asar/asarUtil.ts:124:15)
    at runMicrotasks (<anonymous>)
    at processTicksAndRejections (node:internal/process/task_queues:96:5)
    at AsarPackager.pack (/Users/llama/Sorcery/releaseday/soundsafari/node_modules/app-builder-lib/src/asar/asarUtil.ts:42:41)
    at /Users/llama/Sorcery/releaseday/soundsafari/node_modules/app-builder-lib/src/platformPackager.ts:429:11
    at async Promise.all (index 0)
    at AsyncTaskManager.awaitTasks (/Users/llama/Sorcery/releaseday/soundsafari/node_modules/builder-util/src/asyncTaskManager.ts:65:25)
    at MacPackager.doPack (/Users/llama/Sorcery/releaseday/soundsafari/node_modules/app-builder-lib/src/platformPackager.ts:283:5)
    at MacPackager.pack (/Users/llama/Sorcery/releaseday/soundsafari/node_modules/app-builder-lib/src/macPackager.ts:198:9)
    at Packager.doBuild (/Users/llama/Sorcery/releaseday/soundsafari/node_modules/app-builder-lib/src/packager.ts:445:9)
    at executeFinally (/Users/llama/Sorcery/releaseday/soundsafari/node_modules/builder-util/src/promise.ts:12:14)
    at Packager._build (/Users/llama/Sorcery/releaseday/soundsafari/node_modules/app-builder-lib/src/packager.ts:379:31)
    at Packager.build (/Users/llama/Sorcery/releaseday/soundsafari/node_modules/app-builder-lib/src/packager.ts:340:12)
    at executeFinally (/Users/llama/Sorcery/releaseday/soundsafari/node_modules/builder-util/src/promise.ts:12:14)
beyondkmp commented 1 month ago

@Bug-Reaper
https://github.com/electron/asar/blob/a61839f83ef406fd3e160308e1902894aefdea5a/lib/filesystem.js#L87

Asar indeed has size limitations. You can place these 3D assets in a resource folder or another directory. It will be a bit more cumbersome to access them, as you will need to modify the reading path.

Bug-Reaper commented 1 month ago

Ahh yes the extraFiles is kinda cumbersome to access but I've used it before. Did not realize ASAR had such restrictive max-size requirements. Thanks @beyondkmp !

I have a sneaking suspicion that I may encounter some trouble with my windows NSIS installer as Microsoft has some ancient max-size installer requirements but I'll start a separate issue if I bump into that.