Skip to content

Folders and files

NameName
Last commit message
Last commit date

Latest commit

ย 

History

81 Commits
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 

Repository files navigation

๐Ÿ“ฆ MSStoreHelper

A GUI tool to download and install Microsoft Store apps without needing the Microsoft Store. Perfect for Windows LTSC editions, restricted environments, or when the Store just won't cooperate.

Version Python Platform License


Screenshot

โœจ Features

  • ๐Ÿ” Search the Microsoft Store - Find any app by name using the official Microsoft API
  • Headless CLI - Search, download, install, or mirror Store packages from RMM scripts without opening the GUI
  • ๐Ÿ“‚ Browse Categories - Quick access to essential apps, gaming, productivity, dev tools & more
  • โšก Quick Fix Presets - One-click solutions for common needs (Repair Store, Gaming Setup, Media Codecs)
  • ๐Ÿงฐ LTSC Essentials - One-click preset for Terminal, PowerShell 7, WSL, Photos, Calculator, and Snipping Tool
  • WSL Distro Sideload - Queues Ubuntu and Debian Store distribution packages for offline WSL installs
  • ๐Ÿ”Ž LTSC Gap Scan - Detects missing LTSC components and queues the matching Store packages automatically
  • ๐ŸŽฎ Xbox Core Queue - Queues Xbox Identity and Gaming Services with known-good version pinning and fallback logging
  • โญ User Profile - Stores recent searches and pinned favorite apps per Windows user profile
  • Workspace UI - Uses a responsive graphite/cyan shell with scroll-safe navigation, source/signature/admin status, favorites, and a dedicated queue inspector
  • ๐ŸŽจ Theme Modes - Uses System, Dark, or Light mode with Windows accent-color matching
  • ๐Ÿ“ Release Notes - Fetches per-app notes from Microsoft Store product pages
  • โœจ Smart Select - Automatically picks the best packages and dependency frameworks (bundles, correct architecture, newest versions)
  • โญ๏ธ Delta Detection - Skips packages when the same or newer version is already installed
  • ๐Ÿงญ Architecture Override - Force x64, x86, ARM64, ARM, or neutral package selection when needed
  • ๐Ÿ›ก๏ธ Package Trust Gate - Requires valid Authenticode and Windows chain evidence, manifest-to-signer identity consistency, architecture/type sanity, and Store product binding before automation
  • Reviewable Quarantine - Keeps identity-valid packages with unknown product bindings out of install, rollback, cache, mirror, and export workflows until the user reviews the exact source, identity, publisher, manifest, revocation state, and hash
  • Package Ingress Guard - Rejects unsafe package names, URLs, redirects, persisted paths, cache entries, and export staging before they can reach disk or PowerShell
  • ๐Ÿ” Verified Downloads - Writes packages atomically and records SHA-256 metadata before cache reuse
  • Verified Resumable Downloads - Binds .part data to source identity, validators, expected length, and SHA-256 progress before using If-Range; enforces package-size and disk-reserve limits and refreshes expired Store URLs
  • Keep Updated Mode - Re-checks installed catalog apps and queues newer Store bundles while the app is open
  • Rollback Cache - Keeps the last two cached package versions and can reinstall the previous cached app version
  • Package Diff - Compares cached package versions for manifest capability and dependency changes
  • Crash-Safe State - Versions and atomically replaces local profile, queue, cache, repair, resume, mirror, and operation state; invalid generations are quarantined for recovery instead of overwritten
  • Windows Capability Preflight - Distinguishes current-user and elevated machine inventory from denial, timeout, policy, service, endpoint, and reboot conditions before queueing or mutation
  • Source Health - Detects StoreEdgeFD, RG-Adguard, WinGet, and Store CLI availability with fallback hints
  • Store Query Controls - Persists RG-Adguard ring, Store language, and market for localized package lookup and deployment artifacts
  • Verified Python Setup - Uses exact transitive pins, SHA-256 artifact locks, and tested offline wheelhouses
  • Previewed Diagnostics Bundle - Recursively redacts credentials, signed-URL secrets, local paths, commands, source health, queue state, logs, and repair evidence, then shows the exact ZIP contents before saving
  • Accessibility Guardrails - Keeps core theme contrast and the welcome surface usable at 100, 125, and 150 percent scaling
  • ๐Ÿ“ฅ Download Queue - Queue multiple packages with progress tracking
  • ๐Ÿ“ฆ Install Packages - Install downloaded apps directly (requires Admin)
  • ๐Ÿ”ง Inspected Store Repair - Shows the exact preconditions, backups, mutations, permissions, and reboot impact before Store, provisioning, licensing, or cache work can run
  • Verified Repair Restore - Uses exclusive transactions, restrictive backup ACLs, hash-verified copies, safe-checkpoint cancellation, and repeatable in-app restore without consuming the backup
  • ๐Ÿ‘ฅ Provisioning Repair - Backs up AppX deprovisioning state before clearing Store tombstones and re-registering existing packages
  • ๐Ÿ” Licensing Reset - Backs up ClipSVC state before verified service and package recovery
  • ๐Ÿงน Cache Rebuild - Backs up and verifies Store cache folders before recreating them
  • ๐Ÿ—‚๏ธ Shared Offline Cache - Mirrors downloaded AppX/MSIX artifacts to a shared folder for air-gapped reuse
  • Allowlisted Package Mirror - Serves only hash-current, trust-approved packages and a sanitized index; loopback is the default and LAN mode requires short-lived bearer authentication
  • ๐Ÿงพ DISM Provisioning Export - Generates fleet-ready PowerShell scripts that call DISM for queued packages
  • ๐Ÿ“‹ WinGet Import Export - Saves selected Store apps as a reproducible WinGet msstore import manifest
  • App Installer Export - Writes .appinstaller manifests plus package folders for lightweight App Installer deployments
  • ๐Ÿ“ฆ IntuneWin Export - Packages downloaded queue items with install and detection scripts for Intune Win32 apps
  • ๐Ÿ“‹ Verbose Console - Detailed logging with error hints and troubleshooting tips
  • Truthful Operations - Serializes conflicting work, supports safe cancellation and shutdown, reports partial success consistently, and retains a bounded telemetry-free journal under %APPDATA%\MSStoreHelper

๐Ÿ–ฅ๏ธ Requirements

  • Windows 10/11 (including LTSC editions)
  • CPython 3.11-3.14 on Windows x64, x86, or ARM64
  • Administrator rights (for installation only)

Install the artifact-hashed dependencies before first run:

  • customtkinter - Modern UI framework
  • requests - HTTP client
  • beautifulsoup4 - HTML parsing

๐Ÿš€ Quick Start

Option 1: Run Directly

# Clone or download
git clone https://github.com/SysAdminDoc/MSStoreHelper.git
cd MSStoreHelper

# Install the exact, wheel-only dependency graph
py -3 -m pip install --require-hashes -r requirements.txt

# Run
python MSStoreHelper.py

For offline PCs, prepare a wheelhouse on a connected PC:

py -3 scripts\build_wheelhouse.py --output wheelhouse --test
py -3 -m pip install --no-index --find-links wheelhouse --require-hashes -r requirements.txt

The wheelhouse command selects the lock for the running interpreter and architecture, verifies every wheel against its SHA-256, writes a manifest, performs an offline install, and runs the test suite. To prepare another target, pass one of the committed files under locks\ with --lock.

Option 2: Run as Admin (for installation features)

# Right-click PowerShell โ†’ Run as Administrator
python MSStoreHelper.py

Option 3: Headless CLI

# Search without opening the GUI
python MSStoreHelper.py --search terminal --json

# Download a catalog app, product ID, or package identity
python MSStoreHelper.py --download Microsoft.WindowsTerminal --output C:\Packages --json

# Install from an elevated RMM shell without opening the GUI
python MSStoreHelper.py --install Microsoft.WindowsTerminal --output C:\Packages --json

# Pre-download and serve a loopback-only package mirror
python MSStoreHelper.py --download Microsoft.WindowsTerminal --output C:\MSStoreMirror --json
python MSStoreHelper.py --mirror C:\MSStoreMirror --port 8765 --json

# Explicit LAN HTTP (replace the advertised address with this PC's LAN IP).
# The generated bearer token is shown once and expires after 15 minutes.
python MSStoreHelper.py --mirror C:\MSStoreMirror --host 0.0.0.0 --advertise-host 192.0.2.10 --lan --acknowledge-cleartext-risk --port 8765 --json

# Prefer HTTPS on a LAN when a PEM certificate and key are available.
python MSStoreHelper.py --mirror C:\MSStoreMirror --host 0.0.0.0 --advertise-host mirror.example.test --lan --tls-cert C:\TLS\mirror.pem --tls-key C:\TLS\mirror-key.pem --port 8765 --json

Mirror routes are limited to /msstorehelper-mirror-index.json and the trust-approved /packages/... entries listed in that index. Send the LAN token only in the Authorization: Bearer ... headerโ€”never in a URL. Access records are retained in a bounded, redacted msstorehelper-mirror-access.jsonl file beside the cache.


๐Ÿ“– How to Use

๐Ÿ” Finding Apps

  1. Search by Name: Type an app name (e.g., "Spotify", "VLC", "Firefox") and click Search
  2. Browse Categories: Click a category in the sidebar to see curated app lists
  3. Store Query: Click "Query: Retail / en-US / US" to change RG-Adguard ring, Store language, or market
  4. Quick Actions: Use presets for common tasks like LTSC Essentials, Store repair, or gaming setup
  5. Scan LTSC Gaps: Run elevated, then click "๐Ÿ”Ž Scan LTSC Gaps"; machine and provisioned-package inventory must complete successfully before missing components can be queued
  6. Xbox Core: Click "๐ŸŽฎ Queue Xbox Core" to queue Xbox Identity and Gaming Services through the pinned install path
  7. Keep Updated: Enable "Keep updated" or click "Check" to queue newer packages for the verified current-user inventory; unavailable inventory or package sources stop without claiming the device is current
  8. Pin Favorites: Select apps and click "Pin Selected" to show them in the Workspace for this Windows user
  9. Release Notes: Click "Notes" on an app row to fetch Microsoft Store page notes

๐Ÿ“ฆ Downloading Packages

  1. Click "Get Files" on any search result, or select multiple apps and click "Get Selected Apps"
  2. Review the available packages (bundles, different architectures, versions)
  3. Click "โœจ Smart Select" to automatically pick the best files
  4. Click "โž• Add to Queue" to add selected packages to the download queue
  5. Optional: enable Shared cache and pick a shared folder for air-gapped reuse
  6. Click "โฌ‡๏ธ Download All" to start downloading
  7. If a package shows Review required, use its queue action to inspect the package evidence and explicitly promote it; failed signature, chain, manifest, or identity checks cannot be overridden
  8. Click "Diagnostics" to inspect the exact recursively redacted queue, source, log, command, and repair values before saving a support ZIP

๐Ÿงพ Fleet Provisioning

  1. Add the packages and dependencies you want to deploy to the download queue
  2. Click "๐Ÿงพ Export DISM Script"
  3. Save the generated .ps1 beside the downloaded packages or in your shared cache
  4. Run the script from an elevated PowerShell session on the target PC

Exporting an App Installer Manifest

  1. Download the queued AppX/MSIX packages
  2. Click "Export AppInstaller"
  3. Save the .appinstaller; MSStoreHelper copies the required packages into a sibling folder
  4. Install with Add-AppxPackage -AppInstallerFile <file.appinstaller>

๐Ÿ“ฆ Exporting an IntuneWin Package

  1. Download the queued AppX/MSIX packages
  2. Click "๐Ÿ“ฆ Export IntuneWin"
  3. Select IntuneWinAppUtil.exe if MSStoreHelper cannot find it automatically
  4. Save the .intunewin; MSStoreHelper also writes a sidecar detection script

๐Ÿ“‹ Exporting a WinGet Manifest

  1. Browse a category or search for apps
  2. Select the apps you want to reproduce on other PCs
  3. Click "Export WinGet"
  4. Import the saved .json with winget import -i <file>

๐Ÿ“ฆ Installing Packages

  1. After downloading, click "Install"
  2. Note: Requires Administrator privileges
  3. Only hash-current packages that passed the trust gate or received a journaled review can be installed
  4. Check the console output for any errors or hints
  5. To roll back, queue the app identity and click "Rollback" to install the newest trusted cached version below the current version
  6. Click "Diff" to compare cached manifest permissions and dependencies between the newest two trusted cached versions

๐Ÿ”ง Repairing the Store

If you see errors like "The server stumbled" or "needs to be online":

  1. Scroll to Admin Tools and choose an Inspect action
  2. Review the exact plan, impact, permissions, reboot guidance, backup targets, commands, and postconditions
  3. Choose how many verified backups to retain, acknowledge the inspected plan, and select Run Verified Repair
  4. Use Cancel at Safe Checkpoint to stop between mutation steps; the active step is never interrupted mid-change
  5. Choose Restore Backup to inspect and run a hash-verified restore. Restore verifies files, registry state, services, and package identities while keeping the source backup reusable

