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.

Winget manifest and submission #72

Closed

Description

@rianjs

Summary

Create a Winget manifest to distribute confluence-cli to Windows users via winget install confluence-cli.

Prerequisites

Manifest Structure

Winget manifests require multiple YAML files:

manifests/o/OpenCLICollective/confluence-cli/X.Y.Z/
├── OpenCLICollective.confluence-cli.installer.yaml
├── OpenCLICollective.confluence-cli.locale.en-US.yaml
└── OpenCLICollective.confluence-cli.yaml

Requirements

  • Configure as portable installer type (single binary, no installer wizard)
  • Support both x64 and ARM64 architectures
  • Download from GitHub Releases URLs
  • Uninstall and upgrade must work correctly

Package Identity

  • Package identifier: OpenCLICollective.confluence-cli (or similar)
  • Binary name: cfl.exe

Deliverables

  • Installer manifest YAML (architectures, URLs, checksums)
  • Default locale manifest YAML (description, license, etc.)
  • Version manifest YAML
  • Documentation for PR submission to microsoft/winget-pkgs

Publishing Process

Winget packages are submitted via PR to microsoft/winget-pkgs. Consider using wingetcreate tool to generate manifests.

References

Activity

  1. rianjs commented on Jan 17, 2026

    @rianjs
    CollaboratorAuthor

    Implementation Plan

    Package Location

    packaging/winget/
    ├── OpenCLICollective.cfl.yaml              # Version manifest
    ├── OpenCLICollective.cfl.installer.yaml    # Installer manifest
    ├── OpenCLICollective.cfl.locale.en-US.yaml # Locale manifest
    └── README.md                               # Publishing instructions
    

    Manifest Details

    1. Version Manifest (OpenCLICollective.cfl.yaml)

    PackageIdentifier: OpenCLICollective.cfl
    PackageVersion: 0.0.0  # Placeholder, update per release
    DefaultLocale: en-US
    ManifestType: version
    ManifestVersion: 1.6.0

    2. Installer Manifest (OpenCLICollective.cfl.installer.yaml)

    Uses InstallerType: zip with NestedInstallerType: portable for the single binary.

    PackageIdentifier: OpenCLICollective.cfl
    PackageVersion: 0.0.0
    InstallerType: zip
    NestedInstallerType: portable
    NestedInstallerFiles:
      - RelativeFilePath: cfl.exe
        PortableCommandAlias: cfl
    Installers:
      - Architecture: x64
        InstallerUrl: https://github.com/open-cli-collective/confluence-cli/releases/download/v0.0.0/cfl_0.0.0_windows_amd64.zip
        InstallerSha256: <placeholder>
      - Architecture: arm64
        InstallerUrl: https://github.com/open-cli-collective/confluence-cli/releases/download/v0.0.0/cfl_0.0.0_windows_arm64.zip
        InstallerSha256: <placeholder>
    ManifestType: installer
    ManifestVersion: 1.6.0

    Key points:

    • NestedInstallerFiles.RelativeFilePath = cfl.exe (binary is at root of zip)
    • PortableCommandAlias = cfl (command users type)
    • Separate entries for x64 and arm64 architectures

    3. Locale Manifest (OpenCLICollective.cfl.locale.en-US.yaml)

    PackageIdentifier: OpenCLICollective.cfl
    PackageVersion: 0.0.0
    PackageLocale: en-US
    Publisher: Open CLI Collective
    PublisherUrl: https://github.com/open-cli-collective
    PackageName: Confluence CLI
    PackageUrl: https://github.com/open-cli-collective/confluence-cli
    License: MIT
    LicenseUrl: https://github.com/open-cli-collective/confluence-cli/blob/main/LICENSE
    ShortDescription: Command-line interface for Atlassian Confluence Cloud
    Description: A CLI tool for managing Confluence pages with markdown-first workflow. Supports page CRUD, attachments, search, and bidirectional markdown conversion.
    Tags:
      - confluence
      - atlassian
      - cli
      - markdown
      - wiki
    ManifestType: defaultLocale
    ManifestVersion: 1.6.0

    Publishing Process (README.md)

    1. Update manifests with real version and checksums from release
    2. Validate locally using winget validate --manifest <path>
    3. Fork microsoft/winget-pkgs
    4. Create folder: manifests/o/OpenCLICollective/cfl/<version>/
    5. Copy manifests into the folder
    6. Submit PR to microsoft/winget-pkgs

    Alternative: Use wingetcreate:

    wingetcreate new https://github.com/open-cli-collective/confluence-cli/releases/download/v0.0.0/cfl_0.0.0_windows_amd64.zip

    Verification

    The zip structure from GoReleaser:

    cfl_X.Y.Z_windows_amd64.zip
    ├── cfl.exe
    ├── LICENSE
    └── README.md
    

    Only cfl.exe needs to be referenced in NestedInstallerFiles - Winget will extract and create the command alias.

  2. added a commit that references this issue on Jan 17, 2026
    8d579e2
  3. rianjs commented on Jan 17, 2026

    @rianjs
    CollaboratorAuthor

    Implementation Complete

    Added Winget manifest templates in PR #76. Here's where we landed:

    What's included

    • Three manifest files (version, installer, locale) following winget schema 1.6.0
    • Support for both x64 and arm64 architectures
    • Portable installer type with cfl command alias
    • README with publishing instructions

    CI approach

    We went with schema validation only rather than full install/uninstall testing. Here's why:

    1. Schema validation catches our errors - YAML syntax, missing required fields, malformed URL patterns

    2. winget-pkgs CI handles the rest - When we submit a PR to microsoft/winget-pkgs, their automation:

      • Verifies installer URLs are accessible
      • Downloads and verifies SHA256 hashes
      • Installs in a Windows VM
      • Runs security scanning
    3. Local install testing is impractical - winget's --manifest flag doesn't support file:// URLs, requiring an HTTP server setup which is overengineered for what we need

    4. Windows binary already tested - The Chocolatey CI builds and runs cfl.exe on Windows, so we know the binary works

    Next step

    Issue #77 tracks the actual submission to microsoft/winget-pkgs once we have a release to publish.

  4. added a commit that references this issue on Jan 17, 2026
    9f28441
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