適用於架構相依封裝應用程式的 Windows 應用程式 SDK 部署指南

本文提供部署架構相依封裝應用程式 (請參閱什麼是 MSIX?)的指引,這些應用程式使用 Windows 應用程式 SDK。 其他架構相依封裝選項的對等主題是針對以外部位置或未封裝封裝的架構相依應用程式,Windows 應用程式 SDK 部署指南。

概觀

預設情況下,當你在 Visual Studio 中使用 WinUI 3 範本之一建立專案時,你的專案將配置為使用單專案 MSIX (請參閱使用單專案 MSIX 打包應用程式) 或 Windows 應用程式打包專案 (請參閱在 Visual Studio 中設定用於MSIX 打包的桌面應用程式)。 然後,你可以按照在 Visual Studio 中打包桌面或 UWP 應用程式中的說明為你的應用程式建立 MSIX 套件。 為應用程式建置 MSIX 套件之後,您有數個選項可管理 MSIX 部署

若要詳細了解打包應用程式在使用 Windows 應用程式 SDK 時可能需要的套件,請參閱 Windows 應用程式 SDK 的部署架構。 其中包括 FrameworkMainSingleton 套件;這些都是由 Microsoft 簽署和發布的。 部署打包應用程式有兩個主要要求:

  1. 部署 Windows 應用程式 SDK架構套件
  2. 請參閱呼叫部署 API

必要條件

部署 Windows 應用程式 SDK架構套件

Windows 應用程式 SDK 架構包包含執行時使用的 Windows 應用程式 SDK 二進位文件,它會隨您的應用程式一起安裝。 此架構對於Windows 應用程式 SDK 的不同管道有不同的部署需求。

穩定版本

當您在開發電腦上安裝 Windows 應用程式 SDK NuGet 套件的穩定發行版本 (請參閱穩定頻道發行說明),並使用提供的 WinUI 3 專案範本之一建立專案時,產生的套件清單包含一個 PackageDependency 元素,該元素指定對架構包的依賴。

但是,如果您使用單獨的 Windows 應用程式打包專案手動建立應用程式包,則必須在檔案中聲明 PackageReferenceApplication (package).wapproj,如下所示:

<ItemGroup>
   <PackageReference Include="Microsoft.WindowsAppSDK" Version="1.0.1">
       <IncludeAssets>build</IncludeAssets>
   </PackageReference>
</ItemGroup>

但是,如果您使用單獨的 Windows 應用程式打包專案手動建立應用程式包,則必須在檔案中聲明 PackageReference,如下所示:

預覽版

當您在開發電腦上安裝 Windows 應用程式 SDK NuGet 套件的預覽版本 (請參閱預覽頻道發行說明) 時,Windows 應用程式 SDK 架構套件的預覽版本將在產生期間作為 NuGet 套件相依性進行部署。

請參閱呼叫部署 API

另請參閱初始化 Windows 應用程式 SDK

部署 API 由 Windows 應用程式 SDK 架構包提供,可在 Microsoft.Windows.ApplicationModel.WindowsAppRuntime 命名空間中使用。 Windows 應用程式模型不支援聲明對 Main 和 Singleton 套件的依賴關係。 因此,基於下列原因,需要部署 API:

  1. 為 Framework 套件中沒有的功能 (例如推播通知) 部署 Singleton 套件。
  2. 部署主套件,這可以從 Microsoft Store 自動更新架構套件。

對於透過應用程式商店分發的封包應用程式,您作為開發人員負責分發架構包。 我們建議您呼叫部署 API,以便交付任何關鍵服務更新。 請注意,要使用 Framework 套件外部的功能 (例如推播通知),必須部署 Singleton 套件 (這可以使用部署 API 來完成,或使用您自己的安裝方法重新分發 MSIX 套件)。

重要

在 Windows 應用程式 SDK 版本 1.0 中,只有完全信任或具有 packageManagement 受限功能的打包應用程式才有權使用部署 API 安裝 Main 和 Singleton 套件依賴項。 對部分信任打包應用程式的支援將在後續版本中提供。

您應該在應用程式的進程初始化之後、但在應用程式使用使用單例套件的 Windows 應用程式 SDK 執行時間功能 (例如,推播通知) 之前呼叫部署 API。 Deployment API 的主要方法是 DeploymentManager 類別的靜態 GetStatusInitialize 方法。

  • GetStatus 方法會傳回目前載入之 Windows 應用程式 SDK 執行時間的目前部署狀態。 使用此方法可確定在目前應用程式可以使用 Windows 應用程式 SDK 功能之前是否需要安裝 Windows 應用程式 SDK 執行時間套件。
  • Initialize 方法會驗證目前已載入之 Windows 應用程式 SDK 執行時間所需的最低版本,所有必要套件是否都存在。 如果缺少任何套件依賴項,則該方法會嘗試註冊那些缺少的套件。 從 Windows 應用程式 SDK 1.1 開始,Initialize 方法也支援強制部署 Windows 應用程式 SDK 執行時間套件的選項。 這會關閉 MainSingleton 執行時套件的所有進程,從而中斷它們的服務 (例如,推播通知在此期間不會傳遞通知)。

部署 API 範例應用程式

如需如何使用 DeploymentManager 類別的 GetStatusInitialize 方法的其他指引,請探索可用的範例應用程式。

解決安裝錯誤

如果部署 API 在安裝 Windows 應用程式 SDK 執行時間套件時發生錯誤,則會傳回描述問題的錯誤碼。

例如,如果您的應用程式不完全信任,或不具有 packageManagement 受限功能,那麼您將收到 ACCESS_DENIED 錯誤代碼。 若要查看您可能遇到的其他錯誤程式碼及其可能的原因,請參閱Windows 應用程式的打包、部署和查詢疑難排解

如果錯誤代碼沒有提供足夠的資訊,您可以在詳細的事件日誌中找到更多診斷資訊 (請參閱以取得診斷資訊)。

如果遇到無法診斷的錯誤,請在 WindowsAppSDK GitHub 儲存庫中提交問題並提供錯誤代碼和事件日誌,以便我們調查該問題。