sundry 是一个 WinGet 本地清单管理工具,让您更方便地移除清单、修改清单,还可以辅助更新清单。
当您获取本工具后,请先使用这个命令初始化配置文件:
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 1.3.0
sundry remove
截图来自拉取请求: microsoft/winget-pkgs#265074
- 别名:
移除
,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
(microsoft/winget-pkgs#267613) - 指定理由:
sundry modify XBMCFoundation.Kodi 18.3.0.0 "替换 HTTP 为 HTTPS"
(microsoft/winget-pkgs#267614) - 链接议题:
- 使用议题 URL:
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"
- 使用议题 URL:
- 指定理由的同时链接议题:
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 <Azure Pipline Url> [是否保留日志文件] [是否显示一般错误/异常]
- 示例:
- 分析日志
这里的 Azure Validation Pipeline Run 是 microsoft/winget-pkgs#267849 (comment) 的。
- 最少参数:
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 ignore
- 别名:
忽略
,检查忽略
,ignore
- 作用: 管理 winget-tools 中的检测脚本的忽略字段。
- 用法:
sundry ignore <add/remove/edit/list> [忽略字段] [理由]
- 示例:
- 添加忽略字段:
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 "第一行 第二行"
- 文件 (假设编码为 gbk):
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
。 - 作用: 管理 Sundry 的
fun.txt
。 - 用法:
sundry fun <random/list/edit/add/remove/import> [参数...]
- 示例:
- 随机一个:
sundry fun
或sundry fun random
- 还可以使用
sundry fun 随机
- 还可以使用
- 列出所有:
sundry fun list
- 可以用
获取
,读取
,get
,list
- 可以用
- 编辑 fun.txt:
sundry fun edit
- 可以用
编辑
,edit
,打开
,open
- 可以用
- 添加新的:
sundry fun add "提问: 罗浮六御中谁最幸福? 答案: 符玄。因为她姓符。"
- 可以用
add
,添加
- 可以用
- 移除原来的:
sundry fun remove "Ciallo~(∠・ω< )⌒☆"
- 可以用
remove
,移除
- 可以用
- 从其他文件导入(覆盖):
sundry import "D:/文件路径/另一个fun.txt"
- 可以用
import
,导入
- 可以用
- 随机一个:
仓库下有一个构建流,你可以 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"
pip install pyinstaller
- 构建
pyinstaller --onefile --distpath="Release/pack" --name="sundry.exe" "src/sundry.py"
- 复制所需文件
cp -v src/fun.txt Release/pack
cp -v LICENSE Release/pack