專利名稱:包括多個體驗?zāi)K的應(yīng)用的制作方法
包括多個體驗?zāi)K的應(yīng)用
背景技術(shù):
諸如臺式計算機(jī)、無線電話、游戲控制臺等各種不同類型的計算設(shè)備已經(jīng)變得普遍可用。應(yīng)用開發(fā)者通常需要使他們的應(yīng)用運行在這些不同類型的設(shè)備中的多個設(shè)備上,從而允許更多用戶運行這些應(yīng)用。然而,這通常要求應(yīng)用開發(fā)者在他們?yōu)檫@些不同類型的設(shè)備中的每一個編寫和維護(hù)其應(yīng)用的不同版本時重復(fù)其努力的主要部份。這可能存在問題,因為這增加了應(yīng)用開發(fā)者在編寫和維護(hù)其應(yīng)用的眾多不同版本方面導(dǎo)致的成本和時間。同時,應(yīng)用開發(fā)者想避免由于在其他設(shè)備上的限制而限制一應(yīng)用在某些設(shè)備上的體驗的“最少共同點方案”。
發(fā)明內(nèi)容
提供本發(fā)明內(nèi)容以便以簡化形式介紹將在以下具體實施方式
中進(jìn)一步描述的一 些概念。本發(fā)明內(nèi)容并不旨在標(biāo)識所要求保護(hù)主題的關(guān)鍵特征或必要特征,也不旨在用于限制所要求保護(hù)主題的范圍。根據(jù)一個或多個方面,包括多個體驗?zāi)K的應(yīng)用被安裝在設(shè)備上。當(dāng)該應(yīng)用在設(shè)備上運行時,多個體驗?zāi)K各自實現(xiàn)一組特性。多個體驗?zāi)K中的每一個包括第一組件和第二組件,第一組件包括專用于該設(shè)備的特定類型的代碼,第二組件包括跨多個設(shè)備類型所共有的代碼。該應(yīng)用響應(yīng)于在該設(shè)備上運行的請求而這樣做。根據(jù)一個或多個方面,與應(yīng)用的不同體驗?zāi)K對應(yīng)的不同更新包的目錄被維護(hù)。該應(yīng)用包括當(dāng)該應(yīng)用在設(shè)備上運行時各自實現(xiàn)一組特性的多個體驗?zāi)K。多個體驗?zāi)K中的每一個包括第一組件和第二組件,第一組件包括專用于特定設(shè)備類型的呈現(xiàn)邏輯和資源,第二組件包括跨多個設(shè)備類型所共有的業(yè)務(wù)邏輯。作出關(guān)于是否存在適用于該設(shè)備上的應(yīng)用的更新包的確定。如果存在適用于該設(shè)備上的應(yīng)用的更新包,則將該更新包發(fā)送給該設(shè)備。附圖
簡述在全部附圖中,使用相同的附圖標(biāo)記來指示相同的特征。圖I示出根據(jù)一個或多個實施例的其中能夠?qū)崿F(xiàn)包括多個體驗?zāi)K的應(yīng)用的示例系統(tǒng)。圖2示出根據(jù)一個或多個實施例的運行包括多個體驗?zāi)K的各應(yīng)用的示例設(shè)備。圖3示出根據(jù)一個或多個實施例的支持包括多個體驗?zāi)K的各應(yīng)用的示例平臺。圖4示出根據(jù)一個或多個實施例的更新應(yīng)用的示例。圖5是示出根據(jù)一個或多個實施例的用于為包括多個體驗?zāi)K的各應(yīng)用安裝和獲取更新包的示例過程的流程圖。圖6是示出根據(jù)一個或多個實施例的用于部署對設(shè)備的更新的示例過程的流程圖。圖7示出根據(jù)一個或多個實施例的可被配置成運行包括多個體驗?zāi)K的各應(yīng)用的示例計算設(shè)備。
詳細(xì)描述本文討論包括多個體驗?zāi)K的各應(yīng)用。將包括多個體驗?zāi)K的各應(yīng)用遞送到多個不同類型的設(shè)備,這些應(yīng)用在這些設(shè)備處被安裝并被執(zhí)行。應(yīng)用中的每一體驗?zāi)K實現(xiàn)與該模塊相關(guān)聯(lián)的體驗對應(yīng)的一組一個或多個特征。每一體驗?zāi)K包括通用業(yè)務(wù)邏輯組件,該通用業(yè)務(wù)邏輯組件包括與相關(guān)聯(lián)的體驗對應(yīng)的業(yè)務(wù)邏輯(例如,指令和數(shù)據(jù))。該通用業(yè)務(wù)邏輯組件是所有設(shè)備共有的,并且被提供給各個設(shè)備以供安裝,而不管設(shè)備的類型是什么。每一體驗?zāi)K還包括設(shè)備類型專用呈現(xiàn)組件,該設(shè)備類型專用呈現(xiàn)組件包括與相關(guān)聯(lián)體驗對應(yīng)的呈現(xiàn)邏輯(例如,指令和數(shù)據(jù))以及資源(例如,用于向用戶顯示體驗的資源,諸如圖像、用戶體驗布局標(biāo)記等)。不同的顯示組件被提供給不同類型的設(shè)備,從而允許呈現(xiàn)相關(guān)聯(lián)的體驗是針對特定設(shè)備類型以及該特定設(shè)備類型的能力來定制的。還可將應(yīng)用更新遞送到在其上安裝應(yīng)用的各個設(shè)備。應(yīng)用更新以每個體驗?zāi)K為基礎(chǔ),并且由此更新應(yīng)用的體驗?zāi)K,而不是整個應(yīng)用。可將對體驗?zāi)K的業(yè)務(wù)邏輯的改變提供給在其上運行該應(yīng)用的所有設(shè)備,而不管設(shè)備的類型。然而,對體驗?zāi)K的呈現(xiàn)組件的改變可僅被提供給在其上運行該應(yīng)用、具有與經(jīng)改變的呈現(xiàn)組件對應(yīng)的類型的設(shè)備。圖I示出根據(jù)一個或多個實施例的其中能夠?qū)崿F(xiàn)包括多個體驗?zāi)K的各應(yīng)用的示例系統(tǒng)100。系統(tǒng)100實現(xiàn)了用于當(dāng)在諸如個人計算機(jī)(PC)、電視機(jī)設(shè)備和/或移動設(shè)備等各種設(shè)備上運行應(yīng)用時共同的用戶體驗的環(huán)境。服務(wù)和應(yīng)用在所有三個環(huán)境中基本相似地運行,以便當(dāng)使用應(yīng)用、玩視頻游戲、看視頻等時在從一個設(shè)備轉(zhuǎn)換到下一設(shè)備時得到共同的用戶體驗。設(shè)備102包括支持安裝和執(zhí)行由多個體驗?zāi)K構(gòu)成的各應(yīng)用的應(yīng)用外殼104。在各種實現(xiàn)中,設(shè)備102可以是各種不同類型的計算設(shè)備,諸如計算機(jī)106、移動設(shè)備108或基于電視機(jī)的設(shè)備110。這些不同類型的設(shè)備中的每一個可具有一般不同的構(gòu)造和能力,并且因此計算設(shè)備102可根據(jù)不同的設(shè)備類型中的一個或多個來配置。例如,設(shè)備102可被實現(xiàn)成計算機(jī)106設(shè)備類型,諸如個人計算機(jī)、臺式計算機(jī)、多屏幕計算機(jī)、膝上型計算機(jī)、上網(wǎng)本等。設(shè)備102也可被實現(xiàn)為移動108設(shè)備類型、諸如移動電話、便攜式音樂播放器、便 攜式游戲設(shè)備、平板計算機(jī)、多屏幕計算機(jī)等。設(shè)備102還可被實現(xiàn)為電視機(jī)110設(shè)備類型,諸如在休閑觀看環(huán)境中具有或連接到一般更大的屏幕的設(shè)備。例如,電視機(jī)110設(shè)備類型可包括電視機(jī)、機(jī)頂盒、游戲控制臺等。另外,設(shè)備102可被實現(xiàn)成各種其他類型的設(shè)備,諸如電器設(shè)備(例如,電冰箱、微波爐等)、車載PC、服飾等。本文所描述的技術(shù)可由各種類型的設(shè)備102支持,且不限于在本文描述的各具體示例。在示例系統(tǒng)100中,一個或多個不同類型的多個設(shè)備102可在任何給定時間與云112通信。云112是通過網(wǎng)絡(luò)和/或其他數(shù)據(jù)通信鏈路連接到設(shè)備102的一個或多個服務(wù)器計算機(jī)和/或其他類型的設(shè)備的集合。這樣的網(wǎng)絡(luò)可以是例如因特網(wǎng)、局域網(wǎng)(LAN)、蜂窩式或其他電話網(wǎng)絡(luò)、內(nèi)聯(lián)網(wǎng)、WiFi網(wǎng)絡(luò)、其他公用和/或?qū)S镁W(wǎng)絡(luò)、其組合等。這樣的其他數(shù)據(jù)通信鏈路可以是有線和/或無線鏈路,諸如通用串行總線(USB)鏈路、無線USB鏈路、射頻(RF)鏈路、其他公用和/或?qū)S猛ㄐ沛溌?、其組合等。不同類型的設(shè)備102中的每一個可具有不同的物理要求和能力。本文討論的包括多個體驗?zāi)K的應(yīng)用使得能夠?qū)Ⅲw驗遞送到設(shè)備102,這些體驗既是針對特定設(shè)備類型定制的也是所有設(shè)備類型所公共的。在一個或多個實施例中,設(shè)備的類型被定義,且體驗是針對通用設(shè)備類型來定制的。設(shè)備的類型可通過物理特性(例如,所支持的顯示屏大小、處理器功率、數(shù)據(jù)輸入機(jī)制等)、使用類型、和/或設(shè)備的其他共同特征來定義。云112包括和/或表示一個或多個體驗服務(wù)116和部署服務(wù)118的平臺114。平臺114提取云112的硬件(如服務(wù)器)和軟件資源的底層功能。服務(wù)116和118可包括可由設(shè)備102利用但遠(yuǎn)離設(shè)備102的應(yīng)用和/或數(shù)據(jù)。如上文討論的,服務(wù)116和118可通過網(wǎng)絡(luò)和/或其他數(shù)據(jù)通信鏈路作為一個或多個服務(wù)來提供。平臺114可提取用于將設(shè)備102與其他計算設(shè)備(例如其他設(shè)備102)連接的資源和功能。平臺114還可用于提取用于向?qū)?jīng)由平臺114實現(xiàn)的服務(wù)116的所遇到的需求提供對應(yīng)的規(guī)模級別的資源規(guī)模調(diào)節(jié)。
體驗服務(wù)116包括為應(yīng)用提供各種功能的應(yīng)用和/或數(shù)據(jù)。所提供的特定功能基于應(yīng)用的類型而變化,并且可包括購物或電子商店功能、歌曲或圖像(或其他數(shù)據(jù))存儲和/或檢索功能、搜索功能等。部署服務(wù)118管理對包括多個體驗?zāi)K的應(yīng)用到設(shè)備102的部署。對應(yīng)用的各種改變可隨時間進(jìn)行,并且部署服務(wù)118也管理這些改變到設(shè)備102的部署。這些改變被部署到改變適用的設(shè)備102,如下文更詳細(xì)地討論的。每一應(yīng)用由多個體驗?zāi)K組成,每一體驗?zāi)K實現(xiàn)與該體驗?zāi)K相關(guān)聯(lián)的或由該體驗?zāi)K所提供的體驗的一組一個或多個特性。不同特性涉及可由應(yīng)用的用戶或由另一組件或模塊所調(diào)用的應(yīng)用的不同功能。應(yīng)用中的不同體驗?zāi)K由應(yīng)用的開發(fā)者定義,并且通常被定義以便向應(yīng)用的用戶提供對特征或功能的邏輯分組。特定體驗?zāi)K以及每一體驗?zāi)K中該組特性或功能由應(yīng)用的開發(fā)者來決定。作為示例,假定特定移動設(shè)備可作為便攜式音樂播放器和便攜式游戲設(shè)備來操作。移動設(shè)備上的應(yīng)用可包括與音樂回放體驗相關(guān)聯(lián)的第一體驗?zāi)K,并且實現(xiàn)與該音樂回放體驗有關(guān)的各種特性,諸如傳輸控制(例如,停止、播放、倒帶、隨機(jī)播放等特性)、播放列表選擇以及創(chuàng)建特性等。應(yīng)用還可包括與游戲體驗相關(guān)聯(lián)的第二體驗?zāi)K,并且實現(xiàn)與該游戲體驗相關(guān)聯(lián)的各種特性,諸如游戲選擇特性、與體驗服務(wù)116通信以便進(jìn)行在線游戲等。應(yīng)用還可包括與市場體驗相關(guān)聯(lián)的第三體驗?zāi)K,并且實現(xiàn)與用戶可經(jīng)由其購買新歌曲或游戲的在線市場有關(guān)的各種特性,諸如允許用戶選擇歌曲或游戲來購買的搜索或瀏覽特性、與體驗服務(wù)116通信以提供信用卡或其他信息來購買歌曲或游戲等。每一體驗?zāi)K被分成兩個組件通用業(yè)務(wù)邏輯組件和設(shè)備類型專用呈現(xiàn)組件。通用業(yè)務(wù)邏輯組件包括針對跨所有設(shè)備類型所共同的相關(guān)聯(lián)體驗的業(yè)務(wù)邏輯(例如,代碼一指令和數(shù)據(jù))。無需因不同設(shè)備類型而不同的指令和數(shù)據(jù)被包括在通用業(yè)務(wù)邏輯組件中。包括在通用業(yè)務(wù)邏輯組件中的特定指令和數(shù)據(jù)基于特定應(yīng)用而變化。例如,通用業(yè)務(wù)邏輯組件可包括用于對播放列表中的歌曲進(jìn)行隨機(jī)播放、在文檔內(nèi)搜索單詞或短語、實現(xiàn)電子表格計算功能等的指令和數(shù)據(jù)。設(shè)備類型專用呈現(xiàn)組件包括與相關(guān)聯(lián)體驗對應(yīng)的呈現(xiàn)邏輯(例如,代碼——指令和數(shù)據(jù))以及資源(例如,用于向用戶顯示或以其他方式呈現(xiàn)該體驗的資源,諸如圖像、用戶體驗布局標(biāo)記等)。不同呈現(xiàn)組件可被提供給不同設(shè)備類型,從而允許應(yīng)用的開發(fā)者定制相關(guān)聯(lián)體驗向特定設(shè)備類型的呈現(xiàn)以及該特定設(shè)備類型的能力。盡管可將不同呈現(xiàn)組件提供給不同設(shè)備類型,但可發(fā)生將相同呈現(xiàn)組件提供給不同設(shè)備類型的情形。在一個或多個實施例中,呈現(xiàn)邏輯和資源基于特定設(shè)備類型的物理特性(例如,顯示屏大小、處理器功率、輸入和/或輸出組件等)定制相關(guān)聯(lián)體驗向該設(shè)備類型的呈現(xiàn)。例如,第一呈現(xiàn)邏輯和資源可針對計算機(jī)106設(shè)備類型來定制,計算機(jī)106設(shè)備類型通常具有大屏幕和供數(shù)據(jù)輸入的大鍵盤。第一呈現(xiàn)邏輯和資源可包括用戶界面(UI ),該Π支持在其中顯示數(shù)據(jù)的大窗口和/或框、經(jīng)由鍵盤或鼠標(biāo)的各種不同的用戶輸入等。第二呈現(xiàn)邏輯和資源可針對移動108設(shè)備類型來定制,移動108設(shè)備類型通常具有小屏幕以及可任選的具有供數(shù)據(jù)輸入的小鍵盤。第二呈現(xiàn)邏輯和資源可包括Π,該Π支持在其中顯示數(shù)據(jù)的小窗口和/或框、經(jīng)由話筒(如語音命令)或觸摸屏的各種不同的用戶輸入等。第三呈現(xiàn)邏輯和資源可針對電視機(jī)110設(shè)備類型來定制,電視機(jī)110設(shè)備類型通常具有很大屏幕但沒有供數(shù)據(jù)輸入的鍵盤。第三呈現(xiàn)邏輯和資源可包括Π,該Π支持在其中顯示數(shù)據(jù)的大窗口和/或框、經(jīng)由手持式遙控或手持式游戲控制器的各種不同的用戶輸入等。
應(yīng)當(dāng)注意,本文討論的應(yīng)用不僅僅是被下載到設(shè)備102上并在web瀏覽器中運行的web應(yīng)用。相反,在各種環(huán)境中本文討論的應(yīng)用從云112中被部署到設(shè)備102并安裝在設(shè)備102上。對應(yīng)用的各種更新也可從云112中被部署到設(shè)備102并安裝在設(shè)備102上。此外,本文討論的應(yīng)用可在設(shè)備102未連接到云112時運行(盡管諸如訪問在線市場之類的某一功能可能在設(shè)備102未連接到云112時對設(shè)備102不可用)。另外,本文討論的在應(yīng)用中呈現(xiàn)不同體驗是為其上運行該應(yīng)用的特定設(shè)備類型定制的。圖2示出根據(jù)一個或多個實施例的運行包括多個體驗?zāi)K的應(yīng)用的示例設(shè)備200。設(shè)備200可以是各種不同類型的計算設(shè)備,并且是例如圖I的設(shè)備102。設(shè)備200包括應(yīng)用外殼202和操作系統(tǒng)204。操作系統(tǒng)204可以是各種常規(guī)操作系統(tǒng)中的任一個,諸如可從美國華盛頓州雷蒙德市的微軟公司獲得的操作系統(tǒng)中Windows 操作系統(tǒng)家族中的任一個,可從美國加利福尼亞州庫珀蒂諾市的蘋果公司獲得的操作系統(tǒng)中Mac OS 操作系統(tǒng)軟件家族中的任一個,基于Linux的操作系統(tǒng),基于Google Chrome的操作系統(tǒng),基于電話的操作系統(tǒng),基于便攜式游戲設(shè)備的操作系統(tǒng),基于機(jī)頂盒的操作系統(tǒng)等。應(yīng)用外殼202由操作系統(tǒng)204運行,以支持包括多個體驗?zāi)K的應(yīng)用。另選地,應(yīng)用外殼202可被包括作為操作系統(tǒng)204的一部分,或者操作系統(tǒng)204可被包括作為應(yīng)用外殼202的一部分。一個或多個附加應(yīng)用或外殼(未不出)也可由操作系統(tǒng)204運行。應(yīng)用外殼202支持本文討論的包括多個體驗?zāi)K的應(yīng)用。在所示示例中,應(yīng)用218被示為包括在外殼202中或在外殼202中運行。盡管單個應(yīng)用218被示為在外殼202中運行,但可以理解多個應(yīng)用可并發(fā)地在外殼202中運行。另外,盡管示出單個應(yīng)用外殼202,但可以理解多個應(yīng)用外殼202 (各自運行零個或多個應(yīng)用)可在設(shè)備200上并發(fā)地運行。應(yīng)用218包括多個體驗?zāi)K220(1),…,220 (η),其中每一體驗?zāi)K都與不同體驗相關(guān)聯(lián)。在一個或多個實施例中,多個體驗?zāi)K220的集合是應(yīng)用218,并且應(yīng)用218中除體驗?zāi)K220以外沒有包括附加組件或模塊。因此,在這些實施例中,體驗?zāi)K220可以是外殼202中運行的單獨模塊且共同作為該應(yīng)用。外殼202包括設(shè)備/服務(wù)通信框架212、體驗存儲214、以及核心組件接口 216??梢岳斫?,設(shè)備/服務(wù)通信框架212以及核心組件接口 216的功能可作為單個組件或模塊、或分開的組件或模塊來實現(xiàn)。還可以理解,設(shè)備/服務(wù)通信框架212以及核心組件接口 216之一或兩者的功能可作為多個組件或模塊來實現(xiàn)。設(shè)備/服務(wù)通信框架212管理設(shè)備200與z (如圖I的z 112)之間的通信。應(yīng)用218的各組件可通過向設(shè)備/服務(wù)通信框架212發(fā)送請求和/或從設(shè)備/服務(wù)通信框架212接收響應(yīng)或其他信息來與云通信。設(shè)備/服務(wù)通信框架被配置有或以其他方式可訪問準(zhǔn)許設(shè)備200與云通信的各種合適的設(shè)置和協(xié)議。因此,減輕了應(yīng)用218管理與云的通信的負(fù)擔(dān)。相反,應(yīng)用218的各組件可調(diào)用設(shè)備/服務(wù)通信框架212所展示的標(biāo)準(zhǔn)接口(例如應(yīng)用編程接口(API))。不同設(shè)備類型上不同設(shè)備/服務(wù)通信框架212可按不同方式與云通信,但仍然向應(yīng)用提供相同接口。應(yīng)用開發(fā)者可編寫應(yīng)用,而無需具體知道在其上運行那些應(yīng)用的設(shè)備如何與云通信。體驗存儲214管理應(yīng)用218的各組件的存儲。應(yīng)用從云(如圖I的云112)中被部署到設(shè)備200。如上文討論的,每一應(yīng)用包括多個用戶體驗?zāi)K,且每一用戶體驗?zāi)K包括多個組件。當(dāng)應(yīng)用被部署時,這些各個組件由設(shè)備/服務(wù)通信框架212接收并被提供給體驗存儲214。體驗存儲214將接收到的組件存儲在非易失性存儲器中(例如磁盤、光盤、閃存
O當(dāng)應(yīng)用218首次被安裝在設(shè)備200上時,設(shè)備200的組件(例如上文討論的核心組件接口 216)執(zhí)行該安裝。對應(yīng)用218的安裝包括各個安裝動作,諸如將特定文件寫入存儲設(shè)備上的特定位置,將信息添加到注冊存儲(例如操作系統(tǒng)注冊表)等??蓪⒏魑募懭塍w驗存儲214和/或設(shè)備200的其他存儲設(shè)備。安裝之后,應(yīng)用218可在外殼202中被運行。應(yīng)用218隨后也可在應(yīng)用218的新版本變得可用的情況下被更新,如以下更詳細(xì)討論的。應(yīng)用218可響應(yīng)于從設(shè)備200的用戶接收到的請求或另選地響應(yīng)于來自另一組件、模塊或設(shè)備的請求而被運行。響應(yīng)于運行應(yīng)用218的請求,外殼202從體驗存儲214和/或設(shè)備200的其他存儲設(shè)備中獲取所安裝的應(yīng)用218的文件,并執(zhí)行所獲取的組件。要獲取并執(zhí)行的特定組件可以例如在體驗存儲214所維護(hù)的文件或其他信息中被標(biāo)識。在一個或多個實施例中,體驗存儲214中可包括組件218的多個版本。例如,組件的經(jīng)更新版本可按更新包的形式由設(shè)備/服務(wù)通信框架212接收,如下文更詳細(xì)地討論的。安裝更新包導(dǎo)致設(shè)備200上組件的新版本。先前部署的各組件以及任何更新包可在體驗存儲214中被維護(hù),使得這些組件的經(jīng)更新版本和先前版本兩者都在體驗存儲214中被維護(hù)。維護(hù)該組件的先前版本允許例如回退或返回應(yīng)用218的先前版本、保存對應(yīng)用218的改變的記錄等??扇芜x地,體驗存儲214可基于各個準(zhǔn)則來刪除組件的各先前版本,諸如在經(jīng)過特定時間量之后,在特定數(shù)量的該組件的更新包隨后已被存儲在體驗存儲214中之后等。對包括在應(yīng)用218中的不同體驗?zāi)K的指示以及那些體驗?zāi)K的版本號也在體驗存儲214中被維護(hù)。這些版本號標(biāo)識安裝在設(shè)備200上的體驗?zāi)K的當(dāng)前版本,并且隨著在設(shè)備200上安裝那些體驗?zāi)K中的組件的新版本,這些版本號被更新。應(yīng)用218的主版本數(shù)量也可在體驗存儲214中被維護(hù)。主版本號標(biāo)識安裝在設(shè)備200上的應(yīng)用218的當(dāng)前版本,并且隨著在設(shè)備200上安裝應(yīng)用218的體驗?zāi)K中的組件的新版本,該主版本號被更新。核心組件接口 216管理與操作系統(tǒng)204以及其他設(shè)備200的通信,并且還維護(hù)與外殼202內(nèi)的各種通信有關(guān)的各種數(shù)據(jù)以及支持這些通信。在一個或多個實施例中,核心組件接口 216維護(hù)數(shù)據(jù)高速緩存,該數(shù)據(jù)高速緩存存儲由設(shè)備/服務(wù)通信框架212發(fā)送給云的各請求的結(jié)果。這一數(shù)據(jù)高速緩存可被臨時維護(hù)(例如當(dāng)應(yīng)用218或外殼202正在運行時),或另選地可被持久存儲在非易失性存儲器中達(dá)更長的持續(xù)時間。另外,在一個或多個實施例中,核心組件接口 216包括提取設(shè)備專用命令的呈現(xiàn)框架。不同類型的設(shè)備以及甚至同一類型的不同設(shè)備(諸如不同模型的設(shè)備,來自不同制造商的設(shè)備等)可按不同方式實現(xiàn)特定呈現(xiàn)功能。接口 216的呈現(xiàn)框架提取實現(xiàn)特定呈現(xiàn)功能的方式,從而向應(yīng)用218的組件提供標(biāo)準(zhǔn)接口(例如API)。應(yīng)用的組件由此可調(diào)用核心組件接口 216所展示的標(biāo)準(zhǔn)接口,從而允許應(yīng)用開發(fā)者編寫這些應(yīng)用,而無需具體知道特定呈現(xiàn)命令或信息如何被傳送到在其上運行該應(yīng)用的設(shè)備的特定硬件。在一個或多個實施例中,呈現(xiàn)框架可以是可從美國華盛頓州雷蒙德市的微軟公司獲得的Silverlight 平臺。應(yīng)用218包括多個體驗?zāi)K220(1),…,220 (η),其中每一體驗?zāi)K都與不同體驗相關(guān)聯(lián)。如上文討論的,這些不同體驗包括不同組的特性。另外,每一體驗?zāi)K220包括設(shè)備類型專用呈現(xiàn)組件222以及通用業(yè)務(wù)邏輯組件224。如上文討論的,通用業(yè)務(wù)邏輯組件224包括針對跨所有設(shè)備類型所共同的相關(guān)聯(lián)體驗的業(yè)務(wù)邏輯(例如,指令和數(shù)據(jù))。設(shè)備類型專用呈現(xiàn)組件222包括針對專用于設(shè)備200的類型或為設(shè)備200的類型定制的相關(guān)聯(lián)體驗的呈現(xiàn)邏輯(例如,指令和數(shù)據(jù))以及資源(例如,用于向用戶顯示或以其他方式呈現(xiàn)該體驗的資源,諸如圖像、用戶體驗布局標(biāo)記等)。在一個或多個實施例中,應(yīng)用外殼202 (例如,經(jīng)由核心組件接口 216)管理組件222和224的執(zhí)行,使得體驗?zāi)K220彼此隔離。這一隔離阻止一個體驗?zāi)K220中的組件直接訪問另一體驗?zāi)K220的組件(或組件使用的通用存儲空間)。這一隔離也可被稱為沙箱化,并且可由外殼202以各種不同的常規(guī)方式來實現(xiàn)。盡管體驗?zāi)K220被阻止彼此直接訪問,但在一個或多個實施例中,核心組件接口 216包括交叉體驗交互模塊226,交叉體驗交互模塊226支持交叉體驗交互以便允許單個隔離體驗內(nèi)不可能的更豐富的功能。交叉體驗交互模塊226提供一個體驗?zāi)K220可經(jīng)由 其向另一體驗?zāi)K220發(fā)送消息的接口。這一消息可包括例如,所請求的動作、零個或多個參數(shù)、以及要向其發(fā)送消息的體驗的指示。這些參數(shù)通常包括指向數(shù)據(jù)的指針或數(shù)據(jù)的其他標(biāo)識符(例如,指向特定歌曲標(biāo)題的指針、指向特定電影數(shù)據(jù)的指針等),但另選地這些參數(shù)可包括實際數(shù)據(jù)(例如,歌曲標(biāo)題、電影數(shù)據(jù)等)。例如,一個體驗?zāi)K220可以是提供允許用戶維護(hù)他或她的庫(例如,歌曲或其他音頻和/或視頻內(nèi)容的庫)并從中選擇特定內(nèi)容的內(nèi)容庫體驗的內(nèi)容庫體驗?zāi)K,而另一體驗?zāi)K可以是提供允許對特定內(nèi)容的進(jìn)行回放的內(nèi)容回放體驗的內(nèi)容回放體驗?zāi)K。內(nèi)容庫體驗?zāi)K可向內(nèi)容回放體驗?zāi)K發(fā)送“播放歌曲”消息,該消息帶有作為用戶選來進(jìn)行回放的特定內(nèi)容的媒體項標(biāo)識符的參數(shù)。另外,在一個或多個實施例中,體驗?zāi)K220可向交叉體驗交互模塊226注冊,以指示體驗?zāi)K220可執(zhí)行的動作的類型。該注冊可包括例如可能被請求的體驗?zāi)K220可執(zhí)行的動作的列表。其他體驗?zāi)K220可查詢交叉體驗交互模塊226以標(biāo)識所請求的哪些動作可由哪些體驗?zāi)K220執(zhí)行,并且由此可以知道要向哪個體驗?zāi)K220發(fā)送特定消息以便使所請求的特定動作被執(zhí)行。另選地,對于所請求的任何給定動作,只有一個體驗?zāi)K220可向交叉體驗交互模塊226注冊為能夠執(zhí)行該動作。因此,如果另一體驗?zāi)K220想要使該動作被執(zhí)行,則請求該特定動作的消息(連同適當(dāng)?shù)膮?shù))可被發(fā)送給交叉體驗交互模塊226。交叉體驗交互模塊226知道哪個體驗?zāi)K220被注冊用于執(zhí)行所請求的動作,并且將消息提供給該體驗?zāi)K220。在一個或多個實施例中,交叉體驗交互模塊226還支持將響應(yīng)消息返回給請求體驗?zāi)K220 (從其中接收請求特定動作的消息的體驗?zāi)K220)。響應(yīng)消息可包括例如,所請求的數(shù)據(jù),該動作已被執(zhí)行的確認(rèn)等。發(fā)送響應(yīng)消息的響應(yīng)體驗?zāi)K220可標(biāo)識要向其發(fā)送響應(yīng)消息的請求體驗?zāi)K220 (例如,如果對請求體驗?zāi)K220的指示由交叉體驗交互模塊226提供給該體驗?zāi)K)。另選地,交叉體驗交互模塊226可維護(hù)已發(fā)送的消息的記錄,并且將響應(yīng)消息轉(zhuǎn)發(fā)給請求體驗?zāi)K220,而無需響應(yīng)體驗?zāi)K知道哪個體驗?zāi)K220是請求體驗?zāi)K220??赡馨l(fā)生體驗?zāi)K220不理解它接收到的消息的情形。例如,消息可請求接收體驗?zāi)K220未執(zhí)行(或不愿意執(zhí)行)的動作,接收體驗?zāi)K可能是不支持該動作的較老版本 等。在這樣的情形中,該消息可簡單地被接收體驗?zāi)K220忽略。另選地,接收體驗?zāi)K220可返回響應(yīng)消息或所請求的動作未被執(zhí)行的其他指示。在一個或多個實施例中,體驗?zāi)K220在彼此發(fā)送消息時采用基于統(tǒng)一資源定位符(URL)的協(xié)議。要向其發(fā)送消息的體驗?zāi)K220、所請求的動作、以及參數(shù)被嵌入在URL中。該URL的記錄可由發(fā)送消息的體驗?zāi)K220保存,從而允許消息歷史被維護(hù),允許將帶有撤銷和/或重做命令的消息發(fā)送給體驗?zāi)K220等。另外,在一個或多個實施例中,核心組件接口216支持跨設(shè)備通信,從而允許設(shè)備200與一個或多個其他設(shè)備通信。例如,跨設(shè)備通信允許圖I的不同設(shè)備102彼此通信??缭O(shè)備通信可通過各種不同網(wǎng)絡(luò)或通信鏈路來執(zhí)行,類似于上文討論的與云(如圖I的云
112)的通信。核心組件接口 216可以支持以不同方式跨設(shè)備通信。在一個或多個實施例中,核心組件接口 216包括交互模塊,該交互模塊支持以和設(shè)備/服務(wù)通信框架212與云(如圖I的云112)通信類似的方式與其他設(shè)備通信。核心組件接口 216展示應(yīng)用218的組件可調(diào)用的標(biāo)準(zhǔn)接口,該標(biāo)準(zhǔn)組件類似于上文討論的框架212所展示的接口。另選地,可以(例如由框架212)展示單個接口,并且應(yīng)用218的組件訪問另一設(shè)備的請求可由框架212路由到核心組件接口 216而不是路由到云。因此,期望將通信發(fā)送給另一設(shè)備的應(yīng)用218的組件可按與經(jīng)由框架212將通信發(fā)送給云類似的方式發(fā)送該通信,并可按與經(jīng)由框架212從云接收通信類似的方式從該其他設(shè)備接收響應(yīng),并且無需考慮用于與其他設(shè)備通信的各種設(shè)置和/或協(xié)議。相反,核心組件接口 216被配置有或以其他方式可訪問這些用于與其他設(shè)備通信的設(shè)置和/或協(xié)議。核心組件接口 216還被配置成標(biāo)識設(shè)備200可與之通信的其他設(shè)備200。其他設(shè)備可按多種不同方式來標(biāo)識,諸如使用常規(guī)藍(lán)牙設(shè)備發(fā)現(xiàn)技術(shù),使用匹配服務(wù)(如圖I的體驗服務(wù)116所提供的)等。盡管本文包括與應(yīng)用218的更新有關(guān)的各種討論,但可以理解,設(shè)備200的其他組件或模塊也可被更新。例如,外殼202可被更新。對設(shè)備200的這些其他組件或模塊的更新可按多種方式提供給設(shè)備200并在設(shè)備200上進(jìn)行,諸如使用與本文討論的用于更新應(yīng)用218的技術(shù)類似的技術(shù),或使用其他技術(shù)。圖3示出根據(jù)一個或多個實施例的支持包括多個體驗?zāi)K的應(yīng)用的示例平臺300。平臺300可以是例如圖I的平臺114。平臺300可使用各種不同類型的服務(wù)器或運行各種軟件的其他計算設(shè)備中的一個或多個來實現(xiàn)。平臺300包括應(yīng)用接口 302,一個或多個體驗專用服務(wù)304,以及部署服務(wù)306。應(yīng)用接口 302是平臺300所展示的允許運行在設(shè)備(如圖I的設(shè)備102或圖2的設(shè)備200)上的應(yīng)用與平臺300通信的接口(例如API)。在一個或多個實施例中,圖2中設(shè)備200的設(shè)備/服務(wù)通信框架212通過調(diào)用應(yīng)用接口 302與平臺300通信。設(shè)備經(jīng)由應(yīng)用接口 302訪問體驗專用服務(wù)304和/或部署服務(wù)306。體驗專用服務(wù)304例如是圖I的體驗服務(wù)116。體驗專用服務(wù)116包括為應(yīng)用提供各種功能的應(yīng)用和/或數(shù)據(jù)。所提供的特定功能基于服務(wù)304為其提供功能的應(yīng)用的類型而變化。例如,體驗專用服務(wù)304提供的特定功能可包括購物或電子商店功能,歌曲或圖像(或其他數(shù)據(jù))存儲和/或檢索功能,搜索功能,朋友或伙伴匹配以供在線游戲,社交聯(lián) 網(wǎng)功能等。部署服務(wù)306管理各應(yīng)用到設(shè)備(如圖I的設(shè)備102或圖2的設(shè)備200)的部署。將應(yīng)用部署到設(shè)備包括對該應(yīng)用的初始部署(例如當(dāng)該應(yīng)用被首次安裝在該設(shè)備上時)。將應(yīng)用部署到設(shè)備還包括部署對安裝在設(shè)備上的應(yīng)用的改變。另選地,要在設(shè)備上首次安裝的應(yīng)用可按其他方式獲取,諸如從光盤(如DVD或CDR0M)、從另一服務(wù)等獲取。然而,即使供在設(shè)備上首次安裝的應(yīng)用是從除部署服務(wù)306以外處獲取的,部署服務(wù)306隨后仍管理該應(yīng)用的部署改變。應(yīng)用開發(fā)者出于各種原因可能希望在各種時間改變該應(yīng)用。例如,開發(fā)者可能期望向該應(yīng)用添加新功能,修復(fù)在該應(yīng)用中找到的問題,改變(如由于用戶反饋)該應(yīng)用在特定類型的設(shè)備上呈現(xiàn)信息的方式等等。這些改變的范圍可以從對應(yīng)用的非常顯著的改變到對應(yīng)用的非常微小的改變。在開發(fā)者改變應(yīng)用時,開發(fā)者改變該應(yīng)用中一個或多個體驗?zāi)K的一個或多個組件,從而導(dǎo)致體驗?zāi)K的新版本。開發(fā)者通常不需要改變整個應(yīng)用。相反,僅需要改變受所期望的改變影響的體驗?zāi)K。例如,如果開發(fā)者希望作出僅對包括十個體驗?zāi)K的應(yīng)用中一個體驗?zāi)K產(chǎn)生影響的改變,則僅這一個體驗?zāi)K的新版本需要被生成并被部署到設(shè)備。在一個或多個實施例中,對體驗?zāi)K中組件的改變通過向其上安裝該應(yīng)用且該改變適用的設(shè)備發(fā)送經(jīng)改變的體驗?zāi)K的更新包來部署。更新包可按不同方式標(biāo)識該改變,諸如通過包括該體驗?zāi)K的一個或多個替換組件,通過包括對組件的一個或多個改變的指示(如該組件的新版本與該組件的先前版本之間的差異列表)等。更新包還可包括被添加到該應(yīng)用的新體驗?zāi)K的新組件。當(dāng)開發(fā)者創(chuàng)建新更新包以改變應(yīng)用時,開發(fā)者將該新更新包提供給平臺300。部署306包括存儲這些更新包的更新儲存庫312。更新包的先前版本也可在更新儲存庫312中維護(hù),從而導(dǎo)致該體驗?zāi)K的多個不同版本的更新包被包括在更新儲存庫312中。設(shè)備更新組件314管理更新儲存庫312,并且還向適當(dāng)?shù)脑O(shè)備提供適當(dāng)?shù)母掳?。設(shè)備更新組件314可維護(hù)更新包的所有先前版本,或另選地可基于各種準(zhǔn)則刪除更新包的先前版本。例如,設(shè)備更新組件314可在同一組件的特定數(shù)量的更新包隨后已被存儲在更新儲存庫312中之后經(jīng)過了特定時間量后刪除先前更新包,等等。設(shè)備更新組件314還在版本目錄316中維護(hù)描述各種更新包的信息。版本目錄316可以是諸如表或列表等各種不同數(shù)據(jù)結(jié)構(gòu),這些數(shù)據(jù)結(jié)構(gòu)標(biāo)識與存儲在更新儲存庫312中的更新包有關(guān)的各種信息。版本目錄316允許設(shè)備更新組件314基于從設(shè)備接收到的對版本號的指示來確定更新儲存庫312中存儲的哪些(如果有的話)更新包要被部署到該設(shè)備。在一個或多個實施例中,版本目錄316包括每一應(yīng)用的不同表,或另選地同一表可用于多個應(yīng)用并包括對該表中哪一信息對應(yīng)于哪一應(yīng)用的指不。應(yīng)當(dāng)注意,對體驗?zāi)K的某些改變可能不適用于在其上安裝應(yīng)用的所有類型的設(shè)備。例如,可針對一種特定設(shè)備類型而不是其他設(shè)備類型作出對體驗?zāi)K中設(shè)備專用呈現(xiàn)組件的改變。因此,對該體驗?zāi)K的改變適用于這一特定類型的設(shè)備,而不適用于其他類型的設(shè)備。在一個或多個實施例中,版本目錄316包括安裝(或可以安裝)在設(shè)備上的每一應(yīng) 用的表或列表,并且每一個這樣的表包括一個或多個記錄。每一記錄對應(yīng)于存儲在更新儲存庫312中的特定更新包。與版本目錄316中的記錄對應(yīng)的特定更新包可按不同方式來標(biāo)識。在一個或多個實施例中,每一記錄至少包括體驗?zāi)K標(biāo)識符、主版本號、以及設(shè)備類型。更新儲存庫312也通過該體驗?zāi)K標(biāo)識符、主版本號以及設(shè)備類型來鍵控,從而維護(hù)版本目錄316的記錄與更新儲存庫312之間的對應(yīng)關(guān)系。表I示出根據(jù)一個或多個實施例的版本目錄316的記錄中所包括的信息的示例。應(yīng)當(dāng)注意表I是一個示例,而另選地在版本目錄316的記錄中可包括不同信息,和/或表I中包括的某些信息可能在版本目錄316的記錄中未包括。表I~主版本號每次存在應(yīng)用的新版本時從先前值遞增(不管哪一體 驗?zāi)K被改變)
體驗標(biāo)識其中發(fā)生改變發(fā)生的體驗?zāi)K的標(biāo)識符。
符
^體驗版本從其中改變發(fā)生的體驗?zāi)K的先前值遞增。
P
^立即更新指示該設(shè)備要立即安裝新版本還是可推遲直到稍后· 的時間。
^設(shè)備類型對更新包適用的一個或多個設(shè)備類型的指示。
掩碼
用戶標(biāo)識對更新包適用的一個或多個用戶的指示。
符
^位置標(biāo)識對更新包適用的一個或多個設(shè)備位置的指示。
符每次存在應(yīng)用的新版本時(這也可被稱為每次將該應(yīng)用的新更新包添加到更新儲存庫312時),該應(yīng)用的主版本號遞增。當(dāng)設(shè)備更新組件314接收對在設(shè)備上安裝該應(yīng)用的當(dāng)前版本的指示時,設(shè)備更新組件314將接收到的版本與版本目錄316中該應(yīng)用的最新近主版本號作比較。如果兩個版本號相同,則不存在要部署到設(shè)備的新更新包。然而,如果兩個版本號不相同,則存在該應(yīng)用的新版本,因此設(shè)備更新組件314確定是否存在要被部署到該設(shè)備的一個或多個更新包。體驗標(biāo)識符指示更新包改變了該應(yīng)用中所包括的多個體驗?zāi)K中的哪個體驗?zāi)K。通常,一不同更新包包括對單個體驗?zāi)K的改變,盡管另選地一更新包可包括對多個體驗?zāi)K的改變。每次存在對該體驗?zāi)K的改變時,體驗版本號遞增。因此,每次存在體驗?zāi)K的新更新包時,該體驗?zāi)K的體驗版本號遞增。由此,每次存在對該應(yīng)用中所包括的任一體驗?zāi)K的改變時,主版本號遞增,而僅當(dāng)存在對體驗標(biāo)識符標(biāo)識出的體驗?zāi)K的改變時體驗版本號遞增。體驗版本號在更新包添加新體驗?zāi)K的情況下可具有特定值(如,值為I)。立即更新字段指示安裝對應(yīng)更新包要立即發(fā)生還是可被推遲。應(yīng)用開發(fā)者指示安裝對應(yīng)更新包要立即發(fā)生還是可被推遲,并且這一指示被添加作為與特定更新包對應(yīng)的記錄的立即更新字段。如上所述,不是所有更新包都可適用于所有設(shè)備。因此,即使版本目錄316中該應(yīng)用的主版本號不同于特定設(shè)備上所安裝的該應(yīng)用的當(dāng)前版本,該應(yīng)用的較新版本仍可能不適用于該特定設(shè)備。設(shè)備更新組件314基于設(shè)備類型掩碼、用戶標(biāo)識符以及位置標(biāo)識符中的一個或多個來確定更新包是否適用于特定設(shè)備。用戶標(biāo)識符和位置標(biāo)識符可任選地用于僅在設(shè)備的用戶決定(或另選地沒有決定不)允許他或她的用戶標(biāo)識符和/或位置標(biāo)識符以此方式被使用的情況下確定更新包是否適用于特定設(shè)備。設(shè)備類型掩碼指示更新包適用的一個或多個設(shè)備類型。應(yīng)用開發(fā)者指示特定更新包適用的設(shè)備類型,并且這一指示被添加作為與該特定更新包對應(yīng)的記錄的設(shè)備類型掩碼。類似地,用戶標(biāo)識符指示更新包適用的一個或多個用戶。應(yīng)用開發(fā)者可能期望例如測試應(yīng)用的兩個不同版本。開發(fā)者創(chuàng)建帶有兩個不同版本的兩個更新包,指示哪些用戶接收哪些版本,并且這一指示被添加到對應(yīng)記錄的用戶標(biāo)識符字段中??赏ㄟ^例如與用戶相關(guān)聯(lián)的用戶名(例如,如果用戶已向平臺300提供登錄信息)、設(shè)備的標(biāo)識符或物理特性等來標(biāo)識用戶。另選地,某些用可以注冊成特定應(yīng)用的測試者。設(shè)備更新組件314接收對特 定設(shè)備的用戶是否已注冊成測試者的指示(例如,從該設(shè)備本身、或從平臺300的另一組件或模塊等接收)。用戶標(biāo)識符則可基于設(shè)備的用戶的標(biāo)識符來指示對應(yīng)更新包是否適用于該設(shè)備。位置標(biāo)識符指示更新包適用的一個或多個設(shè)備位置。應(yīng)用開發(fā)者可能期望例如具有不同國家、不同洲、基于其他地理位置或邊界、或基于其他基于位置的邊界的應(yīng)用的不同版本。開發(fā)者創(chuàng)建帶有兩個不同版本的不同更新包,指示哪些設(shè)備位置將接收哪些版本,并且這一指示被添加到對應(yīng)記錄的位置標(biāo)識符字段中。設(shè)備更新組件314接收對特定設(shè)備的位置的指示(例如,從該設(shè)備本身、或從平臺300的另一組件或模塊等接收)。位置標(biāo)識符則可基于設(shè)備的位置來指示對應(yīng)更新包是否適用于該設(shè)備。設(shè)備更新組件314可響應(yīng)于各種不同事件和/或在各種不同時間,將一個或多個更新包發(fā)送給在其上安裝應(yīng)用的設(shè)備。在一個或多個實施例中,設(shè)備的核心組件接口(如圖2的核心組件接口 216)被配置成當(dāng)應(yīng)用開始執(zhí)行時、當(dāng)對應(yīng)用的執(zhí)行終止時、安裝在設(shè)備上的應(yīng)用每次向平臺300提交請求時等,以有規(guī)律或無規(guī)律的間隔(例如每天)發(fā)送更新檢查請求以訪問部署服務(wù)306。設(shè)備發(fā)送的更新檢查請求包括對設(shè)備類型的指示以及設(shè)備上所安裝的當(dāng)前應(yīng)用的主版本號。設(shè)備更新組件314檢查版本目錄316以確定是否存在適用于該設(shè)備的、對該應(yīng)用的體驗?zāi)K中的任一個的更新包。如果存在適用于該設(shè)備的、對該應(yīng)用的體驗?zāi)K中的任一個的更新包,則那些更新包被部署到該設(shè)備;否則,沒有更新包被部署到該設(shè)備。另外地,該設(shè)備可按其他方式檢查對應(yīng)用的更新。例如,更新檢查請求可包括特定體驗?zāi)K的標(biāo)識符以及該設(shè)備上所安裝的當(dāng)前應(yīng)用的體驗?zāi)K的體驗版本號,而不是發(fā)送該設(shè)備上所安裝的當(dāng)前應(yīng)用的主版本號。該設(shè)備由此可在逐個體驗?zāi)K的基礎(chǔ)上檢查更新。在其他實施例中,平臺300可將更新包推送給設(shè)備,而不是使設(shè)備將更新檢查請求發(fā)送給平臺300。例如,設(shè)備更新組件314可維護(hù)各種設(shè)備上所安裝的應(yīng)用的主版本號(和/或體驗版本號)的記錄。當(dāng)適用于設(shè)備但尚未被部署到該設(shè)備的更新包可用時,設(shè)備更新組件314將該更新包部署到該設(shè)備。
部署服務(wù)306還支持撤銷更新包。在一個或多個實施例中,為撤銷更新包,開發(fā)者提供替換更新包(該替換更新包可能是例如在已撤銷的更新包之前所使用的先前更新包)。開發(fā)者還指示對替換更新包的安裝要立即發(fā)生。替換更新包將由此被部署到適當(dāng)?shù)脑O(shè)備,以便有效地撤銷先前更新包。如上文討論的,當(dāng)開發(fā)者改變應(yīng)用時,開發(fā)者提供更新包以供將該改變存儲在更新儲存庫312中、以及描述該更新包的信息以供包括在版本目錄316中。開發(fā)者可按不同方式提供該更新包和描述該更新包的信息。例如,該更新包以及描述該更新包的信息可經(jīng)由電子通訊(如電子郵件)、經(jīng)由光盤或其他便攜式存儲介質(zhì)等提供給平臺300的管理員。平臺300的管理器隨后可將該更新包發(fā)送給更新儲存庫312而將描述該更新包的信息發(fā)送給版本目錄316。另選地,該更新包以及描述該更新包的信息可由設(shè)備更新組件314自動獲取。例如,開發(fā)者可在服務(wù)器或其他計算設(shè)備上維護(hù)該更新包以及描述該更新包的信息(按部署 服務(wù)306維護(hù)該更新包以及描述該更新包的信息類似的方式)。設(shè)備更新組件314可將更新請求發(fā)送給開發(fā)者所維護(hù)的計算設(shè)備,并且從該計算設(shè)備獲取該更新包以及描述該更新包的信息。由此,部署服務(wù)306可按與設(shè)備從部署服務(wù)306獲取該更新包以及描述該更新包的信息類似的方式,從開發(fā)者所維護(hù)的計算設(shè)備自動獲取該更新包以及描述該更新包的信息。圖4示出根據(jù)一個或多個實施例的更新應(yīng)用的示例。在圖4的示例中,示出圖3的部署服務(wù)306和圖2的設(shè)備200。設(shè)備200上所安裝的應(yīng)用402具有主版本號58以及三個體驗?zāi)K。應(yīng)用402中的第一體驗?zāi)K具有體驗標(biāo)識符A和體驗版本號3。應(yīng)用402中的第二體驗?zāi)K具有體驗標(biāo)識符B和體驗版本號7。應(yīng)用402中的第三體驗?zāi)K具有體驗標(biāo)識符C和體驗版本號5。版本目錄316被示為帶有示例數(shù)據(jù)的表。版本目錄的表被示為具有多個記錄(各自在表中作為一水平行)。在版本目錄316的表中,第一列指示主版本號410,第二列指示體驗標(biāo)識符412,第三列指示體驗版本號414,第四列指示設(shè)備類型掩碼416,而最后一列指示立即更新值418。附加行(未示出)也可被包括在版本目錄316中,諸如與主版本號57之前的更新包對應(yīng)的各行。對于設(shè)備類型掩碼416,值“C”、“M”和“T”分別用于表示計算機(jī)設(shè)備類型(如圖I的計算機(jī)設(shè)備106)、移動設(shè)備類型(如圖I的移動設(shè)備108)、以及基于電視機(jī)的設(shè)備類型(如圖I的基于電視機(jī)的設(shè)備110)。對于立即更新值418,值“T”用于指示對應(yīng)更新包的安裝要立即發(fā)生,而值“F”用于指示對應(yīng)更新包的安裝可被推遲。如從版本目錄316中可以看出,第一行對應(yīng)于一更新包,該更新包具有主版本號57、用于具有體驗標(biāo)識符A的體驗?zāi)K、具有體驗版本號3、用于計算機(jī)設(shè)備類型和基于電視機(jī)的設(shè)備類型、以及對應(yīng)更新包的安裝要立即發(fā)生。設(shè)備200向部署服務(wù)306發(fā)送標(biāo)識設(shè)備200的類型(基于電視機(jī)設(shè)備類型)和設(shè)備200的當(dāng)前主版本號(該主版本號為58)的更新檢查請求420。設(shè)備更新組件314針對版本目錄評估該更新檢查請求,并且確定要將對應(yīng)于主版本號59、61和62的更新包部署到設(shè)備200。具有小于或等于設(shè)備200的當(dāng)前版本號的版本號的更新包已被部署到設(shè)備200。因此,對應(yīng)于主版本號57和58的更新包無需再被部署到設(shè)備200。對應(yīng)于主版本號59的更新包針對設(shè)備200上尚未安裝的新體驗?zāi)K,并因此要被部署到設(shè)備200。對應(yīng)于主版本號61和62的更新包都針對設(shè)備200上先前安裝的體驗?zāi)K的新版本,并因此要被部署到設(shè)備200。對應(yīng)于主版本號60的更新包針對設(shè)備200上未安裝的新體驗?zāi)K,但不適用于基于電視機(jī)的設(shè)備類型(該更新包適用于移動設(shè)備類型)。因此,對應(yīng)于主版本號60的更新包沒有被部署到設(shè)備200。由此,設(shè)備更新組件314向設(shè)備200返回要將對應(yīng)于主版本號59、61和62的更新包部署到設(shè)備200的指示422。指示422中也可包括來自版本目錄316的各種信息。在一個或多個實施例中,對于要部署到設(shè)備200的每一更新包,設(shè)備更新組件314返回對主版本號的指示、更新包改變的體驗?zāi)K、體驗?zāi)K的新版本的體驗版本號、以及對應(yīng)更新包的安裝要立即發(fā)生還是可被推遲的指示。返回圖2,設(shè)備/服務(wù)通信框架212從部署服務(wù)(如圖3的部署服務(wù)306)接收對更新檢查請求的響應(yīng)。該響應(yīng)包括對針對應(yīng)用218的、要安裝在設(shè)備200上的特定一個或多個更新包(如果有的話)的指示。該一個或多個更新包本身也可被包括在從部署服務(wù)接收到的響應(yīng)中,或另選地設(shè)備/服務(wù)通信框架212可隨后向部署服務(wù)提交對該特定一個或多個 更新包的請求,并且響應(yīng)于這一請求,接收響應(yīng)于該隨后請求的該特定一個或多個更新包。在一個或多個實施例中,當(dāng)要安裝在設(shè)備200上的一個或多個更新包由設(shè)備/服務(wù)通信框架212接收時,框架212將更新包存儲在體驗存儲214中,并且向核心組件接口216通知接收到的一個或多個更新包。核心組件接口 216隨后將更新包安裝在設(shè)備200上,從而導(dǎo)致該應(yīng)用的經(jīng)更新版本被安裝在設(shè)備200上。這一安裝可包括多個不同動作,諸如將特定文件寫入存儲設(shè)備上的特定位置,將信息添加到注冊存儲(如操作系統(tǒng)注冊表),更新數(shù)據(jù)庫模式等??蓪⑽募懭塍w驗存儲214和/或設(shè)備200的其他存儲設(shè)備。在某些情形中,在安裝了針對應(yīng)用218的更新包之后,設(shè)備200在應(yīng)用218可被執(zhí)行之前被重新啟動。在其他情形中,在安裝針對應(yīng)用218的更新包之后,應(yīng)用218可被執(zhí)行,而無需重新啟動設(shè)備200。如果對更新包的指示指示了對應(yīng)更新包的安裝要立即發(fā)生,則核心組件接口 216盡快安裝該更新包。這一盡快安裝可包括在應(yīng)用218再次被執(zhí)行之前安裝該應(yīng)用包,在已經(jīng)運行并安裝該更新包的情況下關(guān)閉應(yīng)用218等。然而,如果對更新包的指示指示了對應(yīng)更新包的安裝可被推遲,則核心組件接口216在某稍后的時間安裝該更新包。核心組件接口 216可確定何時安裝更新包,對該更新包的安裝可按不同方式推遲,諸如在應(yīng)用218被再次執(zhí)行之前,在對應(yīng)用218的執(zhí)行終止之后,在設(shè)備200下次被斷電或重置之前,當(dāng)應(yīng)用218未在執(zhí)行并且設(shè)備200處于空閑時(如設(shè)備200上處理器和/或其他資源的使用量低于閾值量)等等。圖5是示出根據(jù)一個或多個實施例的用于為包括多個體驗?zāi)K的各應(yīng)用安裝和獲取更新包的示例過程500的流程圖。過程500通過諸如圖2的設(shè)備102或圖2的設(shè)備200之類的設(shè)備來執(zhí)行,并可以以軟件、固件、硬件,或其組合來實現(xiàn)。過程500被示為一組動作,并且不僅限于所示出的用于執(zhí)行各種動作的操作的順序。過程500是用于實現(xiàn)包括多個體驗?zāi)K的各應(yīng)用的示例過程;參考不同的附圖,在本文中包括了對實現(xiàn)包括多個體驗?zāi)K的各應(yīng)用的附加討論。在過程500中,安裝具有多個體驗?zāi)K的應(yīng)用(動作502)。如上文討論的,該應(yīng)用被安裝在實現(xiàn)過程500的設(shè)備上,并且包括多個體驗?zāi)K。
該應(yīng)用的當(dāng)前版本響應(yīng)于運行該應(yīng)用的請求而運行(動作504)。該應(yīng)用的這一當(dāng)前版本是實現(xiàn)過程500的設(shè)備上所安裝的該應(yīng)用的最新近版本。另外,作出關(guān)于這些體驗?zāi)K中一個體驗?zāi)K的更新包是否可用的檢查(動作506)。這一更新包將是適用于實現(xiàn)過程500的設(shè)備的更新包。該檢查通過向部署服務(wù)發(fā)送檢查更新的請求來作出。如果沒有針對該應(yīng)用的體驗?zāi)K的更新包可用,則過程500返回動作504以便運行該應(yīng)用的當(dāng)前版本。然而,如果針對這些體驗?zāi)K中一個體驗?zāi)K的更新包可用,則該更新包被獲取(動作508)。所獲取的更新包被安裝,以便更新該應(yīng)用的當(dāng)前版本(動作510)。該更新包可在該應(yīng)用完成運行之后被安裝(例如在更新包的安裝可被推遲的情況下),或另選地該應(yīng)用可終 止執(zhí)行,使得該更新包可被安裝(例如在該更新包要被立即安裝的情況下)并且該應(yīng)用再次運行。過程500隨后返回動作504,以便繼續(xù)運行該應(yīng)用的當(dāng)前版本。應(yīng)當(dāng)理解,在動作506中該應(yīng)用可在檢查更新包的可用性之前被運行,或另選地更新包的可用性可在運行該應(yīng)用之前被檢查,而不管圖5中各動作的順序。圖6是示出了根據(jù)一個或多個實施例的用于部署對設(shè)備的更新的示例過程600的流程圖。過程600可以用軟件、固件、硬件、或其組合來實現(xiàn)。在圖6的左側(cè)示出的過程600的動作由諸如圖I的設(shè)備102或圖2的設(shè)備200等設(shè)備執(zhí)行。在圖6的右側(cè)示出的過程600的動作由諸如圖I的部署服務(wù)118或圖3的部署服務(wù)306等部署服務(wù)執(zhí)行。過程600被示為一組動作,并且不僅限于所示出的用于執(zhí)行各種動作的操作的順序。過程600是用于在部署對設(shè)備的更新的示例過程,參考不同附圖,在此包括了在部署對設(shè)備的更新的附加討論。在過程600中,更新包的儲存庫以及更新包描述的目錄在部署服務(wù)處被維護(hù)(動作602)。如上文討論的,更新包包括對于特定應(yīng)用的體驗?zāi)K的改變。設(shè)備向部署服務(wù)發(fā)送更新檢查請求(動作604 )。如上文討論的,可在各種時間和/或響應(yīng)于各種事件而發(fā)送該更新檢查請求。部署服務(wù)接收更新檢查請求(動作606),并且標(biāo)識適用于設(shè)備的任何更新包(動作608)。如上文討論的,更新包是否適用于設(shè)備可取決于各種不同準(zhǔn)則,諸如設(shè)備上當(dāng)前體驗?zāi)K版本、設(shè)備的類型、設(shè)備的用戶等。向設(shè)備返回對適用于設(shè)備的任何更新包的指示(動作610)。這一指示標(biāo)識適用于設(shè)備的零個或多個更新包。設(shè)備從部署服務(wù)接收對任何更新包的指示(動作612),并且檢查該指示以確定一個或多個更新包是否適用于設(shè)備(動作614)。如果不存在適用于設(shè)備的更新包,則對更新的當(dāng)前檢查結(jié)束(動作616)。然而,部署服務(wù)繼續(xù)維護(hù)更新包的儲存庫以及更新包描述的目錄(動作602),并且可針對要發(fā)送給部署服務(wù)的后續(xù)更新檢查請求而重復(fù)過程600。然而,如果一個或多個更新包適用于設(shè)備,則將更新包請求發(fā)送給部署服務(wù)(動作618)。更新包請求是從部署服務(wù)獲取適用于設(shè)備的一個或多個更新包的請求。部署服務(wù)接收更新包請求(動作620),并且通過向設(shè)備發(fā)送所請求的一個或多個更新包來作出響應(yīng)(動作622 )。該一個或多個更新包可按不同方式來標(biāo)識(諸如通過使用與更新包相關(guān)聯(lián)的主版本號)。設(shè)備接收所請求的一個或多個更新包(動作624),并且將接收到的一個或多個更新包安裝在設(shè)備上(動作626)。如上文討論的,安裝一個或多個更新包中的每一個可以是立即的或被推遲。對更新的當(dāng)前檢查隨后結(jié)束(動作616)。然而,部署服務(wù)繼續(xù)維護(hù)更新包的儲存庫以及更新包描述的目錄(動作602),并且可針對要發(fā)送給部署服務(wù)的后續(xù)更新檢查請求而重復(fù)過程600。另選地,如果一個或多個更新包適用于設(shè)備,則在動作610中那些更新包可被返回給設(shè)備。在這些情形中,不必執(zhí)行動作616-620。圖7示出根據(jù)一個或多個實施例的可被配置成運行包括多個體驗?zāi)K的各應(yīng)用的示例計算設(shè)備700。計算設(shè)備700可以是例如圖I的設(shè)備102、圖2的設(shè)備200,或可以實現(xiàn)圖I的平臺114或圖3的平臺300的至少一部分。計算設(shè)備700包括一個或多個處理器或處理單元702、可包括一個或多個存儲器·和/或存儲組件706的一個或多個計算機(jī)可讀介質(zhì)704、一個或多個輸入/輸出(I/O)設(shè)備708、以及允許各組件和設(shè)備彼此通信的總線710。計算機(jī)可讀介質(zhì)704和/或一個或多個I/O設(shè)備708可以作為計算設(shè)備700的一部分被包括,或者可另選地可以耦合到計算設(shè)備700。總線710表示若干類型的總線結(jié)構(gòu)中的一個或多個,包括存儲器總線或存儲器控制器、外圍總線、加速圖形端口,以及使用各種不同的總線體系結(jié)構(gòu)中的處理器或局部總線??偩€710可包括有線和/或無線總線。存儲器/存儲組件706表示一個或多個計算機(jī)存儲介質(zhì)。組件706可包括易失性介質(zhì)(諸如隨機(jī)存取存儲器(RAM))和/或非易失性介質(zhì)(諸如只讀存儲器(ROM)、閃存、光盤、磁盤等等)。組件706可包括固定介質(zhì)(例如,RAM、ROM、固定硬盤驅(qū)動器等等)以及可移動介質(zhì)(例如,閃存驅(qū)動器、可移動硬盤驅(qū)動器、光盤等等)。此處所討論的技術(shù)可以以軟件實現(xiàn),該軟件具有由一個或多個處理單元702執(zhí)行的指令??梢岳斫猓煌闹噶羁梢源鎯υ谟嬎阍O(shè)備700的不同的組件中,諸如存儲在處理單元702中,存儲在處理單元702的各種緩存存儲器中,存儲在設(shè)備700的其他高速緩存存儲器(未示出)中,存儲在其他計算機(jī)可讀介質(zhì)上等等。另外,可以理解,指令存儲在計算設(shè)備700中的位置可以隨著時間而變化。一個或多個輸入/輸出設(shè)備708允許用戶向計算設(shè)備700輸入命令和信息,以及允許信息被呈現(xiàn)給用戶和/或其他組件或設(shè)備。輸入設(shè)備的示例包括鍵盤、光標(biāo)控制設(shè)備(例如,鼠標(biāo))、話筒、掃描儀等。輸出設(shè)備的示例包括顯示設(shè)備(例如,監(jiān)視器或投影儀)、揚聲器、打印機(jī)、網(wǎng)卡等等。此處可以在軟件或程序模塊的一般上下文中描述各種技術(shù)。一般而言,軟件包括執(zhí)行特定任務(wù)或?qū)崿F(xiàn)特定抽象數(shù)據(jù)類型的例程、程序、對象、組件、數(shù)據(jù)結(jié)構(gòu)等等。這些模塊和技術(shù)的實現(xiàn)可以存儲在某種形式的計算機(jī)可讀介質(zhì)上或通過某種形式的計算機(jī)可讀介質(zhì)傳輸。計算機(jī)可讀介質(zhì)可以是可以被計算設(shè)備訪問的任何可用介質(zhì)。作為示例,而不是限制,計算機(jī)可讀介質(zhì)可以包括“計算機(jī)存儲介質(zhì)”和“通信介質(zhì)”。“計算機(jī)存儲介質(zhì)”包括以用于存儲諸如計算機(jī)可讀指令、數(shù)據(jù)結(jié)構(gòu)、程序模塊或其他數(shù)據(jù)之類的信息的任何方法或技術(shù)實現(xiàn)的易失性和非易失性、可移動和不可移動介質(zhì)。計算機(jī)存儲介質(zhì)包括,但不限于,RAM、ROM、EEPR0M、閃存或其他存儲器技術(shù)、CD-ROM、數(shù)字多功能盤(DVD )或其他光盤存儲、磁帶盒、磁帶、磁盤存儲或其他磁性存儲設(shè)備、或能用于存儲所需信息且可以由計算機(jī)訪問的任何其他介質(zhì)?!巴ㄐ沤橘|(zhì)”通常用諸如載波或其他傳輸機(jī)制等已調(diào)制數(shù)據(jù)信號來體現(xiàn)計算機(jī)可讀指令、數(shù)據(jù)結(jié)構(gòu)、程序模塊或其他數(shù)據(jù)。通信介質(zhì)還包括任何信息傳送介質(zhì)。術(shù)語“已調(diào)制數(shù)據(jù)信號”指其一個或多個特征以這樣的方式設(shè)置或改變以便在信號中對信息進(jìn)行編碼的信號。作為示例而非限制,通信介質(zhì)包括有線介質(zhì),諸如有線網(wǎng)絡(luò)或直接線路連接,以及無線介質(zhì),諸如聲學(xué)、RF、紅外線和其他無線介質(zhì)。上面各項中的任何組合也包括在計算機(jī)可讀介質(zhì)的范圍內(nèi)。一般而言,此處所描述的任何功能或技術(shù)都可使用軟件、固件、硬件(例如,固定邏輯電路)、手動處理或這些實現(xiàn)的組合來實現(xiàn)。如此處所使用的術(shù)語“模塊”和“組件” 一般代表軟件、固件、硬件或其組合。在軟件實現(xiàn)的情況下,模塊或組件表示當(dāng)在處理器(例如,一個或多個CPU)上執(zhí)行時執(zhí)行指定任務(wù)的程序代碼。程序代碼可以存儲在一個或多個計算機(jī)可讀的存儲器設(shè)備中,可以參考圖7發(fā)現(xiàn)關(guān)于其進(jìn)一步的描述。本文描述的包括多個體驗?zāi)K技術(shù)的應(yīng)用的各個特征是平臺無關(guān)的,從而意味著該技術(shù)可在具有各種處理器的 各種商用計算平臺上實現(xiàn)。盡管用結(jié)構(gòu)特征和/或方法動作專用的語言描述了本主題,但可以理解,所附權(quán)利要求書中定義的主題不必限于上述具體特征或動作。更確切而言,上述具體特征和動作是作為實現(xiàn)權(quán)利要求的示例形式公開的。
權(quán)利要求
1.一種在設(shè)備中的方法,所述方法包括 在所述設(shè)備上安裝包括多個體驗?zāi)K的應(yīng)用,在所述應(yīng)用運行時所述多個體驗?zāi)K各自實現(xiàn)一組特性,所述多個體驗?zāi)K中的每一個包括第一組件和第二組件,所述第一組件包括專用于所述設(shè)備的特定類型的代碼,而所述第二組件包括跨多個設(shè)備類型所共有的代碼;以及 響應(yīng)于運行所述應(yīng)用的請求,在所述設(shè)備上運行所述應(yīng)用。
2.如權(quán)利要求I所述的方法,其特征在于,所述應(yīng)用在所述設(shè)備的應(yīng)用外殼中被運行,并且其中所述第一組件包括專用于包括所述設(shè)備的所述特定類型在內(nèi)的一個或多個設(shè)備類型的呈現(xiàn)邏輯和資源,并且跨多個設(shè)備類型所共有的代碼包括跨所述設(shè)備的所述特定類型以及其他設(shè)備類型所共有的業(yè)務(wù)邏輯。
3.如權(quán)利要求2所述的方法,其特征在于,所述多個設(shè)備類型包括計算機(jī)設(shè)備類型、移動設(shè)備類型、以及基于電視機(jī)的設(shè)備類型,并且所述設(shè)備的所述特定類型是所述多個設(shè)備類型之一。
4.如權(quán)利要求I所述方法,其特征在于,還包括將所述多個體驗?zāi)K彼此隔離,以便防止所述多個體驗?zāi)K中的每一個體驗?zāi)K直接訪問所述多個體驗?zāi)K中的其他體驗?zāi)K。
5.如權(quán)利要求I所述的方法,其特征在于,還包括 從所述多個體驗?zāi)K中的第一體驗?zāi)K接收包括所請求的動作的消息; 將所述消息發(fā)送給所述多個體驗?zāi)K中的第二體驗?zāi)K; 從所述多個體驗?zāi)K中的第二體驗?zāi)K接收響應(yīng)消息,所述響應(yīng)消息包括對包括所請求的動作的消息的響應(yīng);以及 將所述響應(yīng)消息發(fā)送給所述多個體驗?zāi)K中的第一體驗?zāi)K。
6.如權(quán)利要求5所述的方法,其特征在于,還包括 從所述多個體驗?zāi)K中的每一個接收對該體驗?zāi)K可執(zhí)行的一個或多個動作的指示; 從所述多個體驗?zāi)K中的一個或多個接收標(biāo)識所述多個體驗?zāi)K中可執(zhí)行特定動作的一個體驗?zāi)K的請求;以及 向所述多個體驗?zāi)K中的一個或多個返回對所述多個體驗?zāi)K中可執(zhí)行該特定動作的一個體驗?zāi)K的指示。
7.如權(quán)利要求I所述的方法,其特征在于,還包括 從所述多個體驗?zāi)K中的第一體驗?zāi)K接收請求; 將所述請求發(fā)送給在其上安裝所述應(yīng)用的附加設(shè)備; 從所述附加設(shè)備接收對所述請求的響應(yīng);以及 將所述響應(yīng)發(fā)送給所述多個體驗?zāi)K中的第一體驗?zāi)K。
8.如權(quán)利要求I所述的方法,其特征在于,還包括 向部署服務(wù)發(fā)送檢查各更新的請求; 從所述部署服務(wù)接收對所述多個體驗?zāi)K中的一個或多個體驗?zāi)K的一個或多個更新包的指示; 從所述部署服務(wù)接收所述多個體驗?zāi)K中的一個或多個體驗?zāi)K的一個或多個更新包;以及在所述設(shè)備上安裝所述一個或多個更新包。
9.如權(quán)利要求8所述的方法,其特征在于,還包括 基于對所述一個或多個更新包的指示,確定所述一個或多個更新包是否要被立即安裝;以及 如果確定述一個或多個更新包要被立即安裝,則在下次運行所述應(yīng)用之前安裝所述一個或多個更新包。
10.一種計算設(shè)備,包括 處理器;以及 一個或多個其上存儲有多個指令的計算機(jī)可讀介質(zhì),所述指令在被處理器執(zhí)行時致使所述處理器 維護(hù)針對應(yīng)用的不同體驗?zāi)K的不同更新包的目錄,所述應(yīng)用包括多個體驗?zāi)K,當(dāng)所述應(yīng)用在設(shè)備上運行時所述多個體驗?zāi)K各自實現(xiàn)一組特性,所述多個體驗?zāi)K中的每一個包括第一組件和第二組件,第一組件包括專用于所述設(shè)備的特定類型的呈現(xiàn)邏輯和資源,而第二組件包括跨多個設(shè)備類型所共有的業(yè)務(wù)邏輯; 確定是否存在適用于所述設(shè)備上的應(yīng)用的更新包;以及 如果存在適用于所述設(shè)備上的應(yīng)用的更新包,則向所述設(shè)備發(fā)送所述更新包。
11.如權(quán)利要求10所述的計算設(shè)備,其特征在于,所述多個設(shè)備類型包括計算機(jī)設(shè)備類型、移動設(shè)備類型、以及基于電視機(jī)的設(shè)備類型,并且所述設(shè)備的所述特定類型是所述多個設(shè)備類型之一。
12.如權(quán)利要求10所述的計算設(shè)備,其特征在于,對于所述多個體驗?zāi)K中一個體驗?zāi)K的所述更新包標(biāo)識在所述多個體驗?zāi)K中一個體驗?zāi)K中的組件的改變。
13.如權(quán)利要求10所述的計算設(shè)備,其特征在于,所述多個指令還致使所述處理器維護(hù)所述應(yīng)用的多個不同的更新包,并至少部分基于所述設(shè)備的所述特定類型,確定是否存在適用于所述設(shè)備上的應(yīng)用的更新包。
14.如權(quán)利要求10所述的計算設(shè)備,其特征在于,所述多個指令還致使所述處理器 將對所述更新包的指示發(fā)送給所述設(shè)備; 從所述設(shè)備接收對所述更新包的請求;以及 響應(yīng)于對所述更新包的請求,向所述設(shè)備返回所述更新包。
15.如權(quán)利要求10所述的計算設(shè)備,其特征在于,所述多個指令還致使所述處理器向所述設(shè)備發(fā)送對所述更新包的指示,所述對更新包的指示包括 所述應(yīng)用的主版本號; 體驗?zāi)K標(biāo)識符,所述體驗?zāi)K標(biāo)識符指示所述多個體驗?zāi)K中被所述更新包改變的一個體驗?zāi)K; 所述多個體驗?zāi)K中已改變的一個體驗?zāi)K的體驗?zāi)K版本號;以及 對所述更新包是否要由所述設(shè)備立即安裝或可被推遲的指示。
全文摘要
設(shè)備上的應(yīng)用包括當(dāng)該應(yīng)用在該設(shè)備上運行時各自實現(xiàn)一組特性的多個體驗?zāi)K。多個體驗?zāi)K中的每一個包括第一組件和第二組件,第一組件包括專用于該設(shè)備的特定類型的代碼,而第二組件包括跨多個設(shè)備類型所共有的代碼。改變該多個體驗?zāi)K中的個別體驗?zāi)K的更新包可從部署服務(wù)被接收并被安裝在該設(shè)備上。
文檔編號G06F9/06GK102971705SQ201180030885
公開日2013年3月13日 申請日期2011年6月14日 優(yōu)先權(quán)日2010年6月23日
發(fā)明者C·A·埃文斯, S·詹森, A·V·門格爾, J·T·皮爾斯, J·埃爾斯布里, L·M·坎恩, C·C·內(nèi)夫, N·奧斯曼諾維奇, N·明瓦拉, R·I·拉賈庫馬, D·A·薩瑟, M·A·施羅德, O·G·泰梅倫卡 申請人:微軟公司