阅读:3883回复:15
执行yong-quit.exe后能否生成未合并的user.txt
想通过批处理对输入法打包备份
但由于输入的过程中可能会有码表变动未合并 所以尝试在yong-quit之后执行 yong --tool=libmb.so mb.txt out.txt dump --option=head,main,user --format=yong 类似的命令 实验下来发现yong.exe生成user.txt并不是实时的 如果码表变动后立即yong-quit yong.exe可能会未来得及生成新的user.txt 所以会出现一定机率的失败 而主动点击主程序yong.exe系统栏图标右键菜单 点退出时可以生成user.txt 只是这样就没有了自动执行的便捷 可否为yong-quit添加一个命令参数 不是kill而是传送消息给yong.exe 使其正常退出为当前未合并的码表生成user.txt 甚至直接生成合并后的新码表 就像使用主程序系统栏菜单项中的“工具→合并用户码表”一样的效果 若能再进一步为yong-config配置工具添加一个配置选项 开启系统关机重启时自动生成合并后新码表的功能 那就太好了 谢谢先! |
|
沙发#
发布于:2024-04-08 19:38
yong.exe -quit
这种退出模式有点怪异 假设当前已存在正常运行的yong.exe进程 再运行新的yong.exe进程以结束已存在的同样名称的进程(两个同名的进程间传送消息) 这与通过系统栏图标右键菜单退出(单个进程内部消息传递)是两个概念 为了不增加新的文件而让程序的逻辑复杂度增加不是个好主意 如果可以让user.txt的更新接近实时化 使用taskkill结束yong.exe就可以了 所以问题的关键是码表变更后能够快速生成变动后的用户码表文件 当然要以不影响输入法响应为宜 只有保存在硬盘上的文件才让人心里踏实 不是么 |
|
板凳#
发布于:2024-04-07 18:47
|
|
地板#
发布于:2024-04-03 20:58
|
|
5楼#
发布于:2024-04-03 20:54
命令直通车中调用了yong-quit
在执行命令直通车之前记下了yong.exe的PID 命令直通车执行完毕后 yong.exe的PID没变 说明进程没有退出过 老版本的yong-quit类似于taskkill 新版的应该是发送了正常退出消息给yong.exe了 只是这个退出机制可能有些问题 |
|
6楼#
发布于:2024-04-03 20:45
补充一下
奇怪的是yong-quit执行过后有1分钟以上时间后yong.exe自行退出了 在yong.exe退出之前程序依然可以正常输入 感觉上yong.exe收到了正常退出的消息但是因为什么未知原因延迟执行了 又多试了几次 有时立即就退出了 有时会有几秒之后 这个延迟不大可以接受 可能是我系统的问题吧 还有一个问题就是 直接点击进行这个yong-quit是正常的 在命令直通车中通过批处理调用这个yong-quit就会出现不响应无效的问题 |
|
7楼#
发布于:2024-04-03 20:41
|
|
8楼#
发布于:2024-04-03 20:23
yong-quit.exe使用后不能保存的问题我也无法确定,请先升级程序到最新测试版。
yong-quit.exe源代码已丢失,不清楚它为什么特别。重写了一个,我测试过是好的。 |
|
|
9楼#
发布于:2024-04-03 15:07
留个记号备用
rem createBK.bat rem 此脚本合并用户码表后打包备份yong输入法 rem 为合并码表应确保此脚本所在目录为%src% rem 即32位的yong.exe可执行程序所在目录 rem 可在zhengma.txt码表中添加命令直通车 rem bkup $[备份]$GO(createBK.bat) rem 如果想静默执行7-Zip打包 rem 可将7zG.exe改为7z.exe反之亦然 rem 输入法开启时中文输入状态下输入bkup选择备份即可 rem 输入法不开启时单独执行此批处理亦可 rem 用户可根据需要更改路径配置项及码表文件 rem 已知yong.exe合并用户码表时可能存在只识别相对路径的问题 rem 后续若有输入法版本更新再行调整 rem 配置路径 set pack="c:\Program Files\7-Zip" set src=c:\proApp\TotalCMD\addon\yong set cfg=%src%\.yong set tmp=z: set bkup=d:\soft\tool\ime rem 退出输入法 if exist %src%\yong-quit.exe (%src%\yong-quit.exe) else (taskkill /F /IM yong.exe) rem 遍历输入法目录删除升级后残留的旧文件 for /r %src%\ %%a in (*del) do del /f /q %%a rem 若tsf文件夹下dll被占用则需杀掉explorer后手动处理 rem 合并用户码表 if exist %cfg%\user.txt ( if not exist %cfg%\mb (md %cfg%\mb) yong.exe --tool=libmb.so mb\zhengma.txt .yong\mb\zhengma.txt dump --option=head,main,user,adjust --format=yong ) rem 更新合并后的用户码表 if exist %cfg%\mb\zhengma.txt move /y %cfg%\mb\zhengma.txt %src%\mb\ rem 删除配置更改后的旧配置文件 if exist %cfg%\yong.ini.old (move /y %cfg%\yong.ini %src%\) rem 清理并重建用户配置目录 rd /s /q %cfg% md %cfg% copy %src%\yong.ini %cfg%\ rem 打包输入法 %pack%\7z.exe a %tmp%\yong.7z %src% -aoa -m0=BCJ2 -m1=LZMA:d25 -m2=LZMA:d19 -m3=LZMA:d19 -mb0:1 -mb0s1:2 -mb0s2:3 rem 如果存在备份文件就进行备份更新 if exist %bkup%\yong.7z (move /y %tmp%\yong.7z %bkup%\) rem 重启输入法 %src%\yong.exe rem 退出批处理若未退出手动关闭CMD窗口即可 exit |
|
上一页
下一页