Skip to content

[windows-11-arm] - Please install winget #14083

Closed as not planned
Closed as not planned

Description

@matthew-brett

Type of issue

  • Error when running a workflow.
  • Request for additional tools or software for an existing image.
  • Request for a new image, Linux or Windows.
  • Other

winget is not currently installed on the image, making it harder to install other packages in workflows.

Various standard tools to install winget in the image, such as winget-install do not work correctly.

In case it's helpful, I have been using this script to install the latest preview version.

Activity

  1. changed the title [-]Please install winget[/-] [+][windows-11-arm] - Please install winget[/+] on May 7, 2025
  2. krishnakumar4a4 commented on Jul 15, 2025

    @krishnakumar4a4

    I’m unable to get the Winget PowerShell modules to work on the ARM64 runner. I’ve opened an issue on the winget-cli repo: microsoft/winget-cli#5590. Has anyone else encountered this issue?

    Thanks, @matthew-brett — your script has been a very helpful reference!

  3. duaneking commented on Dec 5, 2025

    @duaneking

    I just ran into this issue because I'm unable to install needed development tools for a dedicated CI pipeline as I am not able to use Winget And I'm currently looking for a solution to install the needed dev stuff.

  4. wmmc88 commented on Dec 23, 2025

    @wmmc88

    I’m unable to get the Winget PowerShell modules to work on the ARM64 runner. I’ve opened an issue on the winget-cli repo: microsoft/winget-cli#5590. Has anyone else encountered this issue?

    Thanks, @matthew-brett — your script has been a very helpful reference!

    Since that winget pwsh module issue has been resolved, I think this may be a more reliable workaround to get winget on these arm images:

          - name: Install Winget PowerShell Module
            shell: pwsh
            run: Install-Module -Name Microsoft.WinGet.Client -Repository PSGallery -Force
    
          - name: Install Winget
            if: matrix.runner.name == 'windows-11-arm'
            shell: pwsh
            run: |
              Repair-WinGetPackageManager -Latest -Force
              Write-Output "Winget Version: $(winget --version)"
    
  5. the-phinet commented on Jun 27, 2026

    @the-phinet

    In order to get winget working properly for our project, this is what we had to do (adapted from the above comment):

    - name: Install Winget
      if: inputs.os == 'windows-11-arm'
      shell: pwsh
      run: |
        Install-Module -Name Microsoft.WinGet.Client -Repository PSGallery -Force
        Repair-WinGetPackageManager -Latest -Force
        Write-Output "Winget Version: $(winget --version)"
        "C:\Users\runneradmin\AppData\Local\Microsoft\WinGet\Links" | Out-File -FilePath $env:GITHUB_PATH -Encoding utf8 -Append
    
  6. v-davit-ioramashvili commented on Aug 17, 2026

    @v-davit-ioramashvili
    Contributor

    Hi @matthew-brett, thanks for the request.

    We don't plan to add winget to the windows-11-arm image at this time, so we'll be closing this as won't-fix. winget (App Installer) is a per-user, Store-delivered component that doesn't bootstrap reliably in the non-interactive CI context, which is the main reason we keep it off the hosted images rather than shipping a version that may be broken or only partially functional out of the box.

    On the workaround side: the approach you're already using — pulling the winget release bundle directly from the winget-cli releases and installing the arm64 packages — is a good one, and on ARM64 it's currently the more dependable route.

    The "official" alternative is Microsoft's Microsoft.WinGet.Client PowerShell module:

    - name: Install winget
      shell: pwsh
      run: |
        Install-PackageProvider -Name NuGet -Force | Out-Null
        Install-Module -Name Microsoft.WinGet.Client -Force -Repository PSGallery
        Repair-WinGetPackageManager
        winget --version

    One caveat if you go this way: Repair-WinGetPackageManager has had ARM64 architecture-selection bugs where it installs the ARM (32-bit) VCLibs instead of ARM64 and fails (see winget-cli #5020 / #5482). Make sure you're on the latest module version, and given that history your direct-download script is the safer default for now.

    Closing this out — happy to reopen the discussion if ecosystem support for winget in headless/ARM environments improves.

  7. the-phinet commented on Aug 17, 2026

    @the-phinet

    It would be nice if you would reconsider the status of this request. The Microsoft.WinGet.Client method often fails due to rate limiting. I assume this happens because multiple projects are doing this from github's runners. This causes a fair bit of disruption in our team.

  8. matthew-brett commented on Aug 17, 2026

    @matthew-brett
    Author

    Hi @matthew-brett, thanks for the request.

    We don't plan to add winget to the windows-11-arm image at this time, so we'll be closing this as won't-fix. winget (App Installer) is a per-user, Store-delivered component that doesn't bootstrap reliably in the non-interactive CI context, which is the main reason we keep it off the hosted images rather than shipping a version that may be broken or only partially functional out of the box.

    Just to check I understand - the problem here is that the winget installation is unreliable on the non-interactive CI context, so you don't want to do it at image build time? But doesn't that throw the problem over to us - in that we face that unreliability every time we run our CI - rather than you having this problem when you build the images? I mean - isn't this exactly the kind of problem that the images should take on, rather than the image users?

  9. v-davit-ioramashvili commented on Aug 25, 2026

    @v-davit-ioramashvili
    Contributor

    Thanks all for the follow-ups asking us to reconsider — we did take another look, and wanted to explain the reasoning rather than just leave it closed.

    runner-images only preinstalls software that is consistently reproducible and maintainable across image refreshes. On Windows ARM, winget installation/servicing — the App Installer dependency chain, update behavior, and ARM-specific edge cases — has not met the same stability bar we have on the mature x64 Windows image families yet. Since we can't guarantee consistent behavior for all workflows, this stays not planned for now.

    To be clear, this is specific to the current ARM hosted image state, not a general rejection of winget. If the ARM support paths become fully reliable in CI (with repeatable provisioning and validation), we're open to revisiting it.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Type

No type

Projects

No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions