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