最近在使用 Visual Studio .NET 2003 開發 Smart Device 項目時,發現 Windows Mobile 5.0 系統存在兩個問題,使用的 PDA 是HP iPAQ 2190。
第一個問題:使用 cabwiz.exe 產生CAB安裝包時INF設定檔裡只能包含ANSI字元,不能包含中文或者其他Unicode字元,否則安裝後中文的部分,例如捷徑、“刪除程式”列表裡的程式名稱等都會出現亂碼。而同樣的安裝包在Pocket PC 2003作業系統裡面就沒有問題,中文的部分能夠正常顯示。更不能容忍的是,VS .NET 2003 附帶的 cabwiz.exe 還可以使用包含中文的INF設定檔來產生CAB安裝包,到了 VS 2005 裡面附帶的 cabwiz.exe 壓根就不能用這樣的INF設定檔了,如果INF檔案裡包含中文,執行的時候直接提示不能產生CAB安裝包。這樣的話,我們根本不能建立帶有中文,並且在Windows Mobile 5.0下面正常使用的CAB安裝包了,我們只能在WM 5.0裡面只用英文的捷徑了,除非手工建立。不知道微軟為何竟會退步?
第二個問題:微軟在WM 5.0以及與之配合使用的ActiveSync 4.x之間的通訊方式作了比較大的更改,現在的模式是PDA和PC機串連時,裝有WM 5.0的PDA作為DHCP伺服器,而PC機上會建立一個名為Windows Mobile-based Device的虛擬網卡,然後PC機作為DHCP用戶端,接受PDA分配的IP地址,這樣建立起一個虛擬網路來完成通訊。不知道微軟這樣設計有什麼優勢,但是比起Windows Mobile 2003的通訊機制我覺得有兩個缺點,其一是PC機必須依賴DHCP Client服務。在很多使用固定IP的電腦上,使用者為了減少資源佔用,都會把這個服務改為手動啟動。而在ActiveSync 4.0的文檔裡並沒有提到這個問題,所以這些使用者初次建立串連的時候會出現無法同步的情況,虛擬網卡一直在嘗試擷取網路地址,我就是一個受害者,具體情況可以看看我在前面的文章。這個問題困擾了我一個下午加一個晚上的時間。其二是採用這種方式虛擬網卡分配的IP地址是169.254.*網段的地址,而以前的方式PDA使用的是192.168.*網段的,以我個人的感覺,一般的防火牆對前面地址的攔截率要明顯高於後者。最明顯的體會就是使用WM5.0的PDA在同步和訪問區域網路時碰到網路連接問題的幾率比原來多太多了。
希望能有高手解釋一下微軟為什麼在WM5.0裡面做了這些改動?有什麼考慮?