diff --git a/README.md b/README.md index 8d67a26..46e5476 100644 --- a/README.md +++ b/README.md @@ -7,6 +7,19 @@ - **关键词过滤**:精确识别包含 `SDEZ`、`SDHD`、`SDDT` 关键词的VHD文件 - **快速定位**:优化的扫描算法,快速定位目标文件 +### 🌐 智能网络配置管理 +- **远程关键词获取**:通过HTTP API自动获取启动关键词,实现集中化配置管理 +- **配置文件驱动**:通过`vhdmonter_config.ini`灵活控制远程功能开关和服务器地址 +- **智能降级机制**:远程获取失败时自动回退到本地选择模式,确保程序稳定运行 +- **跨平台服务器支持**:配套VHDSelectServer提供Web GUI和API接口,支持Docker部署 + +### 🔌 智能USB设备管理 +- **NX_INS设备识别**:自动检测卷标为"NX_INS"的USB设备,专为街机系统优化 +- **USB优先策略**:优先使用USB设备中的VHD文件,确保使用最新版本 +- **智能文件替换**:根据关键词匹配,自动用USB中的VHD文件替换本地对应文件 +- **双重扫描机制**:同时扫描USB和本地VHD文件,提供完整的文件管理方案 +- **状态实时反馈**:详细显示USB设备检测、文件扫描和替换过程的每个步骤 + ### 💾 专业VHD管理 - **一键挂载**:自动将VHD文件挂载到M盘 - **智能清理**:挂载前自动分离现有VHD,避免冲突 @@ -15,6 +28,7 @@ ### 🎯 用户友好界面 - **全屏选择**:多VHD文件时提供直观的全屏选择界面 - **实时状态**:操作过程中显示详细的状态信息 +- **步骤暂停**:每个主要执行步骤完成后暂停2秒显示结果,便于用户查看执行状态 - **键盘操作**:支持方向键选择、回车确认、ESC退出 ### 🔄 自动化运行 @@ -62,18 +76,48 @@ dotnet publish --configuration Release --self-contained true --runtime win-x64 1. **启动程序** - 以管理员身份运行 `VHDMounter.exe` - - 程序显示全屏白色界面并开始扫描 + - 程序显示全屏白色界面并开始10秒延迟启动 + - 延迟完成后开始主流程扫描 -2. **VHD文件选择** - - 单个文件:自动挂载 - - 多个文件:使用 ↑↓ 键选择,Enter 确认 +2. **智能扫描过程** + - **远程VHD选择检查**: + * 读取`vhdmonter_config.ini`配置文件,检查`EnableRemoteSelection`开关状态 + * 如启用远程功能,向配置的`BootImageSelectUrl`发送HTTP GET请求 + * 解析JSON响应中的`BootImageSelected`字段获取目标关键词 + * 显示远程获取状态和选择的关键词信息 + * 执行完成后暂停2秒显示检查结果 + - **专业USB设备识别**: + * 自动检测所有可移动设备,精确识别卷标为"NX_INS"的专用USB设备 + * 显示USB设备详细信息(设备名称、路径等) + * 执行完成后暂停2秒显示检测状态 + - **USB优先文件扫描**: + * 在检测到的NX_INS USB设备中扫描所有VHD文件 + * 支持根目录下的所有.vhd格式文件识别 + * 实时显示扫描进度和发现的文件数量 + * 扫描完成后暂停2秒显示结果统计 + - **本地VHD文件扫描**:扫描本地VHD文件并显示数量(暂停2秒) + - **智能文件替换处理**: + * 基于关键词匹配算法,将USB中的VHD文件与本地文件进行智能配对 + * 自动执行文件替换操作,确保使用最新版本的游戏文件 + * 详细显示每个替换操作的源文件和目标文件信息 + * 替换完成后暂停2秒显示操作结果 -3. **自动挂载与启动** - - VHD文件挂载到M盘 - - 自动搜索启动目录:SDHD → bin,其余 → package(忽略大小写) - - 在上述目录执行 start.bat 文件 +3. **VHD文件选择** + - **远程优先策略**: + * 如远程获取到有效关键词,自动在本地VHD文件中查找匹配项 + * 基于关键词匹配算法(SDEZ、SDHD、SDDT)进行精确匹配 + * 找到匹配文件时直接启动,无需用户手动选择 + * 未找到匹配时显示提示信息并回退到手动选择模式 + - **本地选择模式**: + * 单个文件:自动挂载启动 + * 多个文件:提供全屏选择界面,支持 ↑↓ 键选择,Enter 确认 -4. **后台监控** +4. **自动挂载与启动** + - **VHD挂载**:将选定的VHD文件挂载到M盘(暂停2秒显示结果) + - **目录搜索**:自动搜索启动目录(SDHD → bin,其余 → package,忽略大小写)(暂停2秒显示路径) + - **程序启动**:在目标目录执行 start.bat 文件(暂停2秒显示结果) + +5. **后台监控** - 程序最小化到系统托盘 - 持续监控目标进程状态 - 异常时自动重启应用 @@ -96,9 +140,14 @@ VHDMounter.exe --debug ``` #### 自定义配置 -- **目标关键词**:可在源码中修改 `TARGET_KEYWORDS` 数组 -- **监控进程**:可在源码中修改 `PROCESS_KEYWORDS` 数组 -- **挂载盘符**:可在源码中修改 `TARGET_DRIVE` 常量 +- **远程配置管理**: + * `EnableRemoteSelection=true/false` - 启用/禁用远程VHD选择功能 + * `BootImageSelectUrl=http://server:port/api/boot-image-select` - 远程服务器API地址 + * 配置文件:`vhdmonter_config.ini`(与程序同目录) +- **本地代码配置**: + * **目标关键词**:可在源码中修改 `TARGET_KEYWORDS` 数组 + * **监控进程**:可在源码中修改 `PROCESS_KEYWORDS` 数组 + * **挂载盘符**:可在源码中修改 `TARGET_DRIVE` 常量 ## 🔧 技术架构 @@ -112,7 +161,13 @@ VHDMounter.exe --debug ### 关键组件 #### VHDManager 类 -- `ScanForVHDFiles()` - VHD文件扫描 +- `GetRemoteVHDSelection()` - 远程VHD关键词获取与解析 +- `FindVHDByKeyword()` - 基于关键词的VHD文件匹配查找 +- `ReadConfig()` - 配置文件读取与解析 +- `ScanForVHDFiles()` - 本地VHD文件扫描 +- `FindNXInsUSBDrive()` - NX_INS专用USB设备检测与识别 +- `ScanUSBForVHDFiles()` - USB设备VHD文件扫描 +- `ReplaceLocalVHDFiles()` - 智能文件替换(USB优先策略) - `MountVHD()` - VHD挂载操作 - `UnmountVHD()` - VHD卸载操作 - `FindFolder(folderName)` - 通用目录定位(忽略大小写) @@ -124,6 +179,7 @@ VHDMounter.exe --debug - 用户界面管理 - 系统事件监听 - 应用程序生命周期控制 +- 执行步骤状态显示和暂停控制 ### 安全机制 - **权限检查**:启动时验证管理员权限 @@ -150,6 +206,27 @@ A: 确认对应启动目录中存在 start.bat 文件(SDHD: bin;其他关键 **Q: 进程监控不工作** A: 检查目标程序是否正常运行,进程名是否包含预定义的关键词。 +**Q: 程序执行过程中暂停是否正常** +A: 程序在每个主要步骤完成后会自动暂停2秒显示执行结果,这是正常行为。启动时的10秒延迟不受此影响。如需跳过暂停,请等待自动继续。 + +**Q: 检测不到NX_INS USB设备** +A: 确认USB设备已正确连接且卷标设置为"NX_INS"。可在资源管理器中查看USB设备属性确认卷标。 + +**Q: USB设备中的VHD文件无法被识别** +A: 确保VHD文件位于USB设备根目录,且文件扩展名为.vhd。程序只扫描根目录下的VHD文件。 + +**Q: USB文件替换本地文件失败** +A: 检查本地VHD文件是否被其他程序占用,确保有足够的磁盘空间进行文件复制操作。 + +**Q: 远程VHD选择功能无法工作** +A: 检查`vhdmonter_config.ini`中`EnableRemoteSelection`是否设置为`true`,确认`BootImageSelectUrl`地址正确且服务器可访问。 + +**Q: 远程服务器连接失败** +A: 确认网络连接正常,检查防火墙设置,验证远程服务器是否正在运行且API接口可用。 + +**Q: 远程获取的关键词无效** +A: 确认远程服务器返回的JSON格式正确,`BootImageSelected`字段包含有效的关键词(SDEZ、SDHD、SDDT之一)。 + ### 日志和调试 程序运行时会输出详细的调试信息到控制台,可以通过以下方式查看: