Windows 8.1 之應(yīng)用打包
在 Windows 8.1 Preview 中,新的應(yīng)用捆綁包大大簡(jiǎn)化了應(yīng)用的提交過(guò)程。而且,通過(guò)資源包,你可以將額外內(nèi)容(例如本地化或高分辨率顯示資產(chǎn))提供給不希望因此而影響磁盤(pán)空間、帶寬或應(yīng)用購(gòu)買(mǎi)體驗(yàn)(針對(duì)沒(méi)有相應(yīng)體驗(yàn)的客戶)的客戶。
有關(guān)如何將應(yīng)用捆綁包用于智能應(yīng)用部署的特定示例,請(qǐng)查閱將你的 Windows 應(yīng)用商店 DirectX 游戲打包主題和包含資源包示例的游戲。
Windows 8.1 Preview 中的新特性或更新
- 應(yīng)用資源
- 應(yīng)用捆綁包
- 程序包標(biāo)識(shí)
- 應(yīng)用捆綁包部署
應(yīng)用資源
Windows 8.1 Preview 為應(yīng)用模型引入了一種新的包類型。資源包允許你將核心應(yīng)用包與其他資源分開(kāi)(例如,字符串或圖像等法語(yǔ)特定資產(chǎn)),并在它們自己的包中包含那些額外的資源。這樣資源包可用于量身定制應(yīng)用的整體體驗(yàn),無(wú)需下載并將所有資源包安裝到電腦。
此資源包是可選的,無(wú)法作為應(yīng)用包的依賴包。這意味著應(yīng)用包必須至少包含一組默認(rèn)資源,在電腦中未安裝任何資源包的情況下始終可以使用這組資源。此舉可幫助保持部分關(guān)鍵承諾:
- 無(wú)需資源包即可在任何電腦上正確安裝和啟動(dòng)該應(yīng)用包。
- 如果已安裝的資源包不完整,那么應(yīng)用包能夠?yàn)槠涮峁椭Y源。
資源包在應(yīng)用模型中有兩種作用:
- 提供資源管理系統(tǒng)在應(yīng)用定制其體驗(yàn)的運(yùn)行過(guò)程中能夠使用的候選資源。
- 提供允許資源包確定特定資源限定符(如用戶規(guī)模、系統(tǒng)規(guī)模和 Microsoft DirectX 功能)的元數(shù)據(jù)。
資源包對(duì)于每個(gè)包只能針對(duì)一個(gè)資源限定符。但你的應(yīng)用可以有多個(gè)資源包。
應(yīng)用捆綁包
除資源包之外,Windows 8.1 Preview 還引入了應(yīng)用捆綁包(或 .appxbundle 包),幫助優(yōu)化向全世界用戶打包和分發(fā) Windows 應(yīng)用商店應(yīng)用和資源包的整個(gè)過(guò)程。
你可以為自己的應(yīng)用創(chuàng)建應(yīng)用捆綁包負(fù)載文件和應(yīng)用部件清單文件。Microsoft Visual Studio Express 2013 Preview for Windows 捆綁你的應(yīng)用,自動(dòng)將資源拆分為單獨(dú)的程序包并向捆綁包添加應(yīng)用塊映射和簽名文件。下面的這些項(xiàng)目構(gòu)成一個(gè)完全自包含格式的 Windows 應(yīng)用商店應(yīng)用,該應(yīng)用可以部署到 Windows 8.1 Preview 和更高版本的系統(tǒng)中。
應(yīng)用包 (.appx)
應(yīng)用捆綁包包含可部署到特定體系結(jié)構(gòu)的多個(gè)應(yīng)用包。例如,它可包含 X86.appx 和 amd64.appx 包。
資源包 (.appx)
應(yīng)用捆綁包包含用于語(yǔ)言、規(guī)模和 DirectX 功能水平的資源包(.appx 文件)。每個(gè)應(yīng)用捆綁包都包含不同的資源包,以便支持不同的設(shè)備配置。
應(yīng)用捆綁包清單 (.appxbundlemanifest)
應(yīng)用捆綁包清單 (.appxbundlemanifest file) 包含與其中的程序包相關(guān)的所有適用性信息。對(duì)于任何特定包,它指定包的類型("應(yīng)用程序"或"資源")以及版本和資源定位信息。特別是應(yīng)用包,應(yīng)用捆綁包清單包括體系結(jié)構(gòu)的相關(guān)信息。
通常情況下,應(yīng)用捆綁包清單可讓 Windows 8.1 Preview 應(yīng)用模型了解該應(yīng)用捆綁包的內(nèi)容,并確定安裝期間應(yīng)該在用戶設(shè)備上安裝哪些應(yīng)用包和資源包。
這里是應(yīng)用捆綁包清單文件的一個(gè)示例。
- <?xml version="1.0" encoding="utf-8"?>
- <Bundle xmlns="http://schemas.microsoft.com/appx/2012/bundle">
- <Identity Name="contoso.sample" Publisher="CN=Contoso"
- Version="2012.1128.1822.2016" />
- <Packages>
- <Package Type="Application" Version="1.0.0.0" Architecture="x86"
- FileName="x86.appx" Offset="1337" Size="3000" />
- <Package Type="Application" Version="1.0.0.2" Architecture="x64"
- FileName="x64.appx" Offset="13740" Size="3000" />
- <Package Type="Resource" Version="1.0.0.0" ResourceId="French"
- FileName="fr-fr.appx" offset="23456" size="3000">
- <Resources>
- <Resource Language="fr-fr" />
- </Resources>
- </Package>
- <Package Type="Resource" Version="1.0.1.5" ResourceId="en-us-140"
- FileName="en-us-140.appx" offset="34567" size="3000">
- <Resources>
- <Resource Language="en-us" Scale="140" />
- </Resources>
- </Package>
- </Bundle>
應(yīng)用塊映射 (AppxBlockMap.xml)
塊映射文件列出捆綁包(.appx 包除外)中包含的所有應(yīng)用文件,以及操作系統(tǒng)用來(lái)驗(yàn)證文件完整性和優(yōu)化應(yīng)用更新的相關(guān)加密哈希值。有關(guān)塊映射文件的詳細(xì)信息,請(qǐng)參閱應(yīng)用包塊映射。
應(yīng)用簽名 (AppxSignature.p7x)
應(yīng)用捆綁包簽名可確保程序包及其內(nèi)容在簽名之后未進(jìn)行過(guò)更改。如果簽名證書(shū)驗(yàn)證為可信根證書(shū)頒發(fā)機(jī)構(gòu)的證書(shū),則該簽名還標(biāo)識(shí)包的簽名者。包的簽名者通常是應(yīng)用的發(fā)布者或作者。
注意 如希望手動(dòng)捆綁應(yīng)用,可使用獨(dú)立 MakeAppx 和 SignTool 實(shí)用程序。若要了解如何捆綁和部署 Windows 應(yīng)用商店應(yīng)用,請(qǐng)參閱 Windows 應(yīng)用商店應(yīng)用的打包、部署和查詢。
程序包標(biāo)識(shí)
與 Windows 8 應(yīng)用包相同的是,應(yīng)用捆綁包的一個(gè)最基本元素就是用來(lái)標(biāo)識(shí)該捆綁包的五部分元組。這稱為包標(biāo)識(shí),它由以下數(shù)據(jù)組成:
屬性 | 描述 |
---|---|
名稱 |
一個(gè)用于應(yīng)用包的通用名稱。例如,myCompany.mySuite.myApp。
注意 此名稱不必是顯示在應(yīng)用磁貼上的名稱。 |
發(fā)布者 |
Windows 應(yīng)用商店應(yīng)用的發(fā)布者。在大多數(shù)情況下,發(fā)布者與用來(lái)注冊(cè) Windows 8 開(kāi)發(fā)人員帳戶的帳戶相同。 |
版本 |
用于為將來(lái)的應(yīng)用版本提供服務(wù)的四部分版本描述符(主要版本.次要版本.內(nèi)部版本.修訂版本),例如 1.0.0.0。 |
ProcessorArchitecture |
默認(rèn)設(shè)置為“中性”。 |
ResourceID |
默認(rèn)設(shè)置為“~”。 |
#p#
應(yīng)用捆綁包部署
通過(guò) Windows Store 的應(yīng)用捆綁包的部署遵循此工作流。
Windows 應(yīng)用商店應(yīng)用部署過(guò)程發(fā)生在多個(gè)階段。首先,Windows 8.1 Preview 獲取和驗(yàn)證應(yīng)用捆綁包清單、捆綁包塊映射和捆綁包簽名。然后,Windows 8.1 Preview 檢查捆綁包清單,確保有應(yīng)用能夠在當(dāng)前體系結(jié)構(gòu)上進(jìn)行部署。找到合適的應(yīng)用包之后,Windows 8.1 Preview 將檢查該應(yīng)用包的部署條件以確保應(yīng)用成功部署。
接著,Windows 8.1 Preview 確定適用于部署的資源包的子集,并將這些資源包二進(jìn)制文件暫存到 \WindowsApps\ 目錄。最后,Windows 8.1 Preview 將應(yīng)用包和資源包注冊(cè)至用戶帳戶。
驗(yàn)證
在用戶開(kāi)始安裝 Windows 應(yīng)用商店應(yīng)用時(shí),Windows 8.1 Preview 必須完成這些檢查才能開(kāi)始部署。
測(cè)試 | 條件 |
---|---|
體系結(jié)構(gòu)支持 |
捆綁包最多可包含三個(gè)體系結(jié)構(gòu)特定的應(yīng)用包,全部在應(yīng)用捆綁包清單中指定。 |
最低操作系統(tǒng)版本 |
你可以在應(yīng)用包清單中指定應(yīng)用先決條件。它們表示特定最低操作系統(tǒng)版本的要求。例如對(duì)于 Windows 8.1 Preview,恰當(dāng)?shù)陌姹咎?hào)是 6.3。 有關(guān)應(yīng)用先決條件的詳細(xì)信息,請(qǐng)參閱應(yīng)用打包先決條件。 |
應(yīng)用依存關(guān)系 |
Windows 應(yīng)用商店應(yīng)用可以表示為獲得應(yīng)用所需的附加功能而對(duì)其他組件包的依存關(guān)系。有關(guān)應(yīng)用依存關(guān)系的詳細(xì)信息,請(qǐng)參閱應(yīng)用打包依存關(guān)系。 |
磁盤(pán)空間 |
每個(gè) Windows 應(yīng)用商店應(yīng)用都需要特定的磁盤(pán)空間量才能部署。如果磁盤(pán)空間不足以部署應(yīng)用包,則部署將失敗。 |
簽名檢查 |
必須根據(jù)已經(jīng)驗(yàn)證的 BlockMap,對(duì)應(yīng)用包中的每個(gè)文件進(jìn)行完整性檢查。 |
程序包適用性
一旦 Windows 8.1 Preview 驗(yàn)證應(yīng)用捆綁包能夠在系統(tǒng)上進(jìn)行部署,就會(huì)立即確定應(yīng)當(dāng)和應(yīng)用包一同部署的資源包,以便增強(qiáng)用戶的體驗(yàn)。根據(jù)以下三個(gè)特定資源限定符來(lái)檢查適用性。
限定符 | 描述 |
---|---|
用戶語(yǔ)言 |
用戶已添加到首選語(yǔ)言列表中的所有語(yǔ)言都將計(jì)入要部署的最終適用語(yǔ)言資源包組中。Windows 8.1 Preview 支持資源包的多種區(qū)域設(shè)置和語(yǔ)言。 |
系統(tǒng)規(guī)模 |
所有監(jiān)視器的規(guī)模值都將用于確定要部署的最終適用規(guī)模資源包組。Windows 8.1 Preview 支持三種資源包比例系數(shù):scale-100、scale-140 和 scale-180。 |
DirectX 功能級(jí)別 |
系統(tǒng)上所有可用的 DirectX 功能級(jí)別都將用于確定要部署的最終適用 DirectX 資源包組。Windows 8.1 Preview 支持三個(gè)資源包 DirectX 功能級(jí)別;DXFL-DX9、DXFL-DX10 和 DXFL-DX11。 |
包暫存
在 Windows 8.1 Preview 確定可在系統(tǒng)上部署的應(yīng)用捆綁包以及要部署的程序包后,包內(nèi)容下載到 \WindowsApps\ 目錄。為下載的每個(gè)包創(chuàng)建一個(gè)新目錄并使用包身份名稱值命名,如下所示。
- <Package Name>_<Version>_<Architecture>_<ResourceID>_<Publisher Hash>
暫存過(guò)程是通過(guò)部署引擎向包的位置來(lái)源發(fā)出的一組請(qǐng)求進(jìn)行的。隨后位置來(lái)源滿足這些請(qǐng)求,并返回到它們所解壓縮到的部署引擎,依據(jù) BlockMap 進(jìn)行驗(yàn)證,然后復(fù)制到相應(yīng)的文件中。
包注冊(cè)
包注冊(cè)是部署過(guò)程中的最后一個(gè)階段:在這個(gè)階段中,需要執(zhí)行兩項(xiàng)關(guān)鍵操作:
- 應(yīng)用包清單中聲明的擴(kuò)展會(huì)向操作系統(tǒng)注冊(cè)。這使應(yīng)用能夠與操作系統(tǒng)緊密集成。例如,如果你希望你的應(yīng)用能夠打開(kāi)文本 (.txt) 文件,則在應(yīng)用包清單中將 FileTypeAssociation 擴(kuò)展聲明為 XML,然后將 ".txt" 指定為文件類型。
- 在部署期間,此 XML 會(huì)轉(zhuǎn)換為一組系統(tǒng)更改,這些更改是正確注冊(cè)應(yīng)用以處理 .txt 文件所必需的。應(yīng)用模型隨后代表應(yīng)用執(zhí)行這些更改。應(yīng)用模型支持多種不同擴(kuò)展。有關(guān)這些擴(kuò)展的詳細(xì)信息,請(qǐng)參閱應(yīng)用合約和擴(kuò)展。
- 所有資源包都在資源管理系統(tǒng)中進(jìn)行注冊(cè)。然后可使用它們?cè)趹?yīng)用運(yùn)行時(shí)優(yōu)化用戶的體驗(yàn)。
原文鏈接:http://msdn.microsoft.com/zh-cn/library/windows/apps/bg182885.aspx