winget install --id=DuckStudio.Sundry -e
Sundry is a WinGet local manifest management tool that makes it easier for you to remove manifests, make changes to them, and also aids in updating them.
Sundry is a WinGet local manifest management tool designed to simplify the process of removing, modifying, and updating manifests. Built for efficiency and precision, Sundry streamlines tasks that are critical for developers, IT administrators, and power users working with package managers.
Key Features:
Audience & Benefit:
Ideal for developers, IT professionals, and power users who rely on efficient package management. Sundry empowers its users to maintain clean and optimized environments by simplifying manifest operations, reducing errors, and saving time through automation.
Sundry is available for installation via winget, making it easy to integrate into your workflow.
sundry 是一个 WinGet 本地清单管理工具,让您更方便地移除清单、修改清单,还可以辅助更新清单。
winget install --id DuckStudio.Sundry --source winget --exact
从源构建。
当您获取本工具后,请先使用这个命令初始化配置文件:
sundry config init
> 题外话: 这个配置文件就是我将其从我自己的工具变为这里的工具的方法 XD
> [!TIP]
> 在 1.1.0 之前,配置文件在程序目录下的 config.json
中;在 1.1.0 之后,配置文件在用户目录下的 .config/DuckStudio/Sundry/config.json
中。 - 这是为更新时不覆盖配置文件考虑的,如果配置文件不对,请再次使用 sundry config init
。
> 由于作者实在是太懒了,在卸载 Sundry 之后不会移除配置文件,如果需要可以手动移除。
初始化完配置文件后用以下命令确认下:
sundry config show
如果有任何地方不对,请使用这个命令修改对应键的值:
sundry config "<条目>" "<值>"
更多可用命令请见下方示例。
sundry help
别名: 任何非命令字符
作用: 显示 Sundry 帮助
sundry ver
别名: ver
, 版本
, version
, Version
, --version
, --ver
, -v
作用: 显示 Sundry 版本和安装位置
sundry remove
> 截图来自拉取请求:
别名: 移除
, remove
作用: 移除一个指定的软件包的指定版本,并在移除前自动检查该版本是否确实存在问题。可以指定理由或跳过自动检查。默认理由为“安装程序URL在GitHub Action上返回了404”。
用法: sundry remove <软件包标识符> <软件包版本> [是否跳过自动检查] [理由]
示例:
sundry remove DuckStudio.FufuTools 1.3.10
sundry remove DuckStudio.FufuTools 1.3.10 True
sundry remove DuckStudio.FufuTools 1.3.10 "该版本存在一个已知问题"
sundry remove DuckStudio.FufuTools 1.3.10 True "该版本存在一个已知问题"
sundry modify
别名: 单改
, 单修改
, modify
作用: 修改一个指定的软件包的指定版本的清单,并在修改完后自动提交拉取请求。
用法: sundry modify <软件包标识符> <版本> [理由/解决的议题]
示例:
sundry modify XBMCFoundation.Kodi 18.2.0.0
(https://github.com/microsoft/winget-pkgs/pull/267613)sundry modify XBMCFoundation.Kodi 18.3.0.0 "替换 HTTP 为 HTTPS"
(https://github.com/microsoft/winget-pkgs/pull/267614)sundry modify DuckStudio.Sundry 1.2.6 "https://github.com/microsoft/winget-pkgs/issues/267539"
sundry modify DuckStudio.Sundry 1.2.6 "267539"
sundry modify DuckStudio.Sundry 1.2.6 "#267539"
sundry modify DuckStudio.Sundry 1.2.6 "一些修改。
- Resolves https://github.com/microsoft/winget-pkgs/issues/267539"
> GitHub Docs: 使用关键词将拉取请求链接到议题sundry logs-analyse
别名: 日志分析
, logs-analyse
, logs_analyse
, Azure日志分析
作用: 分析 Azure Validation Pipeline Run 失败时的日志,来自动查找具体哪里失败了。
用法:
sundry logs-analyse [是否保留日志文件] [是否显示一般错误/异常]
sundry logs-analyse cleanup
示例:
sundry logs-analyse "https://dev.azure.com/shine-oss/8b78618a-7973-49d8-9174-4360829d979b/_build/results?buildId=137464"
(需要用户输入)sundry logs-analyse "https://dev.azure.com/shine-oss/8b78618a-7973-49d8-9174-4360829d979b/_build/results?buildId=137464" n
sundry logs-analyse "https://dev.azure.com/shine-oss/8b78618a-7973-49d8-9174-4360829d979b/_build/results?buildId=137464" y
(运行后将打开日志文件所在目录)sundry logs-analyse "https://dev.azure.com/shine-oss/8b78618a-7973-49d8-9174-4360829d979b/_build/results?buildId=137464" 占位 y
sundry logs-analyse "https://dev.azure.com/shine-oss/8b78618a-7973-49d8-9174-4360829d979b/_build/results?buildId=137464" y y
sundry logs-analyse cleanup
sundry verify
> 截图是在 Hyper-V Windows 10 x64 虚拟机上的测试。
verify
, test
, 验证
, 测试
sundry verify <软件包标识符> <软件包版本>
sundry verify
sundry verify DuckStudio.FufuTools 1.3.10
sundry verify <打开的PR>
⚠ 注意
UpgradeCode
。%temp%/Sundry/Verify/PRManifest/PR编号
下。sundry ignore
别名: 忽略
, 检查忽略
, ignore
作用: 管理 winget-tools 中的检测脚本的忽略字段。
用法: sundry ignore [忽略字段] [理由]
示例:
sundry ignore add "https://www.argyllcms.com/" "服务器冲不动咖啡 (418)"
sundry ignore remove "https://www.argyllcms.com/" "又冲得动了"
sundry ignore edit
sundry ignore list
sundry cat
别名: 没有别名,只能用 cat
。
作用: 获取指定软件包标识符的指定版本的清单,可以指定获取所有清单或某个类型的清单。
用法: sundry cat <软件包标识符> <版本> [清单类型] [区域设置(如果是locale类型)]
示例:
sundry cat DuckStudio.Sundry 1.2.3
sundry cat DuckStudio.Sundry 1.2.3 all
all
外还可用 全部
, 所有
sundry cat DuckStudio.Sundry 1.2.3 i
installer
, 安装程序
, 安装
, i
sundry cat DuckStudio.Sundry 1.2.3 l zh-CN
locale
, 区域
, 区域设置
, l
sundry cat DuckStudio.Sundry 1.2.3 v
version
, ver
, v
, 版本
sundry sync
别名: sync
, 同步
, synchronize
, sync-fork
作用: 同步 fork 仓库和上游仓库的修改。
用法: sundry sync
示例: sundry sync
sundry repr
别名: 没有别名,只能用 repr
。
作用: 等效于 Python 的 repr()
,用于获取字符串真实的样子。
用法: sundry repr <文件路径/文本内容> [编码(默认 UTF-8)]
示例:
sundry repr "第一行
第二行"
sundry repr "D:/文件路径/文件.txt" "gbk"
sundry config
别名: config
, 配置
作用: 初始化和修改 Sundry 配置。
用法: sundry config <参数...>
示例:
sundry config init
sundry config show
sundry config signature no
sundry revert
别名: 还原
, revert
作用: 还原本地仓库的修改,如果 Sundry 在修改的某个过程中崩溃了,则可以使用此命令还原 Sundry 做的修改。
用法: sundry revert <仓库> <是否已提交> <是否丢弃>
示例:
sundry revert all n y
sundry fun
fun
。fun.txt
。sundry fun [参数...]
sundry fun
或 sundry fun random
sundry fun 随机
sundry fun list
获取
, 读取
, get
, list
sundry fun edit
编辑
, edit
, 打开
, open
sundry fun add "提问: 罗浮六御中谁最幸福? 答案: 符玄。因为她姓符。"
add
, 添加
sundry fun remove "Ciallo~(∠・ω< )⌒☆"
remove
, 移除
sundry import "D:/文件路径/另一个fun.txt"
import
, 导入
命令 | 是否支持 | 备注 |
---|---|---|
help | ✓ | |
ver | ✓ | |
remove | ✕ | 验证阶段需要 WinGet,不确定如何读取 Token |
modify | ✕ | 验证清单需要 WinGet,不确定如何读取 Token |
logs-analyse | 部分支持 | 不支持自动打开日志文件夹 |
verify | ✕ | 您只能在 Windows 上验证软件包 |
ignore | ✕ | 不确定如何读取 Token |
cat | ✓ | |
sync | ✓ | |
repr | ✓ | |
config | ✓ | |
revert | ✓ | |
fun | ✓ |
> [!TIP] > 仓库下有一个适用于 Windows 的构建流,你可以 fork 后直接运行,它会将结果上传为工件。
cd
到项目所在目录python "自动化脚本/修改版本号.py" "2025.520.1314"
python -m venv .venv
& ".venv\Scripts\Activate.ps1"
python.exe -m pip install --upgrade pip
pip install -r "requirements.txt"
python "自动化脚本/png-2-ico.py"
pyinstaller --onefile --distpath="Release" --name="sundry.exe" "src/sundry.py" --icon "icon/Sundry.ico"
# 如果前面没转换图标格式,参数中的图标请用 icon/Sundry.png,Pyinstaller 会尝试自己转换格式。
Copy-Item -Path "src/fun.txt" -Destination "Release" -Verbose
Copy-Item -Path "LICENSE" -Destination "Release" -Verbose
Release
下就是构建结果set -e
echo "克隆源码..."
git clone https://github.com/DuckDuckStudio/Sundry.git
cd Sundry
echo "创建虚拟环境并安装依赖..."
python3 -m venv .venv
source .venv/bin/activate
pip install -r "requirements.txt"
echo "构建二进制文件..."
python3 "自动化脚本/修改版本号.py" "2025.520.1314"
pyinstaller --onefile --distpath="Release" --name="sundry" "src/sundry.py"
deactivate
cp -v "src/fun.txt" "Release"
cp -v "LICENSE" "Release"
echo "整理文件..."
cd ..
cp -rv "Sundry/Release" "./Release"
rm -rvf Sundry
cd Release
echo "配置 Sundry..."
./sundry ver
./sundry config init
然后 ./Release
下就是构建结果。