{ "$schema" : "https://aka.ms/winget-packages.sch...

Created on: March 15, 2025

Answered using O1 by Chat01

Question

{
"$schema" : "https://aka.ms/winget-packages.schema.2.0.json",
"CreationDate" : "2025-03-15T14:32:52.004-00:00",
"Sources" :
[
{
"Packages" :
[
{
"PackageIdentifier" : "AutoHotkey.AutoHotkey"
},
{
"PackageIdentifier" : "BookxSoftware.BookxNotePro"
},
{
"PackageIdentifier" : "ClashVergeRev.ClashVergeRev"
},
{
"PackageIdentifier" : "Logitech.Options"
},
{
"PackageIdentifier" : "Mozilla.Firefox.ESR"
},
{
"PackageIdentifier" : "Mozilla.Thunderbird"
},
{
"PackageIdentifier" : "Notepad++.Notepad++"
},
{
"PackageIdentifier" : "Daum.PotPlayer"
},
{
"PackageIdentifier" : "Sandboxie.Plus"
},
{
"PackageIdentifier" : "Tencent.TencentMeeting"
},
{
"PackageIdentifier" : "XnSoft.XnViewMP"
},
{
"PackageIdentifier" : "ALCPU.CoreTemp"
},
{
"PackageIdentifier" : "Google.Chrome"
},
{
"PackageIdentifier" : "ColdTurkeySoftware.ColdTurkeyBlocker"
},
{
"PackageIdentifier" : "MacType.MacType"
},
{
"PackageIdentifier" : "voidtools.Everything"
},
{
"PackageIdentifier" : "Logitech.OptionsPlus"
},
{
"PackageIdentifier" : "SiberSystems.GoodSync"
},
{
"PackageIdentifier" : "Microsoft.PowerShell"
},
{
"PackageIdentifier" : "calibre.calibre"
},
{
"PackageIdentifier" : "LiErHeXun.Quicker"
},
{
"PackageIdentifier" : "Embarcadero.Dev-C++"
},
{
"PackageIdentifier" : "FastStone.Capture"
},
{
"PackageIdentifier" : "FastStone.Viewer"
},
{
"PackageIdentifier" : "Microsoft.Edge"
},
{
"PackageIdentifier" : "OBSProject.OBSStudio"
},
{
"PackageIdentifier" : "Parsec.Parsec"
},
{
"PackageIdentifier" : "Amazon.SendToKindle"
},
{
"PackageIdentifier" : "Valve.Steam"
},
{
"PackageIdentifier" : "Youqu.ToDesk"
},
{
"PackageIdentifier" : "Tencent.WeChat"
},
{
"PackageIdentifier" : "XnSoft.XnView.Classic"
},
{
"PackageIdentifier" : "Ximalaya.Ximalaya"
},
{
"PackageIdentifier" : "Microsoft.VCRedist.2015+.x64"
},
{
"PackageIdentifier" : "ClockworkMod.UniversalADBDriver"
},
{
"PackageIdentifier" : "Python.Launcher"
},
{
"PackageIdentifier" : "Microsoft.VCRedist.2015+.x86"
},
{
"PackageIdentifier" : "AdGuard.AdGuard"
},
{
"PackageIdentifier" : "Microsoft.DotNet.DesktopRuntime.8"
},
{
"PackageIdentifier" : "Baidu.BaiduNetdisk"
},
{
"PackageIdentifier" : "kangfenmao.CherryStudio"
},
{
"PackageIdentifier" : "Anysphere.Cursor"
},
{
"PackageIdentifier" : "Notion.Notion"
},
{
"PackageIdentifier" : "Amazon.Kindle"
},
{
"PackageIdentifier" : "Discord.Discord"
},
{
"PackageIdentifier" : "Flow-Launcher.Flow-Launcher"
},
{
"PackageIdentifier" : "Google.PlatformTools"
},
{
"PackageIdentifier" : "Kingsoft.WPSOffice.CN"
},
{
"PackageIdentifier" : "Obsidian.Obsidian"
},
{
"PackageIdentifier" : "Bin-Huang.Chatbox"
},
{
"PackageIdentifier" : "SoftDeluxe.FreeDownloadManager"
},
{
"PackageIdentifier" : "Python.Python.3.11"
},
{
"PackageIdentifier" : "WEIFENG2333.VideoCaptioner"
},
{
"PackageIdentifier" : "Mathpix.MathpixSnippingTool"
},
{
"PackageIdentifier" : "Microsoft.PowerToys"
},
{
"PackageIdentifier" : "Microsoft.Teams"
},
{
"PackageIdentifier" : "Microsoft.AppInstaller"
},
{
"PackageIdentifier" : "Microsoft.UI.Xaml.2.7"
},
{
"PackageIdentifier" : "Microsoft.UI.Xaml.2.8"
},
{
"PackageIdentifier" : "Microsoft.VCLibs.Desktop.14"
},
{
"PackageIdentifier" : "Microsoft.DevHome"
},
{
"PackageIdentifier" : "Microsoft.WindowsTerminal"
}
],
"SourceDetails" :
{
"Argument" : "https://cdn.winget.microsoft.com/cache",
"Identifier" : "Microsoft.Winget.Source_8wekyb3d8bbwe",
"Name" : "winget",
"Type" : "Microsoft.PreIndexed.Package"
}
}
],
"WinGetVersion" : "1.10.340"
}

Please install them with scoop instead. THanks..

Thought

Gathering package details

I’m reviewing a list of 60 packages, noting their names and sources. The user prefers installation via Scoop instead of Winget.

Mapping and installing

I’m working on a script to map Winget packages to Scoop bucket names, handling non-existent packages by listing unavailable ones. This requires defining a strategy for each package.

Crafting a script

I’m developing a Python script to parse JSON, extract Winget package identifiers, and attempt to map them to known Scoop package names, generating a script or instructions based on the results.

Simplifying installation

I’m mapping out a minimal solution by adding main, extras, and versions buckets in Scoop. For packages like "BookxSoftware.BookxNotePro" not available in Scoop, I’ll provide instructions for adding custom buckets.

Mapping alternatives

I’m working through alternative names for various packages, ensuring alignment with known Scoop packages. Some packages might lack direct matches, and I’ll provide instructions for them.

Mapping out package search

I’m considering a script to loop through packages, searching with "scoop search" and installing with "scoop install" to identify known packages, while handling unknown ones separately.

Weighing options

I’m considering using PowerShell to set up Scoop repositories and install packages, acknowledging that some packages might not exist or need additional handling.

Scripting the approach

I’m crafting a best-guess script to parse JSON and install packages, clearly stating that not all installations may succeed as some packages might be absent or incorrect.

Crafting a script

I’m creating a PowerShell script to install Scoop, add buckets, and parse JSON for package identifiers, knowing some installs might not work due to ambiguities or missing packages.

Reasoned for 20 seconds

Answer

Below is one possible approach for installing the packages via Scoop. Important note up front:

  1. Not every Windows package found in WinGet will have a corresponding Scoop manifest. Some packages may simply not exist in the official Scoop buckets (main, extras, versions, etc.) or may have a different name in Scoop.
  2. You may have to add additional unofficial buckets or build your own manifests for certain packages that don’t appear in the standard Scoop repositories.

That said, below is a PowerShell script template that:

  • Installs Scoop (if you haven’t already).
  • Adds several commonly used buckets (extras, versions, etc.).
  • Tries to install each package by some best-guess name.

Because many of these Winget IDs don’t map 1:1 to Scoop, I’ve included a small “mapping table” of (Winget-identifier) → (Scoop name). If a package is not in that table, the script just uses the raw Winget “PackageIdentifier,” which may or may not succeed. You can customize the mapping yourself as you discover exact Scoop package names.


1. Create a mapping from WinGet IDs to Scoop names

Below is a partial mapping for some popular packages that do exist in Scoop’s main or extras bucket. You can expand or edit this as needed. If Scoop complains that a package is not found, you either need to add another bucket or remove that entry from the list. Adjust as necessary:

powershell
# Example map from Winget “PackageIdentifier” to Scoop’s known manifest name $packageMap = @{ "AutoHotkey.AutoHotkey" = "autohotkey" # in extras "Notepad++.Notepad++" = "notepadplusplus" # in extras "Daum.PotPlayer" = "potplayer" # in extras "Mozilla.Firefox.ESR" = "firefox-esr" # in extras "Mozilla.Thunderbird" = "thunderbird" # in extras "Google.Chrome" = "googlechrome" # in extras "voidtools.Everything" = "everything" # in extras "OBSProject.OBSStudio" = "obs-studio" # in extras "Valve.Steam" = "steam" # in extras "Tencent.WeChat" = "wechat" # in extras "XnSoft.XnViewMP" = "xnviewmp" # in extras "XnSoft.XnView.Classic" = "xnview" # in extras "Discord.Discord" = "discord" # in extras "Flow-Launcher.Flow-Launcher" = "flow-launcher" # in extras "Kingsoft.WPSOffice.CN" = "wps-office-cn" # in extras "Obsidian.Obsidian" = "obsidian" # in extras "SoftDeluxe.FreeDownloadManager" = "fdm" # in extras "Python.Python.3.11" = "python" # or “python311”, depends on how you want it "Microsoft.PowerShell" = "powershell" # The “latest” 7.x in main bucket "calibre.calibre" = "calibre" # in extras "Microsoft.PowerToys" = "powertoys" # in extras "Microsoft.Teams" = "teams" # in extras "Microsoft.WindowsTerminal" = "windowsterminal" # in extras "Microsoft.Edge" = "microsoft-edge" # in extras "AdGuard.AdGuard" = "adguard" # in extras "Notion.Notion" = "notion" # in extras "Amazon.Kindle" = "kindle" # in extras "Baidu.BaiduNetdisk" = "baidunetdisk" # in extras # ... etc. Expand as needed. }

If a package is not in $packageMap, the script below attempts to install it by the original Winget PackageIdentifier—which probably won’t work for most. You may have to add custom buckets or create your own.


2. Full PowerShell script

You can save this as Install-With-Scoop.ps1 (for example) and then run it in a PowerShell window:

powershell
# Make sure execution policy allows running scripts # (only if not already set) Set-ExecutionPolicy RemoteSigned -Scope CurrentUser -Force # Install Scoop (if not installed yet) if (-not (Get-Command scoop -ErrorAction SilentlyContinue)) { Write-Host "Scoop not found. Installing now..." irm get.scoop.sh | iex } # Add some popular buckets scoop bucket add extras scoop bucket add versions # Add others if you want: # scoop bucket add nirsoft # scoop bucket add nonportable # scoop bucket add java # etc. # Here is the JSON from your post as a PowerShell string # If you have it in a file, you'd do: # $json = Get-Content .\YourWingetFile.json | ConvertFrom-Json $json = @" { "$schema": "https://aka.ms/winget-packages.schema.2.0.json", "CreationDate": "2025-03-15T14:32:52.004-00:00", "Sources": [ { "Packages": [ { "PackageIdentifier": "AutoHotkey.AutoHotkey" }, { "PackageIdentifier": "BookxSoftware.BookxNotePro" }, { "PackageIdentifier": "ClashVergeRev.ClashVergeRev" }, { "PackageIdentifier": "Logitech.Options" }, { "PackageIdentifier": "Mozilla.Firefox.ESR" }, { "PackageIdentifier": "Mozilla.Thunderbird" }, { "PackageIdentifier": "Notepad++.Notepad++" }, { "PackageIdentifier": "Daum.PotPlayer" }, { "PackageIdentifier": "Sandboxie.Plus" }, { "PackageIdentifier": "Tencent.TencentMeeting" }, { "PackageIdentifier": "XnSoft.XnViewMP" }, { "PackageIdentifier": "ALCPU.CoreTemp" }, { "PackageIdentifier": "Google.Chrome" }, { "PackageIdentifier": "ColdTurkeySoftware.ColdTurkeyBlocker" }, { "PackageIdentifier": "MacType.MacType" }, { "PackageIdentifier": "voidtools.Everything" }, { "PackageIdentifier": "Logitech.OptionsPlus" }, { "PackageIdentifier": "SiberSystems.GoodSync" }, { "PackageIdentifier": "Microsoft.PowerShell" }, { "PackageIdentifier": "calibre.calibre" }, { "PackageIdentifier": "LiErHeXun.Quicker" }, { "PackageIdentifier": "Embarcadero.Dev-C++" }, { "PackageIdentifier": "FastStone.Capture" }, { "PackageIdentifier": "FastStone.Viewer" }, { "PackageIdentifier": "Microsoft.Edge" }, { "PackageIdentifier": "OBSProject.OBSStudio" }, { "PackageIdentifier": "Parsec.Parsec" }, { "PackageIdentifier": "Amazon.SendToKindle" }, { "PackageIdentifier": "Valve.Steam" }, { "PackageIdentifier": "Youqu.ToDesk" }, { "PackageIdentifier": "Tencent.WeChat" }, { "PackageIdentifier": "XnSoft.XnView.Classic" }, { "PackageIdentifier": "Ximalaya.Ximalaya" }, { "PackageIdentifier": "Microsoft.VCRedist.2015+.x64" }, { "PackageIdentifier": "ClockworkMod.UniversalADBDriver" }, { "PackageIdentifier": "Python.Launcher" }, { "PackageIdentifier": "Microsoft.VCRedist.2015+.x86" }, { "PackageIdentifier": "AdGuard.AdGuard" }, { "PackageIdentifier": "Microsoft.DotNet.DesktopRuntime.8" }, { "PackageIdentifier": "Baidu.BaiduNetdisk" }, { "PackageIdentifier": "kangfenmao.CherryStudio" }, { "PackageIdentifier": "Anysphere.Cursor" }, { "PackageIdentifier": "Notion.Notion" }, { "PackageIdentifier": "Amazon.Kindle" }, { "PackageIdentifier": "Discord.Discord" }, { "PackageIdentifier": "Flow-Launcher.Flow-Launcher" }, { "PackageIdentifier": "Google.PlatformTools" }, { "PackageIdentifier": "Kingsoft.WPSOffice.CN" }, { "PackageIdentifier": "Obsidian.Obsidian" }, { "PackageIdentifier": "Bin-Huang.Chatbox" }, { "PackageIdentifier": "SoftDeluxe.FreeDownloadManager" }, { "PackageIdentifier": "Python.Python.3.11" }, { "PackageIdentifier": "WEIFENG2333.VideoCaptioner" }, { "PackageIdentifier": "Mathpix.MathpixSnippingTool" }, { "PackageIdentifier": "Microsoft.PowerToys" }, { "PackageIdentifier": "Microsoft.Teams" }, { "PackageIdentifier": "Microsoft.AppInstaller" }, { "PackageIdentifier": "Microsoft.UI.Xaml.2.7" }, { "PackageIdentifier": "Microsoft.UI.Xaml.2.8" }, { "PackageIdentifier": "Microsoft.VCLibs.Desktop.14" }, { "PackageIdentifier": "Microsoft.DevHome" }, { "PackageIdentifier": "Microsoft.WindowsTerminal" } ], "SourceDetails": { "Argument": "https://cdn.winget.microsoft.com/cache", "Identifier": "Microsoft.Winget.Source_8wekyb3d8bbwe", "Name": "winget", "Type": "Microsoft.PreIndexed.Package" } } ], "WinGetVersion": "1.10.340" } "@ | ConvertFrom-Json # (Re)use the mapping table from above: $packageMap = @{ "AutoHotkey.AutoHotkey" = "autohotkey" "Notepad++.Notepad++" = "notepadplusplus" "Daum.PotPlayer" = "potplayer" "Mozilla.Firefox.ESR" = "firefox-esr" "Mozilla.Thunderbird" = "thunderbird" "Google.Chrome" = "googlechrome" "voidtools.Everything" = "everything" "OBSProject.OBSStudio" = "obs-studio" "Valve.Steam" = "steam" "Tencent.WeChat" = "wechat" "XnSoft.XnViewMP" = "xnviewmp" "XnSoft.XnView.Classic" = "xnview" "Discord.Discord" = "discord" "Flow-Launcher.Flow-Launcher" = "flow-launcher" "Kingsoft.WPSOffice.CN" = "wps-office-cn" "Obsidian.Obsidian" = "obsidian" "SoftDeluxe.FreeDownloadManager" = "fdm" "Python.Python.3.11" = "python" "Microsoft.PowerShell" = "powershell" "calibre.calibre" = "calibre" "Microsoft.PowerToys" = "powertoys" "Microsoft.Teams" = "teams" "Microsoft.WindowsTerminal" = "windowsterminal" "Microsoft.Edge" = "microsoft-edge" "AdGuard.AdGuard" = "adguard" "Notion.Notion" = "notion" "Amazon.Kindle" = "kindle" "Baidu.BaiduNetdisk" = "baidunetdisk" # Add more as you see fit... } # Iterate over every package in the JSON foreach ($pkg in $json.Sources[0].Packages) { $wingetId = $pkg.PackageIdentifier if ($packageMap.ContainsKey($wingetId)) { # Use the known scoop package name $scoopName = $packageMap[$wingetId] Write-Host "`n=== Attempting to install $wingetId (Scoop: $scoopName) ===" scoop install $scoopName } else { # Fallback: try installing by the Winget ID string (likely to fail) Write-Host "`n=== Attempting to install $wingetId directly ===" scoop install $wingetId } }

How this script works

  1. Installs Scoop if not already installed.
  2. Adds some common Scoop buckets, including the extras bucket (where many desktop apps live).
  3. Parses your JSON snippet directly as a PowerShell string (you could load it from a file).
  4. Loops through each PackageIdentifier and checks if it’s in $packageMap.
    • If yes, installs via the mapped name, e.g. “notepadplusplus” for Notepad++.Notepad++.
    • If no, tries the raw ID. (Often it will fail unless there’s a coincidence that the package is named the same in Scoop.)

3. What if Scoop doesn’t have a given package?

If Scoop says something like “Couldn’t find manifest …”, that means there’s no official manifest for it in the buckets you’ve added. You have a few options:

  1. Search for a third-party bucket that might contain the app. You can Google for “Scoop [appname]” or check GitHub to see if someone has made an unofficial bucket. Then scoop bucket add <url> that repository, and try installing again.
  2. Write your own custom Scoop manifest. This is well-documented in the Scoop Docs on GitHub.
  3. Use the app’s official installer outside of Scoop. If it’s not available anywhere and you don’t want to create a manifest, you may just have to install it manually.

Final notes

  • Not all the Winget packages in your list will have a straightforward equivalent in Scoop. You’ll likely have to handle those on a case-by-case basis.
  • The script above is just a starting template. Tweak the $packageMap dictionary as you discover the correct Scoop names (or discover that the app is unavailable).
  • If you have lots of custom or obscure software that you still want to script, consider writing your own Scoop manifests or using a separate installation script for that software.

That should get you started using Scoop instead of WinGet for (most of) those packages!

Share this Q&A