Winget 的存储库
[!info] 阅读导览
第 1 步 准备环境(Git + WingetCreate)→ 第 2 步 创建并验证清单文件 → 第 3 步 提交到 GitHub 并创建 PR → 第 4-5 步 完整示例清单与注意事项
1. 引言:把应用提交到 winget-pkgs

winget-pkgs 是微软维护的 Windows 包管理器(winget)社区清单仓库,任何开发者都可以通过提交清单文件(Manifest),把自己的应用发布到 winget install 可检索的官方源中。本教程按 5 个步骤,带你完成从环境准备到提交 Pull Request 的完整流程。
flowchart LR
A[① 准备环境<br>Git + WingetCreate] --> B[② 创建清单<br>wingetcreate new]
B --> C[③ 验证清单<br>winget validate]
C --> D[④ Fork + 克隆<br>添加清单并推送]
D --> E[⑤ 创建 Pull Request<br>等待审核合并]
2. 步骤 1:准备环境
2.1. 安装 Git
首先,你需要安装 Git,这是一个版本控制工具,用于管理和提交代码。
- 访问 Git 官方网站 下载并安装 Git。
- 安装完成后,打开命令行(CMD 或 PowerShell),输入以下命令以验证安装:
git --version
2.2. 安装 WingetCreate
WingetCreate 是一个用于生成和提交清单文件的工具。
- 打开命令行,输入以下命令安装 WingetCreate:
winget install wingetcreate
3. 步骤 2:创建清单文件
3.1. 生成清单文件
假设你有一个应用程序的安装包 URL,例如 https://example.com/installer.exe。
- 在命令行中,输入以下命令:
wingetcreate new https://example.com/installer.exe
- 该命令会引导你完成一系列问题,以生成清单文件。以下是一个示例输入:
PackageIdentifier: ExamplePublisher.ExampleApp
PackageVersion: 1.0.0
PackageLocale: en-US
Publisher: Example Publisher
PackageName: Example App
License: MIT
ShortDescription: This is an example application.
Installers:
- Architecture: x64
InstallerType: exe
InstallerUrl: https://example.com/installer.exe
InstallerSha256: 1234567890abcdef1234567890abcdef1234567890abcdef1234567890abcdef
3.2. 验证清单文件
生成的清单文件需要进行验证,以确保其格式正确。
- 输入以下命令进行验证:
winget validate <path-to-the-manifest>
4. 步骤 3:提交清单文件到 GitHub
4.1. Fork Winget-Pkgs 存储库
- 访问 winget-pkgs 存储库。
- 点击页面右上角的 Fork 按钮,将存储库复制到你的 GitHub 账户。
4.2. 克隆存储库到本地
- 在命令行中,输入以下命令,将你 fork 的存储库克隆到本地:
git clone https://github.com/<YourGitHubUsername>/winget-pkgs.git
4.3. 添加清单文件
- 将生成的清单文件移动到适当的文件夹结构中,例如:
manifests/e/ExamplePublisher/ExampleApp/1.0.0/ExamplePublisher.ExampleApp.yaml
4.4. 提交并推送更改
- 在命令行中,进入存储库目录:
cd winget-pkgs
- 添加更改:
git add .
- 提交更改:
git commit -m "Add Example App version 1.0.0"
- 推送更改到 GitHub:
git push origin main
4.5. 创建 Pull Request
- 访问你的 GitHub 存储库页面,点击 Pull Requests 标签。
- 点击 New Pull Request 按钮,创建一个新的 Pull Request,将你的更改提交到原始的
winget-pkgs存储库。
5. 示例清单文件
以下是一个完整的示例清单文件:
PackageIdentifier: ExamplePublisher.ExampleApp
PackageVersion: 1.0.0
PackageLocale: en-US
Publisher: Example Publisher
PackageName: Example App
License: MIT
ShortDescription: This is an example application.
Installers:
- Architecture: x64
InstallerType: exe
InstallerUrl: https://example.com/installer.exe
InstallerSha256: 1234567890abcdef1234567890abcdef1234567890abcdef1234567890abcdef
ManifestType: singleton
ManifestVersion: 1.0.0
6. 注意事项
- 确保安装包的 URL 是有效的,并且可以访问。
- SHA256 校验和必须与安装包匹配,可以使用工具生成 SHA256 校验和。
- 提交 Pull Request 后,Winget 团队会进行审核,可能会给出反馈,需要根据反馈进行修改。
[!success] 核心要点
- 完整流程:准备环境 → 生成清单(wingetcreate new)→ 验证(winget validate)→ Fork 克隆并推送 → 创建 Pull Request
- 清单字段:PackageIdentifier / PackageVersion / Publisher / Installers(含 InstallerUrl 与 InstallerSha256)等,需与官方规范一致
- 目录约定:清单放入 manifests/[首字母]/[发布者]/[应用名]/[版本]/ 结构
- 注意事项:安装包 URL 必须可访问、SHA256 必须与安装包匹配、提交后等待 Winget 团队审核反馈