作者HZYSoft (PCMan)
看板IME
标题Fw: [情报] 新酷音输入法可能支援 Win 8 app 模式
时间Thu Sep 12 18:27:49 2013
※ [本文转录自 EZsoft 看板 #1ICPSTkH ]
作者: HZYSoft (PCMan) 看板: EZsoft
标题: [情报] 新酷音输入法可能支援 Win 8 app 模式
时间: Thu Sep 12 18:27:38 2013
blog 原文:
http://pcmanx.blogspot.tw/2013/09/windows-windows-8-64-bit.html
转贴内文如下:
------------------------------------------------------------------------
虽然先前本来只打算支援 Windows 8 的 desktop mode,但是经过持续研究,
以及寄信请教 TSF aware blog 作者 Eric Brown,参考日文输入法 corvus-skk,
加上对岸强大的开发者,小小输入法的周永 (dgod) 指点,终於知道怎麽做了。
目前新酷音输入法,初步可以部分支援 Windows 8 modern UI,
我在 Windows 8 试用版里面测试,已经可在 metro app 里面使用了!
值得一提的是,对岸高手周永 (dgod),就是我认识的那位 dgod
之前我们还一起开发过 Linux 桌面 LXDE 专案,实在也太巧,
我居然不知道他会写 TSF 输入法!! (我猜他应该也不知道我有在写 XD)
先前从文件上看来,Windows 8 app 模式不能使用许多旧有功能,
很多输入法必要的 API 竟都被标注为 desktop mode only,
所以我一直想不出来怎麽做。原来,在输入法是特例,
虽然 dll 是载入到 app container 内,但是 desktop SDK 的 API 是允许使用的。
终於找到一份文件证实这点:
http://msdn.microsoft.com/en-us/library/windows/desktop/hh848069(v=vs.85).as
px
Quote:
When an IME is loaded into a Windows Store app, it is subject to the same
app container restrictions as the app itself. This behavior ensures that
IMEs are not able to violate Windows Store app security contracts, despite
having access to the desktop SDK (because they are not distributed or
certified by the Windows Store)
所以,输入法虽然跑在 app 内,原 Win32 API 是允许的,但是存取的限制,
仍然受到 app container 安全规范,实地测试发现,可以使用 Registry 的 API
但是在 app 内尝试读写系统登录,都会造成错误。读写 app
以外的档案也会权限不足。
故这些 API 虽然可以调用,但是只要存取到 app 不准许存取的资源,就会发生错误。
总结来说,目前已经可支援 Windows 8 store app,但还有许多限制没有克服
使用者偏好设定,各个 app
内各自独立,不能互相读取,也不能读取系统登录,也不能存取 app 自己 package
以外的档案,所以无法读取设定档,不能和 desktop mode
共用设定。微软官方建议的方式是,建立一个 web service 来储存这些设定。
app 内储存设定有自己的方式,新的 API 不相容旧版
Windows,所以可能还是需要额外帮 Windows 8 开发自己的版本
使用者辞库无法在 app 内使用,因为 app
内读不到外界的档案,只有少数几个许可的位置可读取,很多更是无法写入,但是各个
app 随不同的 capability
又会不同。此问题目前无解。微软官方建议的方式是,这些资料应该放在云端。但是没
网路的时候就不能用了,Windows 8 的这种设计哲学在网路连不上的情况会很难实现。
app mode 和 desktop mode
之间互相沟通预设不被允许,除非经过复杂的安全性设定,但是找不到如何设定的文件
或范例。目前比较确定能用的,是透过 web
service,只不过,为了交换少数资料,而需要架设 web server...真是杀鸡焉用牛刀!
Windows store app mode 下没有语言列,无法显示状态,或存取其他功能。
也许,在 app 模式下关闭使用者辞库功能是个可行的解法,
但是这仍然没有解决 app 内和 desktop mode 设定要如何共用的问题。
该不会真的需要写专用的 web server 吧....
TSF 和 32/64 位元支援都完成了,支援 Windows 8 metro app
有谱了,但还有很长的路要走。
※ 发信站: 批踢踢实业坊(ptt.cc)
※ 转录者: HZYSoft (203.64.247.2), 时间: 09/12/2013 18:27:49
※ 编辑: HZYSoft 来自: 203.64.247.2 (09/12 18:31)
1F:推 s8321414:GJ! 09/13 08:06
2F:推 beastkay:有考虑把Chewing做成portable的嘛? 09/13 22:27
3F:→ HZYSoft:不考虑,输入法不可能 portable (伪虾不算真正的IME) 09/15 00:35
4F:→ HZYSoft:我也不知道他是怎麽达成的,不过TSF写出来绝对不portable 09/15 00:35
5F:→ HZYSoft:没有安装到系统指定位置Win 8 的app也会读不到 09/15 00:35