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

feat: add Winget manifest templates for Windows distribution#76

Merged
rianjs merged 12 commits intomainfrom
feat/winget-manifest
Jan 17, 2026
Merged

feat: add Winget manifest templates for Windows distribution#76
rianjs merged 12 commits intomainfrom
feat/winget-manifest

Conversation

@rianjs
Copy link
Collaborator

@rianjs rianjs commented Jan 17, 2026

Summary

Add Winget manifest templates to enable distribution via Windows Package Manager:

winget install OpenCLICollective.cfl

Manifest Structure

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

Installer Configuration

  • InstallerType: zip (our releases are zip archives)
  • NestedInstallerType: portable (standalone executable)
  • PortableCommandAlias: cfl (command users type)
  • Architectures: x64 and arm64

CI Testing

Added .github/workflows/test-winget.yml that validates manifest schema on Windows using winget validate.

We opted for schema validation only (not full install testing) because:

  • Schema validation catches YAML/manifest errors early
  • winget-pkgs CI handles URL accessibility, hash verification, and actual installation when we submit the manifest PR
  • Local install testing would require HTTP server setup (winget doesn't support file:// URLs)
  • Windows binary functionality is already tested by Chocolatey CI

Publishing Process

Winget manifests are submitted via PR to microsoft/winget-pkgs. See README for details. Issue #77 tracks the actual submission.

Template Placeholders

These manifests use 0.0.0 as a placeholder version. To publish:

  • Replace version numbers
  • Add real SHA256 checksums from checksums.txt

Also Updated

  • CLAUDE.md - added Winget to packaging section

Closes #72

Add Winget manifest files to enable distribution via Windows Package
Manager (`winget install OpenCLICollective.cfl`).

Manifest structure:
- Version manifest: package identifier and version
- Installer manifest: zip URLs for x64/arm64 with portable nested type
- Locale manifest: descriptions, tags, license info

These are templates with placeholder version (0.0.0). To publish:
1. Update version and checksums from a real release
2. Submit PR to microsoft/winget-pkgs repository

Fixes #72
rianjs added 11 commits January 17, 2026 05:29
winget validate parses all files in the directory as YAML manifests.
The README.md with markdown code fences causes YAML parsing errors
(backticks cannot start YAML tokens).
- Validate manifest schema with HTTPS placeholder URLs (required by winget)
- Test installation with local file:// URLs (for actual install verification)
- Use separate directories for each test phase
winget requires this setting to be enabled before using --manifest flag.
Also add --ignore-local-archive-malware-scan for local testing.
Local install testing requires HTTP server setup which is overengineered.
The actual install flow is validated by winget-pkgs CI when we submit
the manifest PR. Schema validation catches YAML/manifest errors early.
@rianjs rianjs mentioned this pull request Jan 17, 2026
4 tasks
@rianjs rianjs merged commit 9f28441 into main Jan 17, 2026
3 checks passed
@rianjs rianjs deleted the feat/winget-manifest branch January 17, 2026 11:03
Sign up for free to subscribe to this conversation on GitHub. Already have an account? Sign in.

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

Winget manifest and submission

1 participant