๐Ÿ’ก Tips

Tip Description
Use Bundles Files ending in .msixbundle or .appxbundle work on all architectures
Avoid Encrypted Skip .eappx and .emsix files - they won't install without a license
Install Dependencies First Smart Select queues VCLibs, .NET Native, and UI.Xaml before main apps
Check Windows Version Some apps require Windows 11 - check the console for compatibility errors
Smart Select Let the tool pick the best packages automatically

โš ๏ธ Common Errors

Error Code Meaning Solution
0x80073CFD App requires newer Windows App incompatible - try older version
0x80073D06 Higher version installed Treated as a no-op; you already have a newer version
0x80073D02 Package in use Close the app and retry
0x80073D19 Missing dependency Install VCLibs/.NET first
0x80073CFF Sideloading disabled Enable Developer Mode in Windows Settings
0x80073CF3 Already installed App already exists

๐Ÿ—๏ธ How It Works

MSStoreHelper uses two APIs:

  1. Microsoft Store Search API (storeedgefd.dsx.mp.microsoft.com)

    • Same API used by WinGet and Intune
    • Returns app metadata and Package IDs
  2. RG-AdGuard Store API (store.rg-adguard.net)

    • Provides direct download links for Store packages
    • Returns all available versions and architectures

Packages are downloaded to %USERPROFILE%\Downloads\MSStoreHelper. Before any package can enter automation, MSStoreHelper binds its filename and source metadata to its signed manifest, validates the Windows certificate chain and revocation result, and records a hash-bound trust report. Packages with valid evidence but no authoritative Store product-to-identity mapping remain quarantined until an explicit review is written to %APPDATA%\MSStoreHelper\trust-review.jsonl. Trusted packages are installed using PowerShell's Add-AppxPackage cmdlet.


๐Ÿ“ Project Structure

MSStoreHelper/
โ”œโ”€โ”€ MSStoreHelper.py               # Main application
โ”œโ”€โ”€ diagnostic_bundle.py           # Recursive redaction, preview, and atomic ZIP output
โ”œโ”€โ”€ mirror_service.py              # Allowlisted HTTP routes, LAN auth, Range, and audit
โ”œโ”€โ”€ store_sources.py               # Store source health, retry, and fallback helpers
โ”œโ”€โ”€ msstore_package_resolution.py  # Package selection and install ordering
โ”œโ”€โ”€ package_ingress.py             # Package filename, URL, and path boundary
โ”œโ”€โ”€ package_trust.py               # Signature, manifest, identity, and promotion policy
โ”œโ”€โ”€ repair_transaction.py          # Fail-closed repair, backup, and restore engine
โ”œโ”€โ”€ state_repository.py            # Versioned atomic state, locking, migration, and recovery
โ”œโ”€โ”€ windows_capabilities.py        # Scoped AppX inventory and Windows preflight evidence
โ”œโ”€โ”€ pyproject.toml                 # Python package metadata
โ”œโ”€โ”€ requirements.in                # Canonical fully pinned dependency graph
โ”œโ”€โ”€ requirements.txt               # Aggregate artifact-hashed Windows lock
โ”œโ”€โ”€ locks/                         # Per-interpreter and architecture hash locks
โ”œโ”€โ”€ scripts/
โ”‚   โ”œโ”€โ”€ lock_dependencies.py       # Reproducible lock generator
โ”‚   โ””โ”€โ”€ build_wheelhouse.py        # Offline wheelhouse build and verification
โ”œโ”€โ”€ tests/
โ”‚   โ”œโ”€โ”€ test_dependency_locks.py   # Runtime floor and supply-chain lock tests
โ”‚   โ”œโ”€โ”€ test_package_resolution.py # Resolver tests
โ”‚   โ”œโ”€โ”€ test_package_ingress.py    # Adversarial ingress and path tests
โ”‚   โ”œโ”€โ”€ test_package_trust.py      # Trust, quarantine, and promotion-gate tests
โ”‚   โ”œโ”€โ”€ test_mirror_service.py     # Mirror boundary, auth, Range, and audit tests
โ”‚   โ”œโ”€โ”€ test_store_repair.py       # Store repair tests
โ”‚   โ”œโ”€โ”€ test_offline_cache.py      # Shared cache tests
โ”‚   โ”œโ”€โ”€ test_dism_export.py        # DISM export tests
โ”‚   โ”œโ”€โ”€ test_winget_export.py      # WinGet manifest tests
โ”‚   โ”œโ”€โ”€ test_diagnostics_bundle.py # Diagnostics ZIP tests
โ”‚   โ”œโ”€โ”€ test_integration_harness.py # Mocked Store/PowerShell workflow tests
โ”‚   โ”œโ”€โ”€ test_cli.py                # Headless CLI workflow tests
โ”‚   โ”œโ”€โ”€ test_accessibility.py      # Theme contrast and DPI guardrails
โ”‚   โ”œโ”€โ”€ test_appinstaller_export.py # App Installer manifest tests
โ”‚   โ”œโ”€โ”€ test_intune_export.py      # IntuneWin package tests
โ”‚   โ”œโ”€โ”€ test_ltsc_workflow.py      # LTSC preset tests
โ”‚   โ”œโ”€โ”€ test_keep_updated.py       # Installed catalog update tests
โ”‚   โ”œโ”€โ”€ test_package_diff.py       # Cached manifest diff tests
โ”‚   โ”œโ”€โ”€ test_user_profile.py       # Search history and favorites tests
โ”‚   โ”œโ”€โ”€ test_state_repository.py   # Crash, migration, quarantine, and concurrency tests
โ”‚   โ”œโ”€โ”€ test_windows_capabilities.py # Inventory status and preflight tests
โ”‚   โ”œโ”€โ”€ test_dependency_bootstrap.py # Dependency setup tests
โ”‚   โ”œโ”€โ”€ test_release_notes.py      # Store page release-note tests
โ”‚   โ””โ”€โ”€ test_store_sources.py      # Source health and fallback tests
โ”œโ”€โ”€ README.md                      # This file
โ”œโ”€โ”€ LICENSE                        # MIT License
โ”œโ”€โ”€ icon.png / icon.ico            # App icon assets
โ””โ”€โ”€ screenshot.png                 # README screenshot

