Skip to content
This repository was archived by the owner on Feb 6, 2026. It is now read-only.
This repository was archived by the owner on Feb 6, 2026. It is now read-only.

Submit Winget package to microsoft/winget-pkgs #77

Closed

Description

@rianjs

Summary

The Winget manifest templates were created in #72 / #76, but haven't been submitted yet. This issue tracks the actual submission to microsoft/winget-pkgs.

Prerequisites

Steps to Submit

Option 1: Manual PR

  1. Get release info from GitHub:

    Version: X.Y.Z
    x64 URL: https://github.com/open-cli-collective/confluence-cli/releases/download/vX.Y.Z/cfl_X.Y.Z_windows_amd64.zip
    arm64 URL: https://github.com/open-cli-collective/confluence-cli/releases/download/vX.Y.Z/cfl_X.Y.Z_windows_arm64.zip
    

    Get SHA256 checksums from checksums.txt in the release.

  2. Update manifest templates:

    • Copy files from packaging/winget/
    • Replace 0.0.0 with actual version
    • Replace placeholder checksums with real SHA256 values
  3. Validate locally:

    winget validate --manifest <path-to-manifests>
  4. Fork microsoft/winget-pkgs

  5. Create folder structure:

    manifests/o/OpenCLICollective/cfl/X.Y.Z/
    ├── OpenCLICollective.cfl.yaml
    ├── OpenCLICollective.cfl.installer.yaml
    └── OpenCLICollective.cfl.locale.en-US.yaml
    
  6. Submit PR to microsoft/winget-pkgs

Option 2: Using wingetcreate

# Install
winget install Microsoft.WingetCreate

# Create/update manifest interactively
wingetcreate new <x64_url>

# Or update existing
wingetcreate update OpenCLICollective.cfl --version X.Y.Z --urls <x64_url> <arm64_url> --submit

After Approval

  • Add Winget installation instructions to README.md:
    ### Winget (Windows)
    
    ```powershell
    winget install OpenCLICollective.cfl
    
    

References

Activity

  1. rianjs commented on Jan 17, 2026

    @rianjs
    CollaboratorAuthor

    Implementation Plan

    Overview

    Create both manual and automated Winget submission workflows using wingetcreate.


    1. Manual Workflow: .github/workflows/winget-publish.yml

    For initial submission and retries.

    name: Publish to Winget
    
    on:
      workflow_dispatch:
        inputs:
          version:
            description: 'Version to publish (e.g., 0.9.9)'
            required: true
            type: string
    
    jobs:
      publish:
        runs-on: windows-latest
        steps:
          - name: Install wingetcreate
            shell: pwsh
            run: |
              iwr https://aka.ms/wingetcreate/latest -OutFile wingetcreate.exe
    
          - name: Validate release exists
            shell: pwsh
            env:
              GH_TOKEN: ${{ github.token }}
            run: |
              gh release view "v${{ inputs.version }}" --repo open-cli-collective/confluence-cli
              if ($LASTEXITCODE -ne 0) { exit 1 }
    
          - name: Submit to Winget
            shell: pwsh
            run: |
              $version = "${{ inputs.version }}"
              $x64 = "https://github.com/open-cli-collective/confluence-cli/releases/download/v$version/cfl_${version}_windows_amd64.zip"
              $arm64 = "https://github.com/open-cli-collective/confluence-cli/releases/download/v$version/cfl_${version}_windows_arm64.zip"
              
              ./wingetcreate.exe update OpenCLICollective.cfl --version $version --urls $x64 $arm64 --submit --token ${{ secrets.WINGET_GITHUB_TOKEN }}

    2. Add to Release Workflow: .github/workflows/release.yml

    Add a winget job after GoReleaser:

      winget:
        needs: goreleaser
        runs-on: windows-latest
        steps:
          - name: Install wingetcreate
            shell: pwsh
            run: iwr https://aka.ms/wingetcreate/latest -OutFile wingetcreate.exe
    
          - name: Submit to Winget
            shell: pwsh
            run: |
              $version = "${{ github.ref_name }}".TrimStart('v')
              $x64 = "https://github.com/open-cli-collective/confluence-cli/releases/download/${{ github.ref_name }}/cfl_${version}_windows_amd64.zip"
              $arm64 = "https://github.com/open-cli-collective/confluence-cli/releases/download/${{ github.ref_name }}/cfl_${version}_windows_arm64.zip"
              
              ./wingetcreate.exe update OpenCLICollective.cfl --version $version --urls $x64 $arm64 --submit --token ${{ secrets.WINGET_GITHUB_TOKEN }}

    3. Update Documentation

    CLAUDE.md - Update packaging section:

    - **Winget**: Automated via release workflow, requires `WINGET_GITHUB_TOKEN` secret (PAT with `public_repo` scope)

    packaging/winget/README.md - Add automation section similar to Chocolatey README.


    Required Setup

    1. Create GitHub PAT with public_repo scope at https://github.com/settings/tokens
    2. Add as org/repo secret named WINGET_GITHUB_TOKEN

    Files Changed

    File Change
    .github/workflows/winget-publish.yml New manual workflow
    .github/workflows/release.yml Add winget job
    CLAUDE.md Update Winget entry in packaging section
    packaging/winget/README.md Add automation section

    First Submission

    After merging:

    1. Add WINGET_GITHUB_TOKEN secret
    2. Go to Actions → "Publish to Winget"
    3. Enter 0.9.9 as version
    4. Workflow creates PR to microsoft/winget-pkgs
    5. Wait for Microsoft's automated validation + merge
  2. added 2 commits that reference this issue on Jan 17, 2026
    c8cf737
    2e6826a
  3. rianjs commented on Jan 17, 2026

    @rianjs
    CollaboratorAuthor

    Follow-up: Improve Winget Manifest Validation

    Based on the microsoft/winget-pkgs PR checklist, we should improve our validation:

    Changes

    1. Update schema version from 1.6.0 → 1.10.0

      • packaging/winget/OpenCLICollective.cfl.yaml
      • packaging/winget/OpenCLICollective.cfl.installer.yaml
      • packaging/winget/OpenCLICollective.cfl.locale.en-US.yaml
      • .github/workflows/test-winget.yml
    2. Update test workflow to validate actual templates

      • Instead of hardcoded manifests, read our actual template files and substitute placeholders
    3. Add validation step to publish workflows

      • Run winget validate --manifest before submitting to catch issues early

    Files to Modify

    File Change
    packaging/winget/*.yaml Update ManifestVersion to 1.10.0
    .github/workflows/test-winget.yml Use actual templates instead of hardcoded
    .github/workflows/winget-publish.yml Add validation before submit
    .github/workflows/release.yml Add validation before submit (winget job)
  4. reopened this on Jan 17, 2026
  5. rianjs commented on Jan 17, 2026

    @rianjs
    CollaboratorAuthor
  6. rianjs commented on Jan 23, 2026

    @rianjs
    CollaboratorAuthor

    winget distribution ✅

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

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions