chore(release-prep): 清理 #268/#279 双方案残留
main 上 #268 (millionart/codex/register-windows-ime-nsis-installer) 与 #279 (本人) 都修了 NSIS 注册 TSF DLL,merge #279 时未手动解决冲突,导致: 1. tauri.conf.json 出现两个 windows.nsis block(line 92-95 和 105-108), serde_json 用最后写入的覆盖前面,结果 #268 的 nsis/openless-ime-hooks.nsh 被丢弃,实际生效的是 #279 的 installer.nsh。 2. #279 的 bundle.resources 把 dll 多打一份到 $INSTDIR\tsf-ime\,与 #268 PREINSTALL File 直接装到 $INSTDIR\windows-ime\ 并存。 3. installer.nsh 与 openless-ime-payload/ 残留为死代码。 #268 方案更稳:x64 注册带 Sysnative + DisableX64FSRedirection 双保险,有 POSTUNINSTALL 清理 hook,有测试覆盖(4a7a1b6b/test、933e014a/test),且 不污染 MSI(不用 bundle.resources,避免 dll 重复)。 清理: - 删除 tauri.conf.json 重复 nsis block,保留 nsis/openless-ime-hooks.nsh - 删除 bundle.resources(#268 不需要) - 删除死文件 installer.nsh - 删除死目录 openless-ime-payload/ release-tauri.yml 里"复制 dll 到 openless-ime-payload"步骤、build-mac.sh 与 Linux build 的 --config '{"bundle":{"resources":{}}}' override 暂留 — 没有 bundle.resources 后这些是 noop,不会破坏 build;当前 token 没有 workflow scope,等下一次有需求再清。
This commit is contained in:
1 parent
b84b0bdae3
commit
7799b5e0d2
4 files changed
-60
No files matched your search
@@ -1,52 +0,0 @@
|
||||
; NSIS installer hook:注册 / 反注册 OpenLess TSF 输入法 DLL。
|
||||
;
|
||||
; 背景:MSI 包通过 wix/openless-ime.wxs 的 CustomAction 跑 regsvr32,可正常注册到
|
||||
; HKLM 下的 TSF 注册表四件套;NSIS 包没有等价钩子 → NSIS 安装的用户在
|
||||
; "设置 → 权限"页面看到 "Windows 输入法后端:不可用"。
|
||||
;
|
||||
; 这里的 hook 在 NSIS 安装/卸载流程里调 regsvr32 把 OpenLessIme.dll 注册到 HKLM。
|
||||
; bundle.resources 把 x64 / x86 DLL 拷到 $INSTDIR\tsf-ime\{x64,x86}\OpenLessIme.dll
|
||||
; (resources map 的 target 必须避开 wxs fragment 已声明的 windows-ime\x64\
|
||||
; 路径,否则 MSI 包里同一路径会被两个 component 占用)。
|
||||
; tauri.conf.json 的 nsis.installMode = "perMachine" 让 NSIS 以管理员身份运行
|
||||
; (写 HKLM 必需)。
|
||||
;
|
||||
; 必须同时注册 x64 + x86 两份 dll:windows_ime_profile.rs 的
|
||||
; inspect_windows_ime_registration() 会用 KEY_WOW64_64KEY 和 KEY_WOW64_32KEY 两次
|
||||
; 检查 HKLM CLSID InprocServer32,少了任何一边都会被判 RegistrationBroken。
|
||||
;
|
||||
; ⚠️ NSIS installer 自身是 32-bit 进程,会触发 WOW64 文件系统重定向:
|
||||
; - 32-bit 进程里的 $SYSDIR / $WINDIR\System32 都被重定向到 $WINDIR\SysWOW64,
|
||||
; 运行的是 32-bit regsvr32 → 注册结果落在 HKLM\Software\Wow6432Node(即
|
||||
; KEY_WOW64_32KEY 视图),Rust 端 KEY_WOW64_64KEY 查不到 → 仍判"不可用"。
|
||||
; - 32-bit 进程访问真正的 64-bit System32 必须走 $WINDIR\Sysnative 这个 alias。
|
||||
; 因此:
|
||||
; - x64 dll → $WINDIR\Sysnative\regsvr32.exe → 写 KEY_WOW64_64KEY 视图
|
||||
; - x86 dll → $WINDIR\SysWOW64\regsvr32.exe → 写 KEY_WOW64_32KEY 视图
|
||||
;
|
||||
; regsvr32 失败时不阻塞安装:用户仍可以靠 SendInput / 粘贴兜底完成上屏。
|
||||
|
||||
!macro NSIS_HOOK_POSTINSTALL
|
||||
DetailPrint "Registering OpenLess TSF IME (x64) ..."
|
||||
nsExec::ExecToLog '"$WINDIR\Sysnative\regsvr32.exe" /s "$INSTDIR\tsf-ime\x64\OpenLessIme.dll"'
|
||||
Pop $0
|
||||
${If} $0 != 0
|
||||
DetailPrint "OpenLess TSF IME x64 registration failed (exit $0); fallback insertion paths still work."
|
||||
${EndIf}
|
||||
|
||||
DetailPrint "Registering OpenLess TSF IME (x86) ..."
|
||||
nsExec::ExecToLog '"$WINDIR\SysWOW64\regsvr32.exe" /s "$INSTDIR\tsf-ime\x86\OpenLessIme.dll"'
|
||||
Pop $0
|
||||
${If} $0 != 0
|
||||
DetailPrint "OpenLess TSF IME x86 registration failed (exit $0); fallback insertion paths still work."
|
||||
${EndIf}
|
||||
!macroend
|
||||
|
||||
!macro NSIS_HOOK_PREUNINSTALL
|
||||
DetailPrint "Unregistering OpenLess TSF IME (x86) ..."
|
||||
nsExec::ExecToLog '"$WINDIR\SysWOW64\regsvr32.exe" /s /u "$INSTDIR\tsf-ime\x86\OpenLessIme.dll"'
|
||||
Pop $0
|
||||
DetailPrint "Unregistering OpenLess TSF IME (x64) ..."
|
||||
nsExec::ExecToLog '"$WINDIR\Sysnative\regsvr32.exe" /s /u "$INSTDIR\tsf-ime\x64\OpenLessIme.dll"'
|
||||
Pop $0
|
||||
!macroend
|
||||
Whitespace-only changes.
Whitespace-only changes.
@@ -79,10 +79,6 @@
|
||||
"icons/icon.icns",
|
||||
"icons/icon.ico"
|
||||
],
|
||||
"resources": {
|
||||
"openless-ime-payload/x64/OpenLessIme.dll": "tsf-ime/x64/OpenLessIme.dll",
|
||||
"openless-ime-payload/x86/OpenLessIme.dll": "tsf-ime/x86/OpenLessIme.dll"
|
||||
},
|
||||
"macOS": {
|
||||
"minimumSystemVersion": "12.0",
|
||||
"infoPlist": "Info.plist",
|
||||
@@ -101,10 +97,6 @@
|
||||
"OpenLessImeDllX64Component",
|
||||
"OpenLessImeDllX86Component"
|
||||
]
|
||||
},
|
||||
"nsis": {
|
||||
"installMode": "perMachine",
|
||||
"installerHooks": "installer.nsh"
|
||||
}
|
||||
}
|
||||
},
|
||||
|
||||
Reference in new issue
Block a user