DEV Community

loading...

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

Kai Walter
35+ years software and IT project veteran
・1 min read

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

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

Enter fullscreen mode Exit fullscreen mode

Discussion (3)

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)