共用方式為


架構相依應用程式的部署架構和概觀

本文說明 Windows App SDK 部署的高階架構。 下列概念主要適用於 Windows App SDK 架構相依應用程式。 架構相依應用程式取決於目標計算機上存在的 Windows App SDK 運行時間。

架構依賴型應用程式的分發有兩個主要選項:

應用程式部署方法 需求
已包裝 - 必須在套件指令清單中宣告 Framework 套件的相依性。
- 針對 Microsoft Store 發佈的應用程式,需要使用部署 API;對於非 Store 發佈的應用程式,建議使用,以確保安裝所有運行時相依性。
使用外部儲存位置或未封裝 - 必須使用安裝程式或直接安裝必要的 MSIX 套件來散發執行階段。
- 其他運行時間需求:必須透過 Bootstrap API 初始化對 Windows App SDK 運行時間的存取權。

如需這些需求的詳細資訊,請參閱下列文章:

重要詞彙

下列各節會定義 Windows App SDK 部署的重要詞彙,以及其中一些套件的其他詳細數據。

術語 定義
Windows App SDK 執行時間 應用程式使用 Windows App SDK 所需的 MSIX 套件。 這些套件包括:Framework、Main、Singleton 和 DDLM。 視使用的功能和應用程式部署方法而定,您需要目標計算機上的一組特定套件。
框架套件 包含應用程式在運行時間使用的二進位檔(大部分的 Windows App SDK 功能)。 此架構包含一個引導程式元件,使應用程式能夠自動安裝最新版本的 Windows App SDK,該版本將按照定期的發行節奏進行更新。
主要套件 包含背景工作的套件,用於追蹤動態相依性,並啟用從 Microsoft Store 自動更新 Framework 套件。
Singleton 套件 包含架構套件中未包含的背景工作、服務、應用程式延伸模組和其他元件,例如推播通知。 這通常是由應用程式之間代理的單一長時間執行的程序。
動態相依性生命週期管理員(DDLM)套件 防止 OS 在使用具有外部位置的封裝應用程式或未封裝應用程式時,執行 MSIX 套件的服務更新。
引導程序 由應用程式本機二進位檔協助封裝和未封裝的應用程式,以尋找和載入最佳相符的 Windows App SDK 版本,以滿足應用程式的需求。
布建 全系統安裝和註冊套件的過程(包括檔案和登錄機碼),以消除其他使用者需重複安裝的需求。 它可以做為作系統的一部分,或在應用程式安裝期間完成。
安裝程式 是指部署 Framework、Main、Singleton 和 DDLM 套件的 .exe 安裝程式。
MSIX 新式安裝程序技術,可讓使用者直接從 Microsoft Store 或網站安全地安裝每個用戶的應用程式。 在企業或共享電腦上,可以透過PowerShell和 MDM 為所有使用者安裝應用程式。

架構套件

當您建置使用 Windows App SDK 的應用程式時,您的應用程式會參考一組透過 架構套件散發給終端使用者的 Windows App SDK 運行時間元件。 架構套件可讓應用程式透過使用者裝置上的單一共享來源存取 Windows App SDK 元件,而不是將它們系結到應用程式套件中。 架構套件也會攜帶自己的資源,例如 API 定義(COM 和 Windows 執行階段註冊)以及 DLL。 這些資源會在您的應用程式中運行,因此會繼承您應用程式的功能和權限,且不會宣稱自己的任何功能或權限。 如需架構套件相依性的詳細資訊,請參閱 MSIX 架構套件和動態相依性

Windows App SDK 架構套件是 MSIX 套件,會透過 Microsoft 市集部署到終端使用者。 它可以使用維護版本輕鬆且快速更新,這可能包括安全性和可靠性修正。 使用 Windows App SDK 的所有架構相依應用程式都相依於架構套件的共享實例,如下圖所示。

應用程式如何存取 Windows App SDK 架構套件的圖表

服務新版本的 Windows App SDK 架構套件時,所有與架構相依的應用程式都會更新為新版本,而不需要重新發佈複本。 Windows 會在發行時更新最新版本的架構,應用程式會在重新啟動期間自動參考最新的架構套件版本。 在系統上的應用程式不再執行或主動使用舊版架構套件版本之前,將不會從系統移除這些版本。

應用程式如何取得 Windows App SDK 架構套件更新的圖表

由於應用程式兼容性對於Microsoft和相依於 Windows App SDK 的應用程式而言很重要,因此 Windows App SDK 架構套件遵循 語意版本設定 2.0.0 規則。 這表示,在我們發行 Windows App SDK 1.0 版之後,Windows App SDK 架構套件將保證次要和修補程式版本變更之間的相容性,而重大變更只會發生在主要版本更新之間。

單一套件

單一套件 可確保單一長時間執行的進程可以處理跨多個應用程式使用的服務,這些服務可能會在不同版本的 Windows App SDK 上執行。

為啟用通知推送於低於 20H1 版本的 Windows 系統中,需要使用 Windows App SDK 單例設計模式,這些系統無法以現有的 UWP PushNotificationTriggerToastNotificationActionTrigger 類別來支援未封裝的應用程式與封裝的 Win32 應用程式。 未來 Framework 套件不支援的 Windows App SDK 功能將會新增至 Singleton 套件。

未封裝應用程式的其他需求

引導程式

啟動載入器是一個程式庫,必須隨附於在外部位置的已封裝或未封裝的應用程式。 它提供 bootstrapper API (請參閱 針對外部位置封裝或未封裝的應用程式使用 Windows App SDK 執行階段),這可讓未封裝的應用程式執行這些重要工作:

  • 初始化 Windows App SDK 架構套件的動態相依性存留期管理員 (DDLM)。
  • 尋找並載入 Windows App SDK 架構套件至應用程式的套件圖形。

為了完成這些工作,nuget 套件會利用模組初始化器來配置啟動器。 只要在項目檔中設定 <WindowsPackageType>None</WindowsPackageType> 即可。 在進階案例中,如果您想要控制初始化,您可以直接在應用程式的啟動程式代碼中呼叫啟動載入器 API(請參閱 教學課程:在封裝外部位置的應用程式中使用啟動載入器 API,或使用 Windows App SDK 解除封裝),使其可以正確初始化未封裝應用程式的系統。 您的應用程式必須先使用啟動載入器 API,才能使用 Windows App SDK 功能,例如 WinUI、應用程式生命週期、MRT Core 和 DWriteCore。

Windows App SDK 1.0 版本中的啟動器程式庫包括:

  • Microsoft.WindowsAppRuntime.Bootstrap.dll (C++ 和 C#)
  • Microsoft.WindowsAppRuntime.Bootstrap.Net.dll (C# 封裝器)

動態相依性生命週期管理器 (DDLM)

DDLM 的目的是在未封裝的應用程式使用 Windows App SDK 架構套件的同時,避免進行更新或維護。 它包含一個伺服器,必須在應用程式啟動初期由啟動載入器初始化,以提供該功能。

Windows App SDK 架構套件的每個版本和架構都有一個 DDLM。 這表示在 x64 電腦上,您可能同時擁有 x86 和 DDLM x64 版本,以支援這兩種架構的應用程式。

其他需求