Desktop App Export
Export your interactive story as a standalone desktop game for Windows, macOS or Linux. No installer, no external services, ready to run.
What is Desktop App Export?
Desktop App is an export format introduced in StoryFlow Editor 1.5.2. It takes your project and produces a real desktop game: the editor wraps its own Electron runtime around the same story runtime used by HTML export, then packages everything into a portable artifact for your operating system. Because the underlying runtime is identical, your exported game plays exactly like it does in HTML export and in Play in Editor.
What's Included in a Desktop Export:
- Native App Shell: A windowed or fullscreen desktop application with your project's name and icon
- Complete Story Runtime: The same engine that powers HTML export, embedded inside the app
- All Scripts and Assets: Every script, variable, character, image and audio file your story uses
- Launch Settings: Fullscreen, window size and resize behavior baked in from project settings
Perfect For
- Shipping your story as a real game on itch.io or Steam-style storefronts
- Distributing to players who expect a downloadable executable
- Offline play without a browser
- Game jams where a native build feels more polished
- Kiosk or exhibition setups that launch straight into fullscreen
Builds for Your Current OS Only
The editor builds for the operating system it is running on. Exporting a Windows app requires Windows and likewise for macOS and Linux. The export menu marks your current OS on the Desktop App row so you always know what you are about to produce. Cross-platform export is on the roadmap.
Platform Outputs
Desktop exports are written to a desktop/ folder inside your project directory. The produced artifact differs per platform:
| Platform | Output | How Players Run It |
|---|---|---|
| Windows | Plain folder with a renamed .exe plus support files | Double-click the executable, no installer |
| macOS | Self-contained .app bundle, ad-hoc signed | Open the app (right-click Open on first launch) |
| Linux | Single .AppImage file | Run the AppImage (chmod +x may be needed) |
Windows
Windows builds ship as a plain folder named after your project, containing a renamed executable plus its support files. There is no installer and no self-extracting archive. Players run the .exe directly, and you can zip the folder to distribute it.
YourProject/
└── desktop/
└── My Story/
├── My Story.exe (run this)
└── ... (support files) macOS
macOS builds produce a single self-contained .app bundle. The bundle is ad-hoc signed rather than notarized with an Apple developer certificate, so the first launch shows a one-time security prompt about an unidentified developer. The standard workaround applies: right-click (or Control-click) the app and choose Open, then confirm. After that, the app opens normally.
YourProject/
└── desktop/
└── My Story.app (run this) Linux
Linux builds produce a single portable .AppImage file that runs on most modern distributions without installation. Depending on how the file is transferred, you may need to mark it executable first:
chmod +x "My Story.AppImage"
./"My Story.AppImage" How to Export
Export Steps:
- Open your project in StoryFlow Editor
- Ensure you've set a Startup Script via the menu next to the Play button (required for export)
- Optionally adjust window behavior under Launch Settings
- Click the dropdown arrow on the Export split button in the top-right corner of the editor
- Select Desktop App as the export format (the row shows a glyph marking your current OS)
- Click the main "Export" button
- The editor automatically saves all changed files before exporting
- When complete, click "Show in Folder" in the success toast to reveal the produced executable itself
Output Location
Desktop exports go to the desktop/ folder inside your project directory, separate from the build/ folder used by HTML and JSON exports. Re-exporting overwrites the previous desktop build for the same project name.
Launch Settings
How the exported game launches is configured per project under Project Settings → Export → Desktop App:
| Setting | Default | Description |
|---|---|---|
| Fullscreen | On | Launch the exported game in fullscreen, covering the whole screen |
| Window width | 1280 | Window width in pixels when not fullscreen (clamped to 320 through 15360) |
| Window height | 720 | Window height in pixels when not fullscreen (clamped to 320 through 15360) |
| Resizable window | On | Allow the player to resize the window in windowed mode |
| Allow F11 fullscreen toggle | Off | Let players switch in and out of fullscreen with the F11 key |
Sizing Settings Follow Fullscreen
Window width, height and resizability only apply in windowed mode, so they are disabled in the settings panel while Fullscreen is on. Turn Fullscreen off to edit them.
App Icon
The project icon you set under Project Settings → General becomes the icon of the exported app. The editor converts it to the formats each platform needs (.ico on Windows, .icns on macOS) itself, in-process and completely offline. The only bundled tool involved is rcedit.exe, which stamps the finished .ico onto the Windows executable. No network access or external services are involved.
No Icon Set?
If your project has no icon, or the icon file is missing, the export falls back to the default StoryFlow icon. The export never fails over an icon problem.
Runtime Behavior
The exported app wraps the editor's own Electron runtime around the same story runtime used by HTML export. Dialogue, options, branching, variables, characters, images and audio all behave exactly as they do in HTML export and in play-in-editor, so anything you test in the editor carries over unchanged.
There is one desktop-specific behavior: reaching the story's final END node closes the app. "Final" means an END node at the top level of your story, with no calling script left to return to. An END node inside a script invoked by a Run Script node still returns to the caller as usual, so modular stories work the same as everywhere else. Only when the call stack is empty does the app exit, giving a finished story a clean ending.
Troubleshooting
| Problem | Solution |
|---|---|
| Export fails with a startup script error | Set a Startup Script via the menu next to the Play button, then export again |
| Export on Windows asks you to close the running game | A previously exported build is still running and locking its files. Close the exported game, then export again |
| macOS blocks the app on first launch | Right-click the .app and choose Open. This one-time prompt appears because the bundle is ad-hoc signed |
| AppImage won't start on Linux | Mark the file executable with chmod +x and run it from a local filesystem |
| Need a build for another OS | Run StoryFlow Editor on that OS and export there. Cross-platform export is planned |
Next Steps
Prefer a build that runs in the browser? See HTML Export. Integrating with a game engine instead? Head to JSON Export and Game Engine Integration.