Skip to content

Windows Store Python support#65

Merged
shreyasmene06 merged 20 commits intoshreyasmene06:mainfrom
ShaikhWarsi:main
Feb 7, 2026
Merged

Windows Store Python support#65
shreyasmene06 merged 20 commits intoshreyasmene06:mainfrom
ShaikhWarsi:main

Conversation

@ShaikhWarsi
Copy link
Contributor

Fixes #57

Key Changes

  • New Installer Plugin : Added MicrosoftStoreInstaller in standard.py which uses winget to handle installations and uninstallations from the Microsoft Store.
  • Improved Detection : Updated version.py to identify Store versions by parsing py --list output and scanning %LOCALAPPDATA%\Microsoft\WindowsApps .
  • TUI Enhancements : Added a "Store" label in tui.py to clearly distinguish Store-installed versions from standard ones in the UI.
  • CLI Integration : Enabled the --installer store flag for manual control over Store installations via the CLI

@ShaikhWarsi
Copy link
Contributor Author

Please go through the changes and if there is any issue let me know otherwise please merge it whenever you can so that I can raise new pr for the final issue

Copy link
Owner

@shreyasmene06 shreyasmene06 left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Good feature implementation for Microsoft Store Python support! The detection logic and TUI integration look solid. However, there's a critical issue that prevents the plugin from working.

Critical Bug: Plugin Not Registered

The MicrosoftStoreInstaller class is created in standard.py, but it's never registered in plugins/manager.py. The plugin will not be loaded or available.
You need to update plugins/manager.py:
1. Add the import:

from .standard import (
    AptInstaller,
    AsdfInstaller,
    BrewInstaller,
    CondaInstaller,
    MicrosoftStoreInstaller,  # <-- Add this
    MiseInstaller,
    PyenvInstaller,
    SourceInstaller,
    WindowsInstaller,
)
  1. Register in _register_builtins():
def _register_builtins(self) -> None:
    builtins = [
        MiseInstaller(),
        AsdfInstaller(),
        PyenvInstaller(),
        BrewInstaller(),
        CondaInstaller(),
        AptInstaller(),
        MicrosoftStoreInstaller(),  # <-- Add this
        WindowsInstaller(),
        SourceInstaller(),
    ]

Other Notes (non-blocking)

  1. Tests would be helpful - especially for the Store version detection logic in version.py
  2. Consider squashing commits - There are 18 commits with many "Add files via upload" and repeated pycache deletions. A cleaner history would be nice, but not required.
  3. Good priority choice - Priority 75 (between mise/pyenv at 90-100 and WindowsInstaller at 60) makes sense for Store installations.
    What looks good
  • Store version detection via py --list parsing
  • Fallback scanning of %LOCALAPPDATA%\Microsoft\WindowsApps
  • TUI properly shows "Store" label
  • Uninstall support via winget
  • Tries multiple package ID patterns (Python.Python.X.Y and PythonSoftwareFoundation.Python.X.Y)

Please add the plugin registration and this is good to merge!

@ShaikhWarsi
Copy link
Contributor Author

can you check and merge @shreyasmene06

Copy link
Owner

@shreyasmene06 shreyasmene06 left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

All previous feedback has been addressed:

  • Plugin now properly imported and registered in manager.py
  • Comprehensive tests added (test_store_detection.py)
    The implementation is solid:
  • MicrosoftStoreInstaller properly integrated with plugin system
  • Priority 75 makes sense (higher than direct installer, lower than version managers)
  • Fallback to alternate package ID patterns (Python.Python.X.Y and PythonSoftwareFoundation.Python.X.Y)
  • Store version detection via both py --list and WindowsApps path scanning
  • Path info properly merged when detected from multiple sources
  • TUI properly displays "Store" label
  • Good test coverage for detection logic
    LGTM!

@shreyasmene06 shreyasmene06 merged commit 0b4f79d into shreyasmene06:main Feb 7, 2026
12 checks passed
@shreyasmene06 shreyasmene06 added acwoc Indicates this pull request is a part of AcWoC hard Indicates a difficult or complex task. labels Feb 7, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

acwoc Indicates this pull request is a part of AcWoC hard Indicates a difficult or complex task.

Projects

None yet

Development

Successfully merging this pull request may close these issues.

Windows Store Python support

2 participants