diff --git a/README.md b/README.md index d85be95..f763312 100644 --- a/README.md +++ b/README.md @@ -2,7 +2,7 @@ 在开机后,如果发现小狼毫无法输出中文,很可能是算法服务没有正常启动。 -解决方法是手动打开小狼毫程序文件夹中的 `WeaselServer.exe`,默认位置为 `C:\Program Files (x86)\Rime\weasel-0.15.0\WeaselServer.exe`。请注意,不要将 `WeaselServer.exe` 设为开机启动,否则可能会导致程序报错。 +解决方法是手动打开小狼毫程序文件夹中的 `WeaselServer.exe`,默认位置为 `C:\Program Files (x86)\Rime\weasel-0.*\WeaselServer.exe`。请注意,不要将 `WeaselServer.exe` 设为开机启动,否则可能会导致程序报错。 随着小狼毫成为主力输入法,这个问题变得更加频繁。为了解决这个问题,我使用 AutoHotkey 编写了此脚本,暂时解决了这个问题。 @@ -15,6 +15,6 @@ ## 脚本逻辑 -1. 检测小狼毫算法服务 `WeaselServer.exe` 是否已经启动。如果没有运行,则脚本会启动与脚本同目录下的 `WeaselServer.exe` 程序。如果目录下没有该算法程序,则使用 weasel-0.15.0 的默认安装路径。 +1. 检测小狼毫算法服务 `WeaselServer.exe` 是否已经启动。如果没有运行,则脚本会启动与脚本同目录下的 `WeaselServer.exe` 程序。如果目录中没有该程序,脚本会动态查找 weasel 的默认安装路径(支持多版本)。 2. 然后,脚本会休眠 30 秒,并再次检测算法服务是否已经启动。 3. 接着,脚本休眠 180 秒,最后检测一次算法服务是否已经启动。这次之后,无论结果如何,程序都将自动退出。 diff --git a/WeaselServerAutostart.ahk b/WeaselServerAutostart.ahk index 5abde4a..adb2d40 100644 --- a/WeaselServerAutostart.ahk +++ b/WeaselServerAutostart.ahk @@ -7,7 +7,10 @@ SetWorkingDir %A_ScriptDir% ; Ensures a consistent starting directory. IfExist, %A_ScriptDir%\WeaselServer.exe NewRunningDir := A_ScriptDir ; 如果有,将脚本目录设置为运行目录 Else - NewRunningDir := "C:\Program Files (x86)\Rime\weasel-0.15.0" ; 如果没有,将运行目录设置为 weasel-0.15.0 的默认安装路径 +{ + ; 动态查找最新版本的 weasel 目录 + NewRunningDir := FindLatestWeaselDir("C:\Program Files (x86)\Rime") +} ; 脚本启动后首先检查「小狼毫算法服务」是否已启动,如未启动,则手动启动 StartWeaselServer(NewRunningDir) @@ -27,6 +30,7 @@ StartWeaselServer(NewRunningDir) ; 无论结果如何,结束脚本 ExitApp +; 定义函数:启动 WeaselServer StartWeaselServer(RunningDir) { Process, Exist, WeaselServer.exe NewPID := ErrorLevel ; ErrorLevel 的值可能会经常变化,所以需要立即保存这个值 @@ -35,3 +39,12 @@ StartWeaselServer(RunningDir) { Run, %RunningDir%\WeaselServer.exe } } + +; 定义函数:查找最新版本的 weasel 目录 +FindLatestWeaselDir(baseDir) { + Loop, Files, %baseDir%\weasel-*, D + { + latestDir := A_LoopFileFullPath + } + return latestDir +}