依賴架構的應用程式的部署架構和概述

本文介紹了 Windows 應用程式 SDK 部署的高階體系架構。 以下概念主要適用於 Windows 應用程式 SDK 架構相關的應用程式。 依賴架構的應用程式取決於目標電腦上存在的 Windows 應用程式 SDK 執行時間。

散發架構相依應用程式的主要選項有兩種:

應用程式部署方式 需求
封裝 - 必須在套件清單中宣告對 Framework 套件的依賴關係。
- Microsoft Store 分散式應用程式需要部署 API,建議非 Store 分散式應用程式使用部署 API,以確保安裝執行時間相依性。
在外部位置進行封裝或未封裝 - 必須使用安裝程式或直接安裝所需的 MSIX 套件來分送執行時間。
- 其他執行時間需求:必須透過 Bootstrap API 初始化對 Windows 應用程式 SDK 執行時期的存取。

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

關鍵字詞

以下部分定義了 Windows 應用程式 SDK 部署的關鍵術語以及其中一些套件的其他詳細資訊。

詞彙 定義
Windows 應用程式 SDK 執行時間 使用 Windows 應用程式 SDK 所需的 MSIX 套件。 這些套件包括:Framework、Main、Singleton 和 DDLM。 根據所使用的功能和您的應用程式部署方法,您將需要在目標電腦上安裝一組特定的軟體套件。
架構套件 包含應用程式在執行時使用的二進位 (大多數 Windows 應用程式 SDK 功能)。 該架構包括一個引導程式元件,使應用程式能夠自動安裝最新版本的 Windows 應用程式 SDK,該版本將定期發布更新。
主要套件 包含用於追蹤動態依賴項的後台任務的套件,並支援從 Microsoft Store 自動更新 Framework 套件。
Singleton 套件 包含後台任務、服務、應用程式擴充功能以及架構包中未包含的其他元件 (例如推播通知)。 這通常是在應用程式之間代理的單一長期執行的進程。
動態依賴生命週期管理器 (DDLM) 套件 當使用外部位置封包或非封包的應用程式時,阻止作業系統對 MSIX 套件執行服務更新。
啟動載入器 與外部位置封包的應用程式和非封包的應用程式一起使用的應用程式本地二進位文件,用於根據應用程式的需要尋找和載入最佳的 Windows 應用程式 SDK 版本匹配。
佈建 在系統範圍內安裝和註冊軟體包 (包括檔案和登錄機碼) 的過程,以消除其他使用者重複安裝的需要。 可以作為作業系統的一部分完成,也可以在應用程式安裝過程中完成。
安裝程式 是指部署 Framework、Main、Singleton 和 DDLM 套件的.exe安裝程式。
MSIX 現代安裝程式技術使使用者能夠直接從 Microsoft Store 或網站安全地安裝每個使用者的應用程式。 在企業或共用電腦上,可以透過 PowerShell 和 MDM 為所有使用者安裝應用程式。

架構套件

當您建立使用 Windows 應用程式 SDK 的應用程式時,您的應用程式會引用一組透過架構套件分發給終端使用者的 Windows 應用程式 SDK 執行時間元件。 該架構套件允許應用程式透過使用者裝置上的單一共用來源存取 Windows 應用程式 SDK 元件,而不是將它綁定到應用程式套件中。 架構套件也附帶自己的資源,例如 DLL 和 API 定義 (COM 和 Windows 執行時間註冊)。 這些資源會在您的應用程式的內容中執行,因此它們繼承您的應用程式的功能和特權,並且不聲明自己的任何功能或特權。 有關架構套件依賴項的詳細資訊,請參閱 MSIX 架構套件和動態相依性

Windows 應用程式 SDK 架構套件是透過 Microsoft Store 部署給最終使用者的 MSIX 套件。 它可以透過服務版本輕鬆快速地更新,其中可能包括安全性和可靠性修復。 所有使用 Windows 應用程式 SDK 的相依性架構應用程式都依賴的共用執行個體,如下圖所示。

Diagram of how apps access the Windows App SDK framework package

當提供新版本的 Windows 應用程式 SDK 架構套件時,所有相依式架構的應用程式都會更新到新版本,而無需重新分發副本。 Windows 會在架構發佈時更新至最新版本,應用程式會在重新啟動期間自動引用最新的架構套件版本。 較舊的架構套件版本不會從系統中刪除,直到它們不再執行]或被系統上的應用程式主動使用。

Diagram of how apps get updates to the Windows App SDK framework package

由於應用程式相容性對於 Microsoft 以及依賴 Windows 應用程式 SDK 的應用程式非常重要,因此 Windows 應用程式 SDK 架構套件遵循 Semantic Versioning 2.0.0 規則。 這代表我們發布 Windows 應用程式 SDK 1.0 版本後,Windows 應用程式 SDK 架構套件將保證次要版本和修補程式版本變更之間的相容性,並且僅在主要版本更新之間才會發生重大變更。

Singleton 套件

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

需要 Windows 應用程式 SDK 單例才能為使用 20H1 以下 Windows 版本的未打包應用程式和打包 Win32 應用程式啟用推播通知,現有 UWP PushNotificationTriggerToastNotificationActionTrigger 類別無法支援。 未來 Framework 套件無法支援的 Windows 應用程式 SDK 功能將會加入 Singleton 套件中。

對非封包應用程式的附加要求

啟動載入器

引導程式是一個庫,必須包含在封包外部位置或非封包的應用程式中。 它提供引導程式 API (請參閱對使用外部位置封包或非封包的應用程式使用 Windows 應用程式 SDK 執行時),這使得非封包的應用程式能夠執行以下重要任務:

  • 初始化 Windows 應用程式 SDK 架構套件的動態相依性生命週期管理器 (DDLM)。
  • 尋找 Windows 應用程式 SDK 架構套件並將其載入到應用程式的包圖中。

為了完成這些任務,nuget 套件利用模組初始值設定項目來為您連接引導程式。 只需在您的專案文件中設定 <WindowsPackageType>None</WindowsPackageType> 即可。 在進階場景中,如果您想要控制初始化,可以直接在應用程式的啟動程式碼中呼叫引導程式 API (請參閱教學課程:在使用外部位置打包或使用 Windows 應用程式 SDK 未打包的應用程式中使用引導程式 API),以便它可以為非封包應用程式正確初始化系統。 您的應用程式必須使用開機 API,然後才能使用 Windows 應用程式 SDK 功能,例如 WinUI、應用程式生命週期、MRT Core 和 DWriteCore。

Windows 應用程式 SDK 1.0 版本中的開機程式庫包括:

  • Microsoft.WindowsAppRuntime.Bootstrap.dll (C++ 和 C#)
  • Microsoft.WindowsAppRuntime.Bootstrap.Net.dll (C# wrapper)

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

DDLM 的目的是防止在非封包應用程式使用 Windows 應用程式 SDK 架構包時為其提供服務。 它包含一個伺服器,必須在應用程式啟動初期由引導程式初始化才能提供該功能。

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

其他需求