Winget 的存储库

[!info] 阅读导览
第 1 步 准备环境(Git + WingetCreate)→ 第 2 步 创建并验证清单文件 → 第 3 步 提交到 GitHub 并创建 PR → 第 4-5 步 完整示例清单与注意事项

1. 引言:把应用提交到 winget-pkgs

image

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 团队审核反馈