MSIX 套件類型

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 屬性。 使用篩選器將可選套件納入結果,並在需要區分時檢查它們的資訊清單或套件關係。