Fw: [情報] 新酷音輸入法可能支援 Win 8 app 模式

看板IME (輸入法討論)作者 (PCMan)時間11年前 (2013/09/12 18:27), 編輯推噓2(203)
留言5則, 3人參與, 最新討論串1/1
※ [本文轉錄自 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)

09/13 08:06, , 1F
GJ!
09/13 08:06, 1F

09/13 22:27, , 2F
有考慮把Chewing做成portable的嘛?
09/13 22:27, 2F

09/15 00:35, , 3F
不考慮,輸入法不可能 portable (偽蝦不算真正的IME)
09/15 00:35, 3F

09/15 00:35, , 4F
我也不知道他是怎麼達成的,不過TSF寫出來絕對不portable
09/15 00:35, 4F

09/15 00:35, , 5F
沒有安裝到系統指定位置Win 8 的app也會讀不到
09/15 00:35, 5F
文章代碼(AID): #1ICPSc96 (IME)
文章代碼(AID): #1ICPSc96 (IME)