XFE Git
XFE Studio Git
Git 首页 全局搜索
XFE 主站 文档 NuGet

XFEEDToolBox

【WinUI】XFE精英危险工具箱

公开
关注 0 Fork 0 Star 0
UTF-8

可选游戏通信插件

设置 → 游戏插件中可选择 EliteDangerous64.exe,安装、检查状态、停用并卸载插件。该功能独立于 Journal 读取、材料仓库和模拟改船。安装不会退出当前游戏,也不会立即开始交易;插件在下一次游戏启动时由系统加载。

当前能力

当前包为 0.5.0-dev,插件内部使用 C# NativeAOT:supportsNavigation=true、supportsTrade=false,重进能力取决于实际菜单接口是否就绪。支持姿态、热量、目标、游戏航路、星系目录和带租约的自动飞行。历史实机验收见 NAVIGATION.md;迁移范围及本次验证见 C# 插件迁移。历史实机结果不代表迁移后的实机回归,安装完成不能代替实际能力握手。

普通安装与状态查询不会安装导航挂钩。仅单独的 navigation.observe.start 请求会尝试固定构建的游戏观测,不发送驾驶或跃迁指令。服务在系统 DirectInput 初始化成功后通过 C# 后台线程启动。模块保留到进程结束,卸载流程先停用,再于退出后清理占用文件;不调用 FreeLibrary 卸载 NativeAOT DLL。

当前包匹配的游戏 EXE SHA-256 为 6891f70a021fa9f3a0e00458c284f48d1226e68ae7fc02ad48081aed47857e93。其他构建会停止安装,不能混用研究偏移。

与汉化组件共存

管理界面与游戏组件分离。插件使用 dinput8.dll 加载,转发 Windows System32 的原始 DirectInput;独立于汉化管理,不改写游戏 EXE,也不接管已有汉化文件。目标已有其他来源的 dinput8.dll 时保留原文件并停止安装。

安装布局:

<游戏目录>/dinput8.dll
<游戏目录>/.xfeedtoolbox-plugin/installation.json
<游戏目录>/.xfeedtoolbox-plugin/disabled  # 仅停用或待卸载时
<游戏目录>/.xfeedtoolbox-plugin/diagnostics/startup-<PID>.jsonl

管理器记录自身文件哈希、版本、游戏映像哈希与安装时间。安装采用暂存后移动;卸载只处理本工具创建且哈希仍相符的文件。被用户或其他程序替换的文件会保留。目录链接、构建不匹配、包损坏或加载文件冲突均会停止操作。

卸载

卸载先停止工具箱的执行任务,向所选游戏进程发送停用命令,再写入停用标记、移除自身加载文件。若 Windows 因游戏占用而拒绝删除,显示“已停用,等待退出后清理”,下次点击“卸载 / 完成清理”完成删除。不会为卸载强制结束游戏,也不在任意游戏线程上强行卸载 DLL。现有汉化组件保持原样。

验证范围

安装/回滚/冲突/锁定文件/保留外部文件由临时目录测试覆盖。历史转发和通信检查使用 artifacts/plugin-probe 自建程序;用户随后授权了实际 D 盘游戏中的加载和退出测试。2026-10-21 两次启动发生崩溃,详见 转储排查。重新运行原加载器和原故障 DLL 时暂未复现,不能宣布已确定全部根因。

早期启动对照、状态查询与显式观测保存在 artifacts/crash-analysis-20261021/。当前原生 ABI、对象生命周期、输入租约、充满联锁和速度保护测试在自有内存中运行;实际飞行另由真实页面命令、原生遥测和独立 Journal 验收,证据位于 artifacts/navigation-0410-qa/。自有内存通过与实际游戏通过分别记录。

源码位于 native/ManagedPlugin、XFEEDToolBox.Core/Plugins 和 XFEEDToolBox/ViewModels/PluginViewModel.cs;旧 C++ 驱动实现已删除,原ABI以 native/ManagedPlugin/abi-exports.json 校验。客户端通过项目引用自动编译 Bundle 及其底层模块,将 DLL 与匹配清单内嵌,运行时校验并释放到按内容哈希隔离的缓存目录;普通构建与发布不再依赖预先生成的 PluginPackage。独立加载方式不能证明符合 Frontier 的规则或不存在账号风险;分析依据见 ANTI-CHEAT-REVIEW.md。