storedev / storelib Goto Github PK
View Code? Open in Web Editor NEWStorelib is a DotNet library that provides APIs to interact with the various Microsoft Store endpoints.
License: Mozilla Public License 2.0
Storelib is a DotNet library that provides APIs to interact with the various Microsoft Store endpoints.
License: Mozilla Public License 2.0
The NuGet package seems outdated (last updated in 2020).
Hi there!
Is there a way to change WIF, WIS, RP, and Retail with a argument without recompiling? It defaults to a beta which I can see some may not want. Or even, can you have them all query if not defined? Removing it from XML defaults to Retail.
Thanks
Or is this for Auth Tokens?
Any apps/games that use the XVC package format and provide "https://productingestionbin1.blob.core.windows.net"
as PackageDownloadUris
is unable to be downloaded using the tool, could you add support for this or point me in the direction of something that will help me work out how the store does it?
Example product listings:
https://gist.github.com/rtm516/b8fcfb8282a27abc4662c2b09fc04ca3
As mentioned in the title, the search does not return results for links that have xbox.com (still works on microsoft.com links).
Many new packages are only available at the xbox.com link. I don't know if this is fixable or not, just noting this here.
What's the best way of generating authentication tokens to query DCAT? I have tried using OpenXbox.XboxWebApi with no luck (I could just be passing the wrong token/format)
Currently, I use a token helper dll that uses windows to generate a new token but that only works on machines with windows 10+ and its not cross-platform.
https://github.com/MCMrARM/mc-w10-version-launcher/tree/master/WUTokenHelper
My code using the token from that dll is below
await dcathandler.QueryDCATAsync("9NBLGGH2JHXJ", IdentiferType.ProductID, "Bearer WLID1.0=" + Convert.FromBase64String(token));
packages = await dcathandler.GetPackagesForProductAsync($"<User>{token}</User>");
Autosuggest only returns maximum of 10 entries.
The actual search endpoint returns everything it can find.
Currently search endpoint is defined here:
StoreLib/StoreLib/Models/Endpoint.cs
Lines 37 to 38 in f372a22
The search endpoint is:
/// productFamily: "Games" or "Apps" ... maybe comma separated is possible too?
var DisplayCatalogSearch = $"https://displaycatalog.mp.microsoft.com/v7.0/productFamilies/{productFamily}/products?query={searchQuery}&market=US&languages=en-US&fieldsTemplate=details&platformdependencyname=windows.xbox";
Old endpoint could be renamed to DisplayCatalogAutosuggest
or something along those lines.
Any suggestions?
Use Nuget Package,Through Debug WriteLine (download. PackageMoniker);
Debug WriteLine (download. PackageUri);
Taking Microsoft's "Media Player" as an example, it was found that the actual file and description names downloaded from the download link were inconsistent and all were incorrect. Downloading the application package resulted in a framework package, while downloading the framework package resulted in an application package.
Code, both initialization methods have been tried:
使用nuget包,顺序都是错的
通过Debug.WriteLine(download.PackageMoniker);
Debug.WriteLine(download.PackageUri);
以微软“媒体播放器”为例,发现下载链接下载的实际文件和描述名称不一致,全部都是错的,下载应用包得到的是框架包,下载框架包得到应用包。
代码,两种初始化方式都试过了:
DisplayCatalogHandler dcathandler = new DisplayCatalogHandler(DCatEndpoint.Production, new Locale(Market.US, Lang.en, true)); IList<PackageInstance> r; await dcathandler.QueryDCATAsync(productId); r=await dcathandler.GetPackagesForProductAsync(); List<packlink> ret = new List<packlink>(); foreach (var download in r) { ret.Add(new packlink(download.PackageMoniker + ".Appx", download.PackageUri.ToString())); Debug.WriteLine(download.PackageMoniker); Debug.WriteLine(download.PackageUri); }
Good Day,
Plenty of apps available on MS Store seemed to contain Product IDs that would begin with XP
but unfortunately neither https://xwebstore.herokuapp.com nor https://store.rg-adguard.net could support them at the moment, a handful of examples are listed below:
Title | Product ID |
---|---|
KoordASIO Universal Driver | XP9CSS6NZBDV21 |
Discord | XPDC2RH70K22MN |
WinZip 26 | XPDNXDPXBRSVXT |
Adobe Acrobat Reader DC | XPDP273C0XHQH2 |
Microsoft Edge Browser | XPFFTQ037JWMHS |
Then I checked the following page linked below and found that Discord could be installed via Windows Package Manager CLI / the winget
command:
https://github.com/Yetenol/Setup-Computer#communication
Title | Install command |
---|---|
Discord | winget install -e XPDC2RH70K22MN --accept-package-agreements |
Just wondering if there were any useful codes that could be borrowed from 'winget' by any chance?
For instance, we could take a quick look at their codes and find the string Url
easily, here's one of them:
Of course that might not be very helpful at all, that's why I hope that maybe someone else already figured out how to grab a copy of anything that's starting with XP
.
When we query a package and its product is null but not products property then get packages throws exception.
Following code can be used to fix the issue
if (dcathandler.ProductListing.Product == null)
dcathandler.ProductListing.Product = dcathandler.ProductListing.Products[0];
var g = await dcathandler.GetPackagesForProductAsync();
With this library I cannot pull update IDs that are opt-in betas on the Xbox insider hub, such as the Minecraft preview. Im not sure if this is just some authentication issue or an oversight of the library.
The code I'm using to pull the update is https://github.com/rtm516/MinecraftAppxArchiver/blob/master/CoreTool/Loaders/StoreLoader.cs#L71-L97
hello! This is a very amazing project. Appreciate it.
I tried to catch the Microsoft store app install request with Fiddler, BurpSuite...to many tools.
But I always got errors about fe3cr.delivery.mp.microsoft.com, it's a http/2 connection, I tried to set system proxy to get the request. But however, if I try to catch it, it always failed, it only succeed when I remove the proxy.
So I want to know how do you resolve this problem? could you help me.
Thanks.
For example is it .appx, .eappx, .appxbundle, or .eappxbundle?
How do I summon a package with this? It's not working with
'DisplayCatalogHandler dcathandler = new DisplayCatalogHandler(DCatEndpoint.Production, new Locale(Market.US, Lang.en, true));
'
-a, --authtoken Auth-token header value (e.g. "XBL3.0=123;xyz")
-m, --market (Default: US) Market (e.g. US)
-l, --lang (Default: en) Language (e.g. EN)
-e, --env (Default: Production) Environment (e.g. Production)
-t, --idtype (Default: ProductID) IdentifierType
-f, --devicefamily (Default: Desktop) Device Family (used for search)
--help Display this help screen.
--version Display version information.
command (pos. 0) Required. Command to execute
Available commands: packages, query, search, convert
id (pos. 1) Required. Id or Search-query
It happens when no "WUCategoryId" is returned in JSON for some apps. Example is GIMP - XPDM27W10192Q0 (https://apps.microsoft.com/store/detail/XPDM27W10192Q0)
Like WindowsCalculator_1.0.0.0.AppX or whatever it could be called.
Also it's AppX/EAppX not Appx, appx or eappx.
Works on Store.rg-adguard.net, not here.
G:\Applications\StoreLibrary\StoreLib.Cli\bin\Debug\net5.0>storelib.cli packages id 9P513P4MWC71 -f Desktop -t ProductID -l EN -m US
Changing the following in ProductDetails corrects JSON conversion exceptions when getting data back from the store:
// MP! was:
//public DateTimeOffset RevisionId { get; set; }
// MP! changed: To resolve JSON conversion exception.
// Type mapping was probably incorrect.
public string RevisionId { get; set; }
RevisionId does not sound like a DateTimeOffset value.
A declarative, efficient, and flexible JavaScript library for building user interfaces.
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google ❤️ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.