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

XFEWarframe

【WinUI】基于Warframe游戏本体的公开服务器以及安装器

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

C# 安装器、玩家端与新版兼容

四个独立入口

程序 职责
XFEWarframe.Admin.exe 服务器启停、配置、账户、库存和 API 诊断,需要管理员令牌
XFEWarframe.Server.exe ServerInteractive 控制台 API 服务
XFEWarframe.Player.exe 原生 WinUI 玩家首页、版本检测、安装修复、恢复、游戏启动和诊断
XFEWarframe.Installer.exe 同一套安装逻辑的 C# 命令行入口,可脚本化与离线使用

玩家端与安装器只引用 XFEWarframe.Client,不读取服务端 server.json,不读取管理员令牌。玩家偏好位于 %LOCALAPPDATA%\XFEWarframe\Player\Profiles,通过 XFEProfile 保存游戏目录、API 地址、邮箱、语言、图形和主题偏好;首次启动自动导入旧 settings.json。玩家端可注册与登录私服账号、查看仓库和添加货币;游戏内使用相同账号登录,桌面会话不会替代或挤掉游戏登录。见 玩家账号与仓库。

与原 InstallHelper.exe 的区别

参考对象是用户明确指定的 InstallHelper.exe 本身,而非它的 WinUI 外壳。原流程下载 OpenWF 引导与热修复,使用代理 DLL,部分新版需要 Sideloadify 改写 EXE 导入。

本实现用 C# 完成 Steam 库检测、PE x64 检查、特征查找、事务安装、旧引导隔离、SHA-256 校验和挂起启动。客户端兼容组件也以 C# 编写,通过 NativeAOT 编译为原生 DLL;没有委托原 InstallHelper、PowerShell 下载器、Node 或 C++ 引导程序执行安装。

启动器先校验安装记录与 EXE 哈希,创建挂起的目标进程,显式加载兼容组件,检查初始化返回值后才恢复主线程。新版本不再依赖 EXE 是否导入 wtsapi32.dll / dwmapi.dll / version.dll。函数入口通过 x64 PE 展开表定位,避免固定减偏移;字符串释放函数要求所有匹配引用一致。重定向、受保护请求解码、本地缓存清单与世界状态校验在该进程内处理,不写入游戏 EXE。

更新后必须重新检测并安装。签名数量或交叉引用不匹配时明确失败,保留原安装。特征适配比固定版本黑白名单更灵活,但不保证未知未来版本的协议和结构一定兼容;真正的兼容仍需实机验证。

使用

在完整玩家发行包中运行 Client/Start.cmd,进入“安装与维护”。选择含有 Warframe.x64.exe 的完整副本,设置例如 http://127.0.0.1:8444 的源地址,检测后安装。服务器提供 /health 后,可以从首页启动。

命令行示例:

./Client/Installer/XFEWarframe.Installer.exe detect
./Client/Installer/XFEWarframe.Installer.exe check --game 'D:\Warframe'
./Client/Installer/XFEWarframe.Installer.exe install --game 'D:\Warframe' --server 'http://127.0.0.1:8444'
./Client/Installer/XFEWarframe.Installer.exe status --game 'D:\Warframe'
./Client/Installer/XFEWarframe.Installer.exe selftest
./Client/Installer/XFEWarframe.Installer.exe launch --game 'D:\Warframe' --language en
./Client/Installer/XFEWarframe.Installer.exe repair --game 'D:\Warframe' --server 'http://127.0.0.1:8444'
./Client/Installer/XFEWarframe.Installer.exe uninstall --game 'D:\Warframe'

开发目录使用 --payload artifacts/bridge;构建原生组件运行 scripts/Build-Bridge.ps1。图形界面调用相同 C# 服务,不通过终端拼接这些命令。

安装内容和恢复

所有新组件位于游戏目录的 XFEWarframe/:

  • XFEWarframe.Bridge.dll、client.json、compatibility.json、installation.json:组件、连接配置、兼容检查和安装文件哈希。
  • backups/legacy/:安装前存在的三个已知代理 DLL 的原始字节。OpenWF/ 下的旧配置和热修复保留原样。
  • backups/transactions/、transaction.json:文件替换前备份与中断恢复日志。
  • logs/client-*.log:兼容组件诊断,只记录 API 路径,不记录查询参数、账号、密码或正文。

安装和恢复持有目录内独占锁;游戏运行中拒绝安装。每次写入使用临时文件、刷盘和替换。失败与取消回滚已完成的变更;进程意外结束后,下一次安装自动恢复,也可使用 recover --game <目录>。恢复前逐项验证哈希,若文件已被其他程序改动则停止,避免覆盖外部改动。卸载恢复旧引导并移除受管理的组件文件,保留备份与日志;不递归删除游戏目录。符号链接和目录联接被拒绝,避免把副本操作指向原游戏。

安装器不下载游戏资源,也不从不受约束的 URL 下载可执行脚本。兼容组件随发行包提供,复制前检查本地 payload.json 中的 SHA-256 和原生导出。该清单用于完整性检查,不冒充发行者数字签名。

本轮验证记录

目标:D:\Warframe\Warframe.x64.exe,版本 2026.08.19.11.06,SHA-256:

D01B5CB5CFF51AFC5FFB7D3AF051674AAFA84000BEE764780FF71D9D073CAD93

来源 D:\SteamLibrary\steamapps\common\Warframe 只读。复制后 201 个游戏文件逐一 SHA-256 校验一致;安装和恢复后,来源全部文件的大小/修改时间不变,来源与副本的 EXE 哈希均未改变。

已验证:11 项关键特征;651 处释放调用唯一目标;NativeAOT DLL 加载、原生回调、RIP 相对指令重定位与回滚;真实副本的安装→卸载→原引导哈希恢复→重新安装→完整性检查;22 项安装器与启动器自动化用例。WinUI 玩家窗口能正常打开,辅助功能树包含 Windows 原生最小化、最大化和关闭按钮。

2026-09-25 实机补验:真实 Warframe 进程已加载兼容组件、完成 10 个回调初始化并进入登录界面。此前启动器在挂起进程上使用 Process.Modules 导致 Win32 错误 299,现已改为查询映射的 PE 映像;新增真实挂起子进程的回归测试。详情见 实机验证记录。

仍未确认:游戏登录、飞船、任务、结算与重连。进入登录界面不等于完整游戏流程兼容。

发行包 validation/ 保留测试报告;开发工作区还保存复制校验清单。服务器仍有 MIGRATION.md 所列的协议和实时服务边界。