DEV Community

Kai Walter
Kai Walter

Posted on • Updated on

download Windows Store apps with PowerShell over https://store.rg-adguard.net/

Especially in enterprise environments installing apps from Windows Store is turned off. One workaround is web site https://store.rg-adguard.net/ - courtesy of @rgadguard & mkuba50 - which can be used to download files related to a particular store app.

How to find a product URL

  • go into store (probably on a machine where store is not locked)
  • search for app
  • click Share
  • Copy Link
  • paste into input field right of URL Link

Alt Text

Script

I created this script where I can use the product URL obtained above and download a set of related files for a local install:

$apiUrl = "https://store.rg-adguard.net/api/GetFiles"

$productUrl = "https://www.microsoft.com/store/productId/9nblggh5r558" # To Do
#$productUrl = "https://www.microsoft.com/store/productId/9MSPC6MP8FM4" # Whiteboard
#$productUrl = "https://www.microsoft.com/store/productId/9WZDNCRFJBB1" # Wireless Display Adapter

$downloadFolder = Join-Path $env:TEMP "StoreDownloads"
if(!(Test-Path $downloadFolder -PathType Container)) {
    New-Item $downloadFolder -ItemType Directory -Force
}

$body = @{
    type = 'url'
    url  = $productUrl
    ring = 'RP'
    lang = 'en-US'
}

$raw = Invoke-RestMethod -Method Post -Uri $apiUrl -ContentType 'application/x-www-form-urlencoded' -Body $body

$raw | Select-String '<tr style.*<a href=\"(?<url>.*)"\s.*>(?<text>.*)<\/a>' -AllMatches|
 % { $_.Matches } |
 % { 
    $url = $_.Groups[1].Value
    $text = $_.Groups[2].Value
    Write-Host $text

    if($text -match "_(x86|x64|neutral).*appx(|bundle)$") {
        $downloadFile = Join-Path $downloadFolder $text
        if(!(Test-Path $downloadFile)) {
            Invoke-WebRequest -Uri $url -OutFile $downloadFile
        }
    }
}

Enter fullscreen mode Exit fullscreen mode

Discussion (7)

Collapse
jarrodmast profile image
Jarrod Mast

Just tested and this worked well much thanks!
Lines 22 and 23 are starting with a pipe to continue the previous line, this is supported in PowerShell 7 but not older versions. Quick fix is to move the pipe to end of previous line.

Collapse
kaiwalter profile image
Kai Walter Author

Thanks Jarrod!

Collapse
fruex profile image
fruex

It doesn't work for me (2021-03-24)

Collapse
kaiwalter profile image
Kai Walter Author

@fruex
I just tested with PowerShell Windows (thanks @jarrodmast) + 7.2.2 and script is working on my machine. Do you receive any error or have any other indication what is not working?

Collapse
farag2 profile image
farag2 • Edited on

store.rg-adguard.net has blocked the ability to download anything using their parser since March. Also they enabled Cloudflare firewall. So download packages manually is the only thing we can now.
We found it out when realized that our SophiApp stopped downloading the HEVC codec. had to upload the packaged to the GitHub repo.

Collapse
kaiwalter profile image
Kai Walter Author

Thanks for the information. I didn't notice as in the past months I was using winget to download MS store apps on my corporate machine.

Thread Thread
farag2 profile image
farag2

It started working again...