Winget-cli: Multiple Architectures in one manifest

Created on 12 May 2020  路  3Comments  路  Source: microsoft/winget-cli

Description of the new feature/enhancement

The client should support manifests with multiple architectures.

Proposed technical implementation details (optional)

I should be able to have x86, x64, 32bit, 64bit, and ARM installers available from the same manifest (assuming the version of the package is the same). The client should chose the appropriate installer based on the machine's architecture.

Issue-Feature Size-XL

Most helpful comment

The client should also be able to determine packages that are not supported with the current architecture and not display them to the user.

All 3 comments

Here is the Docker model for that:

PS C:\Users\rich> docker manifest inspect mcr.microsoft.com/dotnet/core/sdk:3.1
{
   "schemaVersion": 2,
   "mediaType": "application/vnd.docker.distribution.manifest.list.v2+json",
   "manifests": [
      {
         "mediaType": "application/vnd.docker.distribution.manifest.v2+json",
         "size": 1800,
         "digest": "sha256:d706e0545b75615ecd864c6af237cc1fc2ca9001ed25cdd84b83fdb3923e9e54",
         "platform": {
            "architecture": "amd64",
            "os": "linux"
         }
      },
      {
         "mediaType": "application/vnd.docker.distribution.manifest.v2+json",
         "size": 1800,
         "digest": "sha256:7f99df3b62730033e2fa9fb1a4e0f560c5156892e073c90a2ddec61545a823af",
         "platform": {
            "architecture": "arm",
            "os": "linux",
            "variant": "v7"
         }
      },
      {
         "mediaType": "application/vnd.docker.distribution.manifest.v2+json",
         "size": 1800,
         "digest": "sha256:18cd6836407c8274a9abdacdfce69fcb7ef0cfda8690b674fe54447da4c4f1ab",
         "platform": {
            "architecture": "arm64",
            "os": "linux",
            "variant": "v8"
         }
      },
      {
         "mediaType": "application/vnd.docker.distribution.manifest.v2+json",
         "size": 2173,
         "digest": "sha256:37ef3691ed2fe12dc94869bfc93e5935aee994d1b5c0c8904dc875bc25481a32",
         "platform": {
            "architecture": "amd64",
            "os": "windows",
            "os.version": "10.0.17763.1158"
         }
      },
      {
         "mediaType": "application/vnd.docker.distribution.manifest.v2+json",
         "size": 1963,
         "digest": "sha256:0d9b44c67fc39d07061ee9cdbc44e5297be445d10a224bf25ed8c5b13d8ec897",
         "platform": {
            "architecture": "arm",
            "os": "windows",
            "os.version": "10.0.17763.1158"
         }
      },
      {
         "mediaType": "application/vnd.docker.distribution.manifest.v2+json",
         "size": 2174,
         "digest": "sha256:72a6096638543d3306ab42ab0344fd255775d169b5c2b3beb0f0c8e7b2430c54",
         "platform": {
            "architecture": "amd64",
            "os": "windows",
            "os.version": "10.0.18362.778"
         }
      },
      {
         "mediaType": "application/vnd.docker.distribution.manifest.v2+json",
         "size": 2174,
         "digest": "sha256:1ac90924b883e3c639f9e001a02618d2adda9711f1896736c1b64cc8bdc5743e",
         "platform": {
            "architecture": "amd64",
            "os": "windows",
            "os.version": "10.0.18363.778"
         }
      }
   ]
}

The client should also be able to determine packages that are not supported with the current architecture and not display them to the user.

The client should also be able to determine packages that are not supported with the current architecture and not display them to the user.

In case of Windows on ARM, it would be great if x86 apps were also listed (maybe with some warning label).

Was this page helpful?
0 / 5 - 0 ratings