Description
The built-in update checker (updater.py / mainwindow.py) doesn't distinguish between installation sources on Windows. A user who installed via the Microsoft Store gets the exact same "new version available" popup as a portable/manual .exe user — including the same primary action, which opens the GitHub releases page in the browser (webbrowser.open(url)) and invites a manual download.
This is wrong for a Store install:
The Store already updates the app automatically in the background — the user doesn't need to (and shouldn't) do anything.
Directing a Store user to manually download and run a .exe risks mixing installation methods on the same machine.
Reported by a user on Facebook who was confused about why the update didn't just happen automatically.
Steps to Reproduce
There is currently only one installation-source special case in the update flow: AppImage on Linux (appimage.is_running_as_appimage() / is_appimage_integrated() in mainwindow.py's _on_update_available()), which swaps in an "Upgrade now" self-update button. There is no equivalent check for MSIX/Store on Windows, so those users fall through to the generic "Open releases page" branch.
Separately (not blocking this issue, just context): MSIX submission to Partner Center is currently a manual step per release, not automated in CI, so there can be a real gap between a GitHub tag/build existing and it actually being available in the Store. This is an argument for suppressing the notification entirely for MSIX builds, rather than just changing its wording.
Expected Behavior
Proposed fix
Mirror the existing AppImage pattern:
Add an is_running_as_msix() helper (Windows-only, no-op elsewhere) using the standard Desktop Bridge detection technique: ctypes.windll.kernel32.GetCurrentPackageFullName(...), which returns APPMODEL_ERROR_NO_PACKAGE when the process has no package identity.
In _check_update_background(): skip the automatic background check entirely when is_running_as_msix() is true — the Store already handles this silently.
In _check_update_manual() ("Check for updates" menu item): since the user actively clicked, don't silently no-op. Instead show a simple info message ("This installation updates automatically via the Microsoft Store") with no download button, instead of the generic dialog.
Scope
Windows-only change; no effect on portable .exe, Linux (AppImage), or macOS builds — those keep their current behavior.
Environment
No response
Description
The built-in update checker (updater.py / mainwindow.py) doesn't distinguish between installation sources on Windows. A user who installed via the Microsoft Store gets the exact same "new version available" popup as a portable/manual .exe user — including the same primary action, which opens the GitHub releases page in the browser (webbrowser.open(url)) and invites a manual download.
This is wrong for a Store install:
The Store already updates the app automatically in the background — the user doesn't need to (and shouldn't) do anything.
Directing a Store user to manually download and run a .exe risks mixing installation methods on the same machine.
Reported by a user on Facebook who was confused about why the update didn't just happen automatically.
Steps to Reproduce
There is currently only one installation-source special case in the update flow: AppImage on Linux (appimage.is_running_as_appimage() / is_appimage_integrated() in mainwindow.py's _on_update_available()), which swaps in an "Upgrade now" self-update button. There is no equivalent check for MSIX/Store on Windows, so those users fall through to the generic "Open releases page" branch.
Separately (not blocking this issue, just context): MSIX submission to Partner Center is currently a manual step per release, not automated in CI, so there can be a real gap between a GitHub tag/build existing and it actually being available in the Store. This is an argument for suppressing the notification entirely for MSIX builds, rather than just changing its wording.
Expected Behavior
Proposed fix
Mirror the existing AppImage pattern:
Add an is_running_as_msix() helper (Windows-only, no-op elsewhere) using the standard Desktop Bridge detection technique: ctypes.windll.kernel32.GetCurrentPackageFullName(...), which returns APPMODEL_ERROR_NO_PACKAGE when the process has no package identity.
In _check_update_background(): skip the automatic background check entirely when is_running_as_msix() is true — the Store already handles this silently.
In _check_update_manual() ("Check for updates" menu item): since the user actively clicked, don't silently no-op. Instead show a simple info message ("This installation updates automatically via the Microsoft Store") with no download button, instead of the generic dialog.
Scope
Windows-only change; no effect on portable .exe, Linux (AppImage), or macOS builds — those keep their current behavior.
Environment
No response