传奇单机架设提示找不到指定路径 更换盘符依旧报错排查方法

来源: 作者: 点击:
出现找不到指定路径提示,更换盘符之后故障依旧,并不是单纯盘符字母选错,大多是BDE别名注册表残留、引擎配置硬编码路径、压缩包解压属性、路径字符、数据库关联配置几类问题叠加,逐一核对定位。
先确认报错弹窗来源,一部分提示来自BDE管理器,一部分来自M2引擎启动日志,两处报错处理方式不一样。BDE弹出找不到路径,代表HeroDB别名内记录的PATH和实际目录不匹配。引擎日志提示找不到指定路径,除了HeroDB之外,还可能是引擎配置文件、地图文件、脚本文件、登录网关配置里面写死了旧盘符路径。
打开BDE管理器选中HeroDB,查看PATH栏内容,确认里面已经改成当前使用的盘符完整路径,不要只改盘符字母,后面的目录层级也要核对。很多人只把D:改成E:或者F:,后面的文件夹名称、层级顺序没有核对,服务端文件夹改名或者层级移动之后,路径后半段和实际不一致,照样提示找不到路径。路径里面不能带有中文、空格、括号以及特殊符号,全部文件夹名称只用英文和数字,层级不要设置太深。修改PATH之后点击保存,保存卡住就用管理员权限打开BDE管理器,设置兼容模式,保存完成之后关闭BDE管理器,打开注册表查看Borland节点下HeroDB对应的PATH值,确认注册表内已经同步更新,注册表残留旧路径会无视BDE界面显示内容,引擎读取依旧读取旧盘符地址。
清理旧注册表残留是更换盘符之后高频生效步骤,多次改动盘符,注册表内会遗留多条BDE配置记录,引擎优先读取注册表内的旧参数。打开注册表编辑器,定位Borland对应的Database Engine分支,先导出备份该项,再删除HeroDB别名项,重启电脑,重新打开BDE管理器新建HeroDB,填写新盘符完整DB目录路径,保存配置。控制面板能够看到HeroDB别名,只代表注册表项存在,不代表里面路径参数是最新的,界面显示和注册表存储内容不一致的情况很常见。
接着检查引擎配置文件,Mir200文件夹里面的!Setup.txt是核心配置文件,用记事本打开,全文搜索D:,查找里面所有写死D盘路径的参数,包含DB路径、地图路径、脚本路径、日志路径、补丁路径、网关日志存储路径。这类参数不会跟随BDE别名改动自动变化,就算BDE的HeroDB已经换到别的盘,配置文件里面依旧读取D盘目录,引擎启动直接报找不到指定路径。找到所有D盘记录,批量替换成当前使用的盘符和对应目录,保存文件之后重启引擎。除了!Setup.txt,各个网关配置文件、登录网关配置、封挂配置文件也要打开检索旧盘符信息,网关读取日志目录、缓存目录路径错误,同样弹出路径报错。
检查服务端压缩包解压属性,压缩包解压的时候,部分解压工具会给文件添加锁定标记或者相对路径标记,更换盘符之后系统识别目录异常。把整套服务端文件夹剪切到目标盘根附近目录,重新解压一份完整压缩包,不要直接复制已经解压好的文件夹跨盘移动。文件勾选只读属性也会干扰路径识别,右键服务端主文件夹,打开属性面板,取消只读勾选,应用到所有子文件夹和文件。
查看引擎资源加载相关配置,部分版本的地图文件、怪物素材、补丁路径写在MapInfo.txt、MonGen.txt这类脚本内,文件内填写了绝对路径,没有使用相对路径。打开MapInfo.txt检索盘符信息,发现绝对路径记录,修改成对应新盘符地址,或者改成相对路径写法。使用相对路径可以规避盘符变动带来的报错,相对路径写法以Mir200目录为基准,不需要填写盘符。
还有一种情况是快捷方式和批处理启动文件内写死旧盘符,很多版本自带一键启动批处理,bat文件里面写好了D盘路径指令,双击启动的时候bat先执行跳转目录指令,找不到D盘就直接报错,后续引擎程序根本不会运行。右键启动批处理文件,选择编辑,查看里面cd跳转路径、调用程序路径,把里面D盘路径替换成当前盘符,保存之后再运行启动程序。
核对系统磁盘识别状态,磁盘盘符有没有被隐藏,磁盘格式是否为NTFS格式,FAT32格式单目录文件数量上限低,目录文件太多的时候会出现识别异常。确认磁盘在资源管理器可以正常打开,能够正常新建文件夹、复制文件,磁盘本身访问异常,更换盘符配置也无法解决。
全部配置修改完成之后,固定测试流程,关闭所有引擎、网关、BDE程序,核对注册表HeroDB路径,核对!Setup.txt和bat启动文件无旧盘符记录,核对脚本内绝对路径全部修正,重启引擎查看日志。日志不再提示找不到指定路径,代表路径读取链路恢复正常。修改路径类配置之后,必须重启对应的程序,缓存内依旧保留旧路径信息,不重启改动无法生效。整套服务端修改盘符之后,优先备份已经调整好的配置文件,后续移动目录可以直接对照修改,减少重复排查工作量。