๐Ÿ”ง Configuration

Default settings can be modified at the top of MSStoreHelper.py:

APP_VERSION = "3.36.0"
DEFAULT_OUTPUT = os.path.join(os.environ['USERPROFILE'], "Downloads", "MSStoreHelper")

๐Ÿ“‹ App Catalog

The built-in catalog includes:

Category Apps
๐Ÿ› ๏ธ Essential Repairs Microsoft Store, App Installer, Xbox Identity
โš™๏ธ System Components VC++ Runtime, HEVC Codec, AV1 Codec, WebP
๐Ÿ’ป Productivity Windows Terminal, PowerToys, Notepad, Calculator, Snipping Tool, Photos
๐ŸŽฎ Gaming Xbox App, Xbox Game Bar, Gaming Services
๐ŸŒ Browsers Firefox, Brave
๐Ÿ› ๏ธ Developer Tools VS Code, Python 3.12, PowerShell 7, WSL
๐Ÿง WSL Distributions Ubuntu, Debian

๐Ÿค Contributing

Contributions are welcome! Please feel free to submit a Pull Request.

  1. Fork the repository
  2. Create your feature branch (git checkout -b feature/AmazingFeature)
  3. Commit your changes (git commit -m 'Add some AmazingFeature')
  4. Push to the branch (git push origin feature/AmazingFeature)
  5. Open a Pull Request

๐Ÿ“„ License

This project is licensed under the MIT License - see the LICENSE file for details.


๐Ÿ™ Acknowledgments

  • RG-AdGuard - For providing the package download API
  • CustomTkinter - For the modern UI framework
  • Microsoft - For the Store search API

โš ๏ธ Disclaimer

This tool is provided as-is for legitimate use cases such as:

  • Installing apps on Windows LTSC editions
  • Offline/restricted environments
  • Troubleshooting Store issues

Always download apps from official sources. The author is not responsible for any misuse of this tool.


Made with โค๏ธ for the Windows LTSC community

About

A GUI tool to download and install Microsoft Store apps without needing the Microsoft Store. Perfect for Windows LTSC editions, restricted environments, or when the Store just won't cooperate.

Topics

Resources

Code of conduct

Contributing

Security policy

Stars

Watchers

Forks

Releases

Packages

Contributors

Languages