MSIX 支援四種套件類型:主套件、框架套件、資源套件與可選套件。 MSIX 也支援 Bundle 套件,這是一個或多個 MSIX 套件的分發容器。
套件類型定義部署、相依性、執行與維護行為的組合。 某些行為是類型固有的,而 manifest 宣告則可以覆寫其他預設值。
| 類型 | 主要用途 | 資訊清單或身份指示器 |
|---|---|---|
| 主要 | 應用程式的主要套件 | 沒有另一種套件類型的宣告 |
| 架構 | 共享函式庫、元件或執行時內容 | <Framework>true</Framework> |
| 資源 | 語言專用、尺度專用或限定條件專用資源 | <ResourcePackage>true</ResourcePackage> |
| 選擇性 | 與單一主套件相關的額外內容 | <uap3:MainPackageDependency> |
| 綁定方案 | 多個 MSIX 套件的分發容器 | 套件資訊清單和 ResourceId 的值 ~ |
主要套件
主套件代表應用程式的主要套件。 它可以宣告應用程式、能力、相依、擴充功能及處理序外伺服器。
清單中沒有明確的主套件標記。 當一個套件沒有宣告自己為其他套件類型時,它就是主套件。
架構套件
Framework 套件提供共享函式庫、元件、資源或其他執行時內容。 其他套件或程序會在載入 Framework 內容前,先將 Framework 套件加入其套件圖。
Framework 套件支援並存版本,讓應用程式能獨立遷移到新版本。 套件透過將 Framework 的 manifest 元素設定為 true來宣告此類型。
關於從已封裝與非封裝程序中使用 Framework 套件的資訊,請參見 「使用動態相依 API」。
資源套件
資源套件將語言、顯示尺度或其他限定詞專用資源與主套件或可選套件區分開來。 Windows 只會安裝適用於裝置或使用者的資源套件。
資源套件預設不允許執行。 套件可以用 uap6:AllowExecution 覆蓋此預設值。 套件透過將 ResourcePackage 設定為 true來宣告 Resource 類型。
選用套件
可選套件包含特定主套件的額外內容。 例如,應用程式可以將可下載的地圖、高解析度資產或選用工具放在獨立的套件中。
與 Framework 套件不同,Optional 套件與一個 Main 套件家族相關聯。 它透過 uap3:MainPackageDependency 宣告該關係。
關於撰寫及相關集合需求,請參見 「可選套件與相關集合撰寫」。
套裝
MSIX 套件組合(.msixbundle)包含一個或多個 MSIX 套件。 套件提供一個發佈成品,同時允許 Windows 僅安裝適用於目標裝置的架構與資源套件。
一個套件中的所有套件都屬於同一套件家族。 bundle 是一種容器,而非第五種可部署套件類型。
在程式碼中識別套件類型
Windows.ApplicationModel.Package 類別會揭露識別套件類型的屬性:
static string GetPackageType(Windows.ApplicationModel.Package package)
{
if (package.IsBundle)
{
return "Bundle";
}
if (package.IsFramework)
{
return "Framework";
}
if (package.IsResourcePackage)
{
return "Resource";
}
if (package.IsOptional)
{
return "Optional";
}
return "Main";
}
用 PowerShell 識別套件類型
預設情況下,Get-AppxPackage 會回傳 Main 和 Framework 套件。 使用 -PackageTypeFilter 來包含其他類型:
Get-AppxPackage -PackageTypeFilter Main,Framework,Resource,Optional,Bundle |
Select-Object Name, PackageFullName, IsFramework, IsResourcePackage, IsBundle
輸出物件未公開 IsOptional 屬性。 使用篩選器將可選套件納入結果,並在需要區分時檢查它們的資訊清單或套件關係。