fix(flet pack): Windows taskbar shortcut pointing to wrong .exe - #6403
Merged
Conversation
flet pack): Windows taskbar shortcut pointing to wrong .exe
1 task
Contributor
There was a problem hiding this comment.
Pull request overview
This PR improves flet pack-produced desktop apps by (1) ensuring the bundled Flutter client archive is actually discoverable at runtime (avoiding first-run downloads), and (2) fixing Windows taskbar pin/shortcut behavior by setting an AppUserModelID for the spawned flet.exe process (resolving #5151).
Changes:
- Expose and use a shared artifact naming function so
flet packcan bundle the exact archive nameensure_client_cached()expects. - Re-compress the patched client directory into a platform-appropriate archive during
flet pack(Windows.zip, Linux.tar.gz; macOS already repacks). - Add Windows AppUserModelID plumbing: Python sets
FLET_APP_USER_MODEL_ID, and the Windows runner reads it and callsSetCurrentProcessExplicitAppUserModelID().
Reviewed changes
Copilot reviewed 3 out of 3 changed files in this pull request and generated 1 comment.
| File | Description |
|---|---|
| sdk/python/packages/flet-desktop/src/flet_desktop/init.py | Adds get_artifact_filename() and sets FLET_APP_USER_MODEL_ID in the child process env on Windows. |
| sdk/python/packages/flet-cli/src/flet_cli/commands/pack.py | Re-compresses the copied flet/ client directory into the runtime-expected archive format/name during packaging. |
| client/windows/runner/main.cpp | Reads FLET_APP_USER_MODEL_ID and sets the process AppUserModelID to fix taskbar association/pinning. |
💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.
Contributor
|
Add changelog record. |
Deploying flet-examples with
|
| Latest commit: |
00cde42
|
| Status: | ✅ Deploy successful! |
| Preview URL: | https://434c6a50.flet-examples.pages.dev |
| Branch Preview URL: | https://fix-flet-pack-4n4s.flet-examples.pages.dev |
Windows AUMIDs must be <=128 chars and contain no spaces, so passing os.path.abspath(sys.executable) verbatim would silently fail with E_INVALIDARG on paths like "C:\Program Files\...". Derive a stable identifier from the sanitized exe name plus a SHA1 of the absolute path for per-install uniqueness.
# Conflicts: # CHANGELOG.md
FeodorFitsner
approved these changes
Apr 21, 2026
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Taskbar fix: When a packed Flet app runs on Windows, it spawns

flet.exe(the Flutter client) as a child process. Windows associates the taskbar entry with the child's executable path (~/.flet/client/.../flet.exe), so pinning the app creates a shortcut to the bare client. The fix sets a WindowsAppUserModelIDonflet.exevia theFLET_APP_USER_MODEL_IDenvironment variable, so Windows associates the taskbar entry with the parent application instead. Resolves Blank White Screen When Launching Flet App from Taskbar After Initial Launch #5151.Pack bundling fix:
flet packwas copying the extracted client files into the PyInstaller bundle, but at runtimeensure_client_cached()looks for an archive (flet-windows.zip/flet-linux-*.tar.gz). The archive was never found, so the app always fell back to downloading from GitHub on first launch — wasteful for released versions, broken for unreleased ones. macOS already re-packed correctly; Windows and Linux now do the same.Testable CI artifacts: https://github.com/flet-dev/flet/actions/runs/24401327648
Summary by Sourcery
Ensure packed Flet desktop apps bundle and launch the correct client archives across platforms and integrate with Windows taskbar pinning behavior.
Bug Fixes:
Enhancements: