(這一章真得很關鍵,無論你是寫應用程序,還是做環境,做測試,甚至於使用者都有必要知道什麼樣的程序適合於沒有問題的運行,由於不同的廠家在實現midp2.0的時候多少有些偏差,所以如果你要寫應用程序盡可能的按照規范,不要沒事找事哦)
應用程序的安裝簡單來說就是下載程序到設備並讓其對用戶可用的進程。應用程序的安裝是MIDP2.0的必要條件。用戶保留對MIDlet suites使用的資源的控制而且可以刪除或者安裝MIDlet Suite。
設備必須保證用戶可以有效的執行MIDlet suite裡面的每個MIDlet。到MIDlet suite裡面包含復數個MIDlet的時候,應該給予用戶提醒。設備可以通過用戶的選項設置來很快的運行MIDlet suite裡面的一個MIDlet。
安裝的時候,用戶應該被告知進度情況而且必須給予用戶機會去取消安裝。安裝被中止的時候必須是設備恢復到安裝前的狀態。
如果MIDlet suite以前在設備上面安裝過,應該把新的安裝視為一次更新。(參見下篇:更新篇)
為了安裝MIDlet suite,應用程序管理器執行以下系列的操作來檢查並且提供給用戶反饋信息。
- 設備通過HTTP開始下載MIDlet suite。如果按照上一篇(發現篇)所說的那樣首先下載了應用程序描述文件的話,MIDlet suite的request就是應用程序描敘文件裡面寫的URL,其他的頭沒有必要。
- 如果服務器或者代理服務器對於MIDlet suite的要求報文的返信是401(Unauthorized)或者407(Proxy Authentication Required)的話,那麼設備應該再次發送要求,發送要求的時候應該把用戶提供的認證信息放在Authorization或者Proxy-Authorization頭的域裡面。認證信息應該由用戶提供:例如提供給用戶對話框用來輸入用戶名和密碼。設備必須最少支持RFC2617的基本認證配置。
- 取得的MIDlet suite和報頭必須用來被檢查以確認MIDlet suite是有效可以被安裝到設備上面的。以下的問題發生的時候必須告知用戶並中止安裝。
- 如果設備上面沒有足夠的空間用來存儲MIDlet suite,設備必須在狀態報告中返回狀態碼901
- 如果JAD文件裡面指定的MIDlet-Jar-URL屬性對應的地方沒有JAR文件,設備必須在狀態報告中返回狀態碼907。
- 如果收到的JAR文件大小不符合JAD文件裡面關於文件大小的描述,設備必須在狀態報告中返回狀態碼904。
- 如果manifest或者其他的文件不能從jad文件裡面解壓縮的話,設備必須在狀態報告中返回狀態碼907。
- 如果manifest沒有按照正確的語法書寫,或者JAR的manifest文件裡面必須有的屬性項沒有的話,設備必須在狀態報告中返回狀態碼907。
- 如果JAD文件裡面的MIDlet-Name,MIDlet-Version,MIDlet-Vendor和JAR的manifest文件裡面同樣屬性的值不一致的話,設備必須在狀態報告中返回狀態碼905。
- 如果MIDlet suite是可信任的,那麼JAD文件裡面的以MIDlet-打頭的屬性值都必須與manifest文件裡面的對應值相同。否則,設備必須在狀態報告中返回狀態碼905。
- 如果應用程序認證失敗的話,設備必須在狀態報告中返回狀態碼909。
- 如果應用程序是一個沒有確認的版本而同樣有著確認版本的程序已經被安裝的情況下,設備必須在狀態報告中返回狀態碼910。
- 如果程序沒有從MIDlet-Permissions屬性裡面的列表裡面得到授權,設備必須在狀態報告中返回狀態碼910。
- 由於認證以外的原因導致一個靜態的push注冊失敗的時候,設備必須在狀態報告中返回狀態碼911。
- 如果安裝的時候丟失了網絡服務,如果可能的話返回狀態碼903。(由於網絡中斷,也許沒有可能去進行狀態報告的傳遞)
- 如果保證這些沒有問題的話,那麼MIDlet suite裡面的MIDlet一定是可以安裝並且用戶可以通過設備中關於MIDlet選擇機制來運行。
- 無論是成功地完成安裝還是發生了不可恢復的錯誤,狀態都必須按照安裝狀態報告裡面說得那樣去報告。