Repository navigation
v1.4.2:配置改为每用户一份(修多用户共用 profile 抢端口)
v1.4.2
配置改为「每个 Windows 用户各一份」:多个人共用一份 DSH profile 时,不再抢同一个监听端口。
根因
多个 Windows 用户共用一份 DSH 的常见做法,是把 .dsh\profiles\desktop 做成
junction / 符号链接指到同一个目录。这样 node_modules 与 cordis.patch.yml
都是共享的 —— 包括里面的 port。两个人同时开 DSH 时,第二个实例必然失败:
[error] 监听 100.64.0.5 失败: listen EADDRINUSE: address already in use 100.64.0.5:19388
于是「插件明明启用了,手机却连不上」;而先启动的那个实例仍占着端口,
后启动的实例连状态文件都写不出可用网址。
修复
- 新增本用户配置
$DSH_HOME/remote-access-config.json(默认%USERPROFILE%\.dsh,
权限0600),启动时本地优先于共享 profile:- 首次启动以共享 profile 为种子建一份;
- 设置页保存仍写共享 profile,但宿主只把「这次变了的键」同步进本用户配置再生效 ——
改端口只影响自己,不会把别人的端口一起改掉; - 本用户手改的其它字段,不会被「别的字段保存」顺手覆盖。
- 端口被占用时退让:换一个系统空闲端口继续服务(而不是整个远程入口打不开),
并把实际端口写回本用户配置 —— 下次启动直接用它,手机上的网址也稳定。 - 状态文件新增「本用户配置」一行;设置页底部会写明生效的是哪个文件。
- 新 Host 配置字段
localConfigFile:''= 默认路径,off= 关掉这一层(全部走共享 profile),
其它值 = 显式路径。 - 删掉本用户配置文件 = 下次启动重新以共享 profile 为种子(想整体重置就用这招)。
升级注意
- 升级到 1.4.2 并重启一次 DSH(
index.js的改动要重启才加载); - 第一次启动会自动建好本用户配置,不需要手写;
- 如果状态文件里出现「端口 … 已被占用 → 本次改用 …」,说明发生了退让,
实际网址以状态文件里「远程访问网址」那一行为准; - 这一版没有重发 APK:外壳代码没动,仍是 1.4.1(
versionCode16)。
测试
tools/test-remote-access.mjs180/180(新增 20 条:本用户配置路径 / 合并 / 差异检测、
首次启动种子、重启后本地优先、off时完全不建文件、坏文件先备份再重建、
设置页保存只同步变了的键、保存即重启本行时也能采纳、端口被占用时退让并把端口写回、
重启后仍用记住的端口)tools/test-client.mjs123/123tools/check-config-schema.mjs12/12(32 个字段,含新增的localConfigFile)tools/check-dsh-compat.mjs15/15
测试默认用
localConfigFile: 'off'隔离。这一版的热重载路径有个测试隔离漏洞
(settings 桩缺该字段时会回落到默认路径),已在 1.4.3 修复并补了回归测试。