返回博客

.NET / CLI / Tooling

为资源包工具抽取 Windows CLI:扫描、比较、目录生成与批量解包

记录 NgsPacker 工具从图形界面能力中抽取命令行任务的过程。

资源包分析工具原本偏向交互式使用。为了处理批量扫描、更新比较和自动化解包,需要把核心能力抽成 Windows CLI,让同一套服务既能被界面调用,也能被命令行调用。

项目概览

项目仓库:logue/NgsPacker

结构上,NgsPacker.Cli 负责参数分发,NgsPacker.Core 提供扫描、快照存储、差异比较、目录导出和 ICE 解包服务。命令覆盖 scanlistcatalogdiffunpack 等任务。

用途是把图形界面的资源分析能力转为批处理工具。应用场景包括版本更新后自动扫描、生成成员目录、比较资源变化、批量解包目标文件。

命令设计

CLI 覆盖四类任务:扫描资源包、生成成员目录、比较两个快照、批量解包目标文件。命令入口只负责参数解析和错误输出,实际逻辑放在 Core 服务中。

扫描结果输出为 JSON 或 CSV。资源成员使用包 ID、成员名、大小、修改时间和 SHA256 描述。比较命令读取两个快照,输出新增、删除和变化成员,便于判断一次客户端更新影响了哪些资源。

测试方式

测试使用小样本资源包和固定快照,覆盖命令参数、输出格式、错误码和比较结果。批量解包任务会验证目标目录结构和文件数量,避免只检查进程退出码带来的遗漏。

实现原理是将资源包读取、成员枚举、SHA256 扫描、CSV 目录输出和 ICE 解包封装为 Core 服务,CLI 只负责把命令参数转换成服务调用。测试层覆盖命令参数、CSV 输出、批量解包和差异结果。