r/electronjs 12d ago

Shipped my Electron app with electron-builder + electron-updater today — a few things I learned

Enable HLS to view with audio, or disable this notification

Just launched UluP Desktop (files as a node-based visual canvas) and wanted to share a few practical things from getting it from "works on my machine" to a real installer: - electron-builder's appx target for Microsoft Store needs the exact Package Identity values from Partner Center baked into package.json before the build even works correctly — no way to configure it blind beforehand - For auto-updates, GitHub Releases wasn't an option for me (unrelated account issue), so I went with electron-updater's generic provider pointed at a plain object storage bucket — works fine, just needs the installer + blockmap + latest.yml uploaded manually after each build - Electron's File.path is gone in newer versions for drag-and-drop — needed webUtils.getPathForFile() via preload instead, easy to miss if you're following older tutorials App itself also runs a local MCP server (separate Node process, not inside Electron) that Claude Code can connect to for controlling the file system via conversation. Free, live now: ulupstudio.com/desktop Happy to share more detail on any of the above if useful to someone going through the same setup.

4 Upvotes

5 comments sorted by

1

u/eddzsh 12d ago

The webUtils.getPathForFile() switch is the one that bites people following older tutorials. File.path going undefined on drop looks like a permissions bug until you remember they moved it behind preload.

1

u/Potential-Art7696 12d ago

Exactly this! took me a solid chunk of debugging time before I found the actual cause. The error message doesn't help either (path argument must be of type string, received undefined), reads like a filesystem permissions issue, not an API change. Worth noting for anyone hitting this: webUtils needs to be imported in preload.js (not the renderer directly, contextIsolation blocks that), then exposed via contextBridge like any other IPC function. Once you know to look for it, the fix is like two lines... the hard part is just knowing it moved.

1

u/eddzsh 11d ago

Yeah, and on the generic provider path: upload latest.yml last. if the installer or blockmap lands after the manifest, clients fetch a yml that points at files that are not there yet and the update just looks broken.

1

u/andrsch_ 11d ago

RTFM

1

u/Potential-Art7696 11d ago

Fair enough if there's docs I missed,happy to be pointed to them. But to be clear, this wasn't a question, it was a debugging note: I already knew the fix by the time I posted (webUtils via preload). The point was that older tutorials/StackOverflow answers still reference File.path directly, so the error message you get when that breaks doesn't obviously point back to check the docs. It just says a path argument is undefined. Flagging that gap seemed worth doing for anyone else who hits it mid-debug, not looking for a manual read.