Files
ccextractor/packaging/README.md
Carlos Fernandez 353a37010d ci: Add winget and Chocolatey packaging workflows
Add automated package publishing for Windows package managers:

## Winget
- Initial manifest files for CCExtractor.CCExtractor
- Workflow to auto-submit PRs to microsoft/winget-pkgs on release

## Chocolatey
- Package files (nuspec, install/uninstall scripts)
- Workflow to build and push packages on release

## Setup Required
- WINGET_TOKEN secret (GitHub PAT with public_repo scope)
- CHOCOLATEY_API_KEY secret (from chocolatey.org account)

Closes #1308

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2025-12-26 18:19:11 +01:00

2.6 KiB

CCExtractor Packaging

This directory contains packaging configurations for Windows package managers.

Windows Package Manager (winget)

Initial Setup (One-time)

  1. Calculate MSI hash for the current release:

    certutil -hashfile CCExtractor.0.96.1.msi SHA256
    
  2. Update the manifest files in winget/ with the SHA256 hash

  3. Fork microsoft/winget-pkgs to the CCExtractor organization:

  4. Submit initial manifest via PR:

    • Clone your fork
    • Create directory: manifests/c/CCExtractor/CCExtractor/0.96.1/
    • Copy the three YAML files from winget/
    • Submit PR to microsoft/winget-pkgs
  5. Create GitHub token for automation:

    • Go to GitHub Settings > Developer settings > Personal access tokens > Tokens (classic)
    • Create token with public_repo scope
    • Add as secret WINGET_TOKEN in CCExtractor/ccextractor repository

Automated Updates

After the initial submission is merged, the publish_winget.yml workflow will automatically submit PRs for new releases.

Chocolatey

Initial Setup (One-time)

  1. Create Chocolatey account:

  2. Get API key:

  3. Add secret:

    • Add CHOCOLATEY_API_KEY secret to CCExtractor/ccextractor repository

Package Structure

chocolatey/
├── ccextractor.nuspec      # Package metadata
└── tools/
    ├── chocolateyInstall.ps1    # Installation script
    └── chocolateyUninstall.ps1  # Uninstallation script

Manual Testing

cd packaging/chocolatey

# Update version and checksum in files first, then:
choco pack ccextractor.nuspec

# Test locally
choco install ccextractor --source="'.'" --yes --force

# Verify
ccextractor --version

Automated Updates

The publish_chocolatey.yml workflow automatically:

  1. Downloads the MSI from the release
  2. Calculates the SHA256 checksum
  3. Updates the nuspec and install script
  4. Builds and tests the package
  5. Pushes to Chocolatey

Note: Chocolatey packages go through moderation before being publicly available.

Workflow Triggers

Both workflows trigger on:

  • Release published: Automatic publishing when a new release is created
  • Manual dispatch: Can be triggered manually with a specific tag

Secrets Required

Secret Purpose
WINGET_TOKEN GitHub PAT with public_repo scope for winget PRs
CHOCOLATEY_API_KEY Chocolatey API key for package uploads