winget-cli icon indicating copy to clipboard operation
winget-cli copied to clipboard

winget install julia -s msstore wants to install other software

Open LukasBarner opened this issue 8 months ago • 8 comments

Brief description of your issue

Running winget install julia -s msstore seems to install a random other software "Julian Date Selector [9NSGP4VDNW0R] Version Unknown".

There seems to have been a similar issue in the past (https://github.com/microsoft/winget-cli/issues/2005 or https://github.com/JuliaLang/juliaup/issues/258).

Steps to reproduce

Reproduction seems a bit tricky, (see https://github.com/JuliaLang/juliaup/issues/1191), but I have reproduced this on two different machines now.

For the full context, see below (unfortunately in German):

PS C:\Users\usr> winget install julia -s msstore
Die Quelle "msstore" erfordert, dass Sie die folgenden Vereinbarungen vor der Verwendung anzeigen.
Terms of Transaction: https://aka.ms/microsoft-store-terms-of-transaction
Die Quelle erfordert, dass die geografische Region des aktuellen Computers aus 2 Buchstaben an den Back-End-Dienst gesendet wird, damit er ordnungsgemäß funktioniert (z. B. „US“).

Stimmen Sie allen Nutzungsbedingungen der Quelle zu?
[Y] Ja  [N] Nein: y
Gefunden Julian Date Selector [9NSGP4VDNW0R] Version Unknown
Dieses Paket wird über den Microsoft Store bereitgestellt. “winget” muss das Paket möglicherweise im Auftrag des aktuellen Benutzers aus dem Microsoft Store abrufen.
Vereinbarungen für Julian Date Selector [9NSGP4VDNW0R] Version Unknown
Version: Unknown
Herausgeber: James Flippin
Herausgeber-URL: https://www.flippintechnologies.com/calendardatetojuliandateselector
Herausgeber-Support-URL: mailto:[email protected]
Lizenz: ms-windows-store://pdp/?ProductId=9NSGP4VDNW0R
Datenschutz-URL: https://github.com/TexasPaladin/GeneralLIcenseInfo/blob/main/LicenseandPrivacystatement.txt
Vereinbarungen:
  Category: Business
  Pricing: Free
  Free Trial: No
  Terms of Transaction: https://aka.ms/microsoft-store-terms-of-transaction
  Seizure Warning: https://aka.ms/microsoft-store-seizure-warning
  Store License Terms: https://aka.ms/microsoft-store-license

Der Herausgeber verlangt, dass Sie die oben genannten Informationen anzeigen und den Vereinbarungen vor der Installation zustimmen.
Stimmen Sie den Bedingungen zu?
[Y] Ja  [N] Nein: n
Paketvereinbarungen wurden nicht akzeptiert. Der Vorgang wurde abgebrochen.
PS C:\Users\usr> winget --info
Windows-Paket-Manager v1.10.340
Copyright (c) Microsoft Corporation. Alle Rechte vorbehalten.

Windows: Windows.Desktop v10.0.26100.3476
Systemarchitektur: X64
Paket: Microsoft.DesktopAppInstaller v1.25.340.0
[...]

Expected behavior

I would have expected this to point to Juliaup - Julia version manager (https://github.com/JuliaLang/juliaup).

Actual behavior

Instead, it suggests to install "Julian Date Selector [9NSGP4VDNW0R] Version Unknown"

Environment

Windows-Paket-Manager v1.10.340
Windows: Windows.Desktop v10.0.26100.3476
Systemarchitektur: X64
Paket: Microsoft.DesktopAppInstaller v1.25.340.0

LukasBarner avatar Apr 01 '25 19:04 LukasBarner

We've found some similar issues:

  • #2005 , similarity score: 86%

If any of the above are duplicates, please consider closing this issue out and adding additional context in the original issue.

Note: You can give me feedback by 👍 or 👎 this comment.

similar-issues-ai[bot] avatar Apr 01 '25 19:04 similar-issues-ai[bot]

That is the same problem, but it was closed as fixed and seems to have regressed again, so another issue is required.

StefanKarpinski avatar Apr 01 '25 19:04 StefanKarpinski

I'm not able to reproduce the issue, I get the appropriate response from the store, just like the other users in the other issue you linked.

PS E:\winget-pkgs> winget install julia -s msstore
Found Julia [9NJNWW8PVKMN] Version Unknown
This package is provided through Microsoft Store. winget may need to acquire the package from Microsoft Store on behalf of the current user.
Agreements for Julia [9NJNWW8PVKMN] Version Unknown
Version: Unknown
Publisher: Julia Computing, Inc.
Publisher Url: https://julialang.org/
License: ms-windows-store://pdp/?ProductId=9NJNWW8PVKMN
Privacy Url: https://juliacomputing.com/privacy/
Agreements:
  Category: Developer tools
  Pricing: Free
  Free Trial: No
  Terms of Transaction: https://aka.ms/microsoft-store-terms-of-transaction
  Seizure Warning: https://aka.ms/microsoft-store-seizure-warning
  Store License Terms: https://aka.ms/microsoft-store-license

The publisher requires that you view the above information and accept the agreements before installing.
Do you agree to the terms?
[Y] Yes  [N] No: n
Package agreements were not agreed to. Operation cancelled.
PS E:\winget-pkgs> winget -v
v1.10.340

What seems to be happening is that the Microsoft Store is not returning the same results to WinGet for all users. This could happen for any number of reasons - the locale of your machine, configured store policies, the region you're connecting from, etc. When the Microsoft Store APIs cannot find an exact match for a query, it will return the first package that the Microsoft Store thinks is closest to what the user wanted. WinGet (incorrectly) treats this as a strong match for the users query, precisely because only one response was returned. There are other bugs in the backlog with this same issue, and they depend on the Microsoft Store updating their APIs to not return any packages if there is not a strong enough match.

The best way to resolve this quickly would be for the maintainers of Julia to update their install instructions to use the store ID 9NJNWW8PVKMN instead of the name Julia. This will ensure that either the expected app is found, or that no results are returned. I would recommend winget install --id 9NJNWW8PVKMN --source msstore.

In order to better diagnose the issue, if you can provide the logs from winget install julia -s msstore --verbose-logs --logs when the issue occurs, it would help to confirm the response of the Microsoft Store APIs

Trenly avatar Apr 01 '25 20:04 Trenly

How should I best provide the log file? It is pretty large. Should I still paste it here?

LukasBarner avatar Apr 01 '25 20:04 LukasBarner

I did some further investigation, and this is 100% due to the Microsoft Store APIs returning different responses. Here is what I found:

When the market is set to DE - I'm able to reproduce the issue based on the response from the store:

Trenly@M5423133 MINGW64 ~
$ curl --url https://storeedgefd.dsx.mp.microsoft.com/v9.0/manifestSearch -H 'Content-Type: application/json'  \
> -H 'Accept: application/json' \
> -H 'Connection: keep-alive' \
> -A 'PostmanRuntime/7.43.0' \
> --data '{"Filters":[{"PackageMatchField":"Market","RequestMatch":{"KeyWord":"DE","MatchType":"CaseInsensitive"}}],"Inclusions":[{"PackageMatchField":"PackageFamilyName","RequestMatch":{"KeyWord":"julia","MatchType":"Exact"}},{"PackageMatchField":"ProductCode","RequestMatch":{"KeyWord":"julia","MatchType":"Exact"}},{"PackageMatchField":"PackageIdentifier","RequestMatch":{"KeyWord":"julia","MatchType":"CaseInsensitive"}},{"PackageMatchField":"PackageName","RequestMatch":{"KeyWord":"julia","MatchType":"CaseInsensitive"}},{"PackageMatchField":"Moniker","RequestMatch":{"KeyWord":"julia","MatchType":"CaseInsensitive"}}]}'

{"$type":"Microsoft.Marketplace.Storefront.StoreEdgeFD.BusinessLogic.Response.ManifestSearch.ManifestSearchResponse, StoreEdgeFD","Data":[{"$type":"Microsoft.Marketplace.Storefront.StoreEdgeFD.BusinessLogic.Response.ManifestSearch.ManifestSearchData, StoreEdgeFD","PackageIdentifier":"9NSGP4VDNW0R","PackageName":"Julian Date Selector","Publisher":"James Flippin","Versions":[{"$type":"Microsoft.Marketplace.Storefront.StoreEdgeFD.BusinessLogic.Response.ManifestSearch.ManifestSearchVersion, StoreEdgeFD","PackageVersion":"Unknown","PackageFamilyNames":["41612JamesFlippin.JulianDateSelector_xbrk030yzqvb4"]}]}]}

When the market is set to US - I get the expected response:

Trenly@M5423133 MINGW64 ~
$ curl --url https://storeedgefd.dsx.mp.microsoft.com/v9.0/manifestSearch -H 'Content-Type: application/json'  \
> -H 'Accept: application/json' \
> -H 'Connection: keep-alive' \
> -A 'PostmanRuntime/7.43.0' \
> --data '{"Filters":[{"PackageMatchField":"Market","RequestMatch":{"KeyWord":"US","MatchType":"CaseInsensitive"}}],"Inclusions":[{"PackageMatchField":"PackageFamilyName","RequestMatch":{"KeyWord":"julia","MatchType":"Exact"}},{"PackageMatchField":"ProductCode","RequestMatch":{"KeyWord":"julia","MatchType":"Exact"}},{"PackageMatchField":"PackageIdentifier","RequestMatch":{"KeyWord":"julia","MatchType":"CaseInsensitive"}},{"PackageMatchField":"PackageName","RequestMatch":{"KeyWord":"julia","MatchType":"CaseInsensitive"}},{"PackageMatchField":"Moniker","RequestMatch":{"KeyWord":"julia","MatchType":"CaseInsensitive"}}]}'

{"$type":"Microsoft.Marketplace.Storefront.StoreEdgeFD.BusinessLogic.Response.ManifestSearch.ManifestSearchResponse, StoreEdgeFD","Data":[{"$type":"Microsoft.Marketplace.Storefront.StoreEdgeFD.BusinessLogic.Response.ManifestSearch.ManifestSearchData, StoreEdgeFD","PackageIdentifier":"9NJNWW8PVKMN","PackageName":"Julia","Publisher":"Julia Computing, Inc.","Versions":[{"$type":"Microsoft.Marketplace.Storefront.StoreEdgeFD.BusinessLogic.Response.ManifestSearch.ManifestSearchVersion, StoreEdgeFD","PackageVersion":"Unknown","PackageFamilyNames":["JuliaComputingInc.Julia_b0ra4bp6jsp6c"]}]}]}

Note that the only difference between the two curl commands is the "KeyWord":"DE" vs "KeyWord":"US" for the Market field

Trenly avatar Apr 01 '25 21:04 Trenly

How should I best provide the log file? It is pretty large. Should I still paste it here?

You should be able to just upload the file by dragging it onto the comment box

Trenly avatar Apr 01 '25 21:04 Trenly

WinGet-2025-04-02-13-39-45.646.log This is the log from running winget install julia -s msstore --verbose-logs --logs.

LukasBarner avatar Apr 02 '25 11:04 LukasBarner

Thanks! That confirms the issue is the DE market and the Microsoft Store endpoints.

2025-04-02 13:39:52.045 [REPO] Sending http POST request to: https://storeedgefd.dsx.mp.microsoft.com/v9.0/manifestSearch
2025-04-02 13:39:52.045 [REPO] Http POST request details:
POST / HTTP/1.1

Content-Length: 614

Content-Type: application/json

User-Agent: winget-cli WindowsPackageManager/1.10.340 DesktopAppInstaller/Microsoft.DesktopAppInstaller v1.25.340.0

Version: 1.6.0

{"Filters":[{"PackageMatchField":"Market","RequestMatch":{"KeyWord":"DE","MatchType":"CaseInsensitive"}}],"Inclusions":[{"PackageMatchField":"PackageFamilyName","RequestMatch":{"KeyWord":"julia","MatchType":"Exact"}},{"PackageMatchField":"ProductCode","RequestMatch":{"KeyWord":"julia","MatchType":"Exact"}},{"PackageMatchField":"PackageIdentifier","RequestMatch":{"KeyWord":"julia","MatchType":"CaseInsensitive"}},{"PackageMatchField":"PackageName","RequestMatch":{"KeyWord":"julia","MatchType":"CaseInsensitive"}},{"PackageMatchField":"Moniker","RequestMatch":{"KeyWord":"julia","MatchType":"CaseInsensitive"}}]}
2025-04-02 13:39:52.059 [REPO] Response status: 200
2025-04-02 13:39:52.059 [REPO] Response details:
HTTP/1.1 200 OK

# Truncated for readability

{"$type":"Microsoft.Marketplace.Storefront.StoreEdgeFD.BusinessLogic.Response.ManifestSearch.ManifestSearchResponse, StoreEdgeFD","Data":[{"$type":"Microsoft.Marketplace.Storefront.StoreEdgeFD.BusinessLogic.Response.ManifestSearch.ManifestSearchData, StoreEdgeFD","PackageIdentifier":"9NSGP4VDNW0R","PackageName":"Julian Date Selector","Publisher":"James Flippin","Versions":[{"$type":"Microsoft.Marketplace.Storefront.StoreEdgeFD.BusinessLogic.Response.ManifestSearch.ManifestSearchVersion, StoreEdgeFD","PackageVersion":"Unknown","PackageFamilyNames":["41612JamesFlippin.JulianDateSelector_xbrk030yzqvb4"]}]}]}

Trenly avatar Apr 02 '25 12:04 Trenly