https://github.com/russellbanks/Komac
The Community Manifest Creator for WinGet
https://github.com/russellbanks/Komac
rust winget winget-cli winget-pkgs
Last synced: 2 months ago
JSON representation
The Community Manifest Creator for WinGet
- Host: GitHub
- URL: https://github.com/russellbanks/Komac
- Owner: russellbanks
- License: gpl-3.0
- Created: 2022-11-01T00:55:35.000Z (almost 3 years ago)
- Default Branch: main
- Last Pushed: 2025-07-26T21:00:46.000Z (2 months ago)
- Last Synced: 2025-07-27T00:30:55.278Z (2 months ago)
- Topics: rust, winget, winget-cli, winget-pkgs
- Language: Rust
- Homepage:
- Size: 11.9 MB
- Stars: 300
- Watchers: 6
- Forks: 26
- Open Issues: 41
-
Metadata Files:
- Readme: README.md
- Contributing: CONTRIBUTING.md
- Funding: .github/FUNDING.yml
- License: LICENSE.md
- Code of conduct: CODE_OF_CONDUCT.md
- Codeowners: .github/CODEOWNERS
Awesome Lists containing this project
- jimsghstars - russellbanks/Komac - The Community Manifest Creator for WinGet (Rust)
README
![]()
Komac: Smart Manifest Automation for WinGet[](https://github.com/russellbanks/komac/releases/latest)
[](https://github.com/russellbanks/komac/actions)
[](https://github.com/russellbanks/Komac/issues)
[](https://github.com/russellbanks/Komac/blob/main/LICENSE.md)[](https://crates.io/crates/komac)
[](https://crates.io/crates/komac)
[](https://github.com/russellbanks/Komac/blob/main/Cargo.toml)
A fast, intelligent CLI to create and submit WinGet manifests.
Think: automation, deep installer analysis, and zero YAML wrangling.
![]()
## ⚡ Quick start
```bash
# 1. Install komac
winget install komac
# 2. Set your GitHub token
komac token add
# 3. Update a package
komac update Package.Identifier --version 1.2.3 --urls https://example.com/installer.exe
```## 🎯 Features
- 🔄 Advanced installer analysis
- [Inno Setup](https://jrsoftware.org/isinfo.php)
- [Nullsoft Scriptable Install System](https://nsis.sourceforge.io)
- [MSI](https://learn.microsoft.com/windows/win32/msi/windows-installer-portal)
- [Burn](https://docs.firegiant.com/wix/tools/burn/)
- 🌍 Cross-platform support (Windows, Linux, macOS)## Installation
Komac is cross-platform and binaries are built for Windows, Linux, and macOS.
### All platforms
If you have cargo installed, you can compile Rust for any platform:
```bash
cargo install --locked komac
```Komac also supports [cargo-binstall](https://github.com/cargo-bins/cargo-binstall):
```bash
cargo binstall komac
```#### Nightly
Nightly releases that are built on every commit are
available [here](https://github.com/russellbanks/Komac/releases/tag/nightly). These are useful for debugging or if you
want the latest features and fixes.### Windows
Both portable EXEs and installers are available from the [releases](https://github.com/russellbanks/Komac/releases).
#### WinGet
```bash
winget install komac
```#### Scoop
```bash
scoop install komac
```### Linux
Portable binaries are available from the [releases](https://github.com/russellbanks/Komac/releases).
Debian (`.deb`)and Red Hat (`.rpm`) installers are also available.### macOS
Portable binaries for macOS are available from the [releases](https://github.com/russellbanks/Komac/releases).
#### Homebrew
```bash
brew install russellbanks/tap/komac
```## GitHub Token Setup
komac needs a classic GitHub token to submit PRs to `winget-pkgs`.
This should be a classic token with the `public_repo` scope.

Adding to komac:
```bash
komac token add
```Why not fine-grained tokens?
Whilst Komac can fully create manifests and commit with a fine-grained token, it fails to create a pull request to
winget-pkgs. This may change as fine-grained tokens improve.
See https://github.com/russellbanks/Komac/issues/310.## Commands
Full Command List
| Command | Description | Usage |
|----------------|-----------------------------------------------------------------------------------------------------|----------------------------|
| New | Create a package from scratch | `new` |
| Update | Update a pre-existing package in winget-pkgs | `update` |
| Remove | Remove a version from winget-pkgs | `remove` |
| Sync Fork | Syncs your fork of winget-pkgs to [microsoft/winget-pkgs](https://github.com/microsoft/winget-pkgs) | `sync-fork`, `sync` |
| Branch Cleanup | Deletes branches that have had a merged or closed pull request to winget-pkgs | `cleanup` |
| List Versions | Lists all the versions for a given package | `list-versions`, `list` |
| Analyse | Analyses a file and outputs information about it. Useful for debugging | `analyse` |
| Token update | Update stored GitHub OAuth token | `token update` |
| Token remove | Delete stored GitHub OAuth token | `token remove` |
| Complete | Outputs an autocompletion script for the given shell | `complete`, `autocomplete` |### komac new
Creates a new package from scratch.
```bash
komac new
```
![]()
### komac update
Add a version to a pre-existing package:
```
komac update Package.Identifier --version 1.2.3 --urls https://www.example.com/installer.exe https://www.example.com/installer.msi --submit
```| Parameter | Usage | Notes |
|--------------------------------------|-----------------------------------|------------------------------------------------------------|
| Package Identifier | `komac update Package.Identifier` | |
| Version | `--version` | |
| URLs | `--urls` | URLs are delimited by a space |
| Automatically submit | `--submit` | |
| Token (if one is not already stored) | `--token` | Komac will check for a `GITHUB_TOKEN` environment variable |### komac sync
Updates your fork of winget-pkgs to be up-to-date
with [microsoft/winget-pkgs](https://github.com/microsoft/winget-pkgs).```bash
komac sync
```
![]()
## Feature Comparison 🔍
While other manifest creation tools have made a solid foundation for the manifests in winget-pkgs, their development
pace
is slower and lacks the deeper installer analysis that komac is capable of.| | Komac | WingetCreate | YamlCreate |
|------------------------------------------|:------:|:------------:|:--------------------------------------------------------------:|
| Parameters | ✅ | ✅ | ❌ |
| Download progress bar & ETA | ✅ | ❌ | ❌ |
| Fully cross-platform | ✅ | ❌ | Limited |
| Works without Git | ✅ | ✅ | ❌ |
| Full Inno Setup value retrieval | ✅ | ❌ | ❌ |
| Full MSI value retrieval | ✅ | Partial | Partial |
| Linux & macOS MSI support | ✅ | ❌ | ❌ |
| Full MSIX value retrieval | ✅ | Partial | Partial - https://github.com/Trenly/winget-pkgs/issues/180 |
| Get information from GitHub | ✅ | ✅ | ❌ |
| Formatted GitHub release notes retrieval | ✅ | ❌ | ❌ |
| Release date identification | ✅ | ❌ | ❌ |
| No telemetry | ✅ | ⭕ [^1] | ✅ |
| Fully standalone (w/o winget-pkgs clone) | ✅ | ✅ | ❌ |
| Inno setup detection | ✅ [^2] | ✅ | ✅ [^3] |
| Nullsoft detection | ✅ [^2] | ✅ | ✅ [^3] |
| Burn installer detection | ✅ [^2] | ✅ | Opt-in feature (not enabled by default due to slow processing) |
| Programming Language | Rust | C# | PowerShell |[^1]: Telemetry is enabled by default in WingetCreate. Use `wingetcreate settings` to manually disable telemetry.
[^2]: There is much more accurate detection for Inno, Nullsoft, and Burn installers since Komac v2.
[^3]: The logic for this was contributed by me :)
Check [issues](https://github.com/Trenly/winget-pkgs/issues?q=is:issue+author:russellbanks) that I've opened to request
this feature for YamlCreate.## GitHub Actions 🌟
[WinGet Releaser](https://github.com/vedantmgoyal9/winget-releaser) is a GitHub Action that invokes Komac, passing in
your release's URLs. This completely automates
publishing to WinGet.### Example 📝
```yaml
name: Publish to WinGet
on:
release:
types: [ released ]
jobs:
publish:
runs-on: windows-latest
steps:
- uses: vedantmgoyal9/winget-releaser@main
with:
identifier: Package.Identifier
token: ${{ secrets.WINGET_TOKEN }}
# installers-regex: '\.exe$' # Only .exe files
```### Alternative actions 🔄
- Run Komac manually: [michidk/run-komac](https://github.com/michidk/run-komac)
- Automate releases for external repositories: [michidk/winget-updater](https://github.com/michidk/winget-updater)## How can I support Komac? ❤️
- ⭐ Star this project! :)
- 🤝 Sponsor this project through [GitHub Sponsors](https://github.com/sponsors/russellbanks)
- 🧑💻 Use Komac and [create an issue](https://github.com/russellbanks/Komac/issues/new) for feature requests or bugs.## Star History ⭐
## License
[](http://www.gnu.org/licenses/gpl-3.0.en.html)
Komac is Free Software: You can use, study share and improve it at your will. Specifically you can redistribute and/or
modify it under the terms of the [GNU General Public License](http://www.gnu.org/licenses/gpl-3.0.en.html) as published
by the Free Software Foundation, either version 3 of the License, or (at your option) any later version.