feat(deploy): Register-Tsf 改为系统目录副本注册模式(待文档佐证) - #113
Conversation
|
All contributors have signed the CLA ✍️ ✅ |
|
I have read the CLA Document and I hereby sign the CLA |
|
recheck |
|
关于需要将输入法放到 System32 下,有明确的文档证明吗?我看一些输入法并没有把 tsf 端放到 System32 下。 |
a0f4081 to
0d51d44
Compare
Win11 输入栈(GIP 路径,游戏聊天框等上下文)对 in-proc TSF IME 存在 未文档化的位置约束:InprocServer32 指向系统目录副本时可激活,指向 安装目录时被静默筛除(真机 A/B 实验证据见 huanfeng#115)。对齐 weasel 安装 模式与 wind-installer 修复版(huanfeng/wind-installer#1)。 (从 huanfeng#113 按作者建议拆分;ThreadingModel/GUID 修正已拆至 huanfeng#116)
|
感谢 review!已按建议拆分:ThreadingModel + GUID 修正已拆至 #116(仅 Register.cpp 改动),本 PR 仅保留 dev.ps1 的系统目录注册部分。 关于 System32 的依据,如实说明: 官方文档确实没有「TSF DLL 必须装 System32」的明文。最接近的官方条款是 IME requirements 中 AppContainer 可读性一节:"your IME must place them under the Program Files or Windows directories",且「TSF 加载的 IME DLL 与应用受同样的 app container 限制」——即 Program Files 在文档层面合规,但 GIP 上下文(游戏聊天框等)存在未文档化的更严位置约束。 支持 System32 的现有证据:
|
|
魔兽世界怀旧服(32位老游戏)是不是也能这样实现 |
|
此 pr 在 main 上以另一种形式合并了,因为在安装时会对锁定的 dll 重命名,直接放在 system32 下会出现经过重命名的 dll,所以参考 QQ五笔,请到了 IME/WindInput 下,清理时会更方便。 |
说明(按作者建议拆分)
原 PR 同时包含 Register.cpp 修正与 dev.ps1 系统目录注册。现已拆分:
dev.ps1的Register-Tsf系统目录注册模式,配套 wind-installer 侧实现(fix(installer/ime): TSF DLL 改为部署到系统目录并对副本注册 wind-installer#1)改动
Register-Tsf改为「复制 DLL 到系统目录(x64 → System32,x86 → SysWOW64)→ 授 AppContainer 读权限 → 对系统副本 regsvr32」——DllRegisterServer内GetModuleFileName取到系统目录路径,InprocServer32自然指向系统副本。依据(待文档佐证,完整讨论见 #115)
InprocServer32指向):Program Files 注册 → GIP 上下文(游戏聊天框)选不上;System32 副本注册 → 正常(完整记录见 [讨论] 反作弊(ACE)环境下未签名输入法的兼容性调研——流放之路国服/穿越火线不可用,英雄联盟正常 #115)验证
dev.ps1 dm1构建通过;等效手工部署(DLL 入 system32 + Apartment)实测流放之路国际服(含管理员权限)与英雄联盟游戏内输入恢复正常([讨论] 反作弊(ACE)环境下未签名输入法的兼容性调研——流放之路国服/穿越火线不可用,英雄联盟正常 #115)