包裝概述

封裝定義了你的應用程式如何安裝、更新並整合到 Windows。 WinUI 3 應用程式預設是打包,而許多桌面應用程式,如傳統 Win32 應用程式,則是未打包執行。 選擇打 式或 非打包 式應用程式會影響你能使用的功能、依賴的部署模式,以及客戶整體體驗。

備註

正在打造新的 WinUI 3 應用程式嗎? 你已經預設被打包了。 以下指引對於需要明確做出選擇的開發者尤其相關——通常是在移植現有應用程式、部署到企業機器,或為未包裝的應用程式新增 Windows 功能時。

為什麼應用程式包裝很重要

打包式應用程式享有乾淨的安裝模式、自動更新,以及需要套件身份的 Windows 功能存取權——包括背景任務、通知、右鍵選單擴充、共享目標及其他擴充點。 封裝也有助於透過 Microsoft Store 及企業部署工具等管道,確保部署更乾淨、更新可靠,以及分發流程的簡化。

需要套件身分識別的功能

這些Windows功能僅適用於具有套件身份的應用程式——無論是完整的 MSIX 封裝,或是帶有外部位置的 封裝(稀疏封裝)

Feature 說明
背景工作 當你的應用程式不在前台時執行程式碼——例如同步資料、處理下載或回應系統事件。
Windows AI API(Phi Silica、OCR 等) 可使用裝置上的 AI 功能,如本地語言模型、文字辨識及影像分析。
推播通知 (WNS) 透過 Windows 通知服務,接收來自雲端服務的即時通知。
分享目標 讓使用者透過系統的「分享表」直接從其他應用程式分享內容到你的應用程式。
自訂快速選單擴充功能 將應用程式的動作加入檔案總管及其他 shell 界面的右鍵選單。
檔案類型與協定關聯 將您的應用程式註冊為特定檔案類型或 URI 協定(例如 yourapp://)的處理程式。
啟動任務 使用者登入 Windows 時自動啟動你的應用程式。
應用程式服務 揭露其他應用程式可以呼叫的背景服務,促進應用程式間的溝通。

小提示

如果你未封裝,呼叫 Windows API 時遇到 E_ILLEGAL_METHOD_CALLAPPMODEL_ERROR_NO_PACKAGE 錯誤,那就是套件身份的要求。 請將 帶有外部位置的包裝(稀疏包裝) 視為摩擦最小的解決方案。

欲了解更多資訊,請參閱 需要套件身分的功能

包裝模型一覽

型號 套件身分識別 安裝程式 商店合格資格 最適合用於
封裝型(MSIX) ✅ 是 MSIX 取代安裝程式 ✅ 是的(MSIX 提交) 新應用程式、商店發佈、企業版 MDM
包裝與外部位置 ✅ 是 你現有的安裝程式 ✅ 是的(MSI/EXE 提交) 現有安裝程式的應用程式和獨立軟體開發商(ISV)
未包裝 ❌ 否 MSI 或 EXE 安裝程式(也包括:XCopy 或非 Store 發行版的腳本) ✅ 是的(MSI/EXE 提交 — 需要支援靜默安裝的 MSI 或 EXE 安裝程式) 廣泛的 Win32 發行版與內部工具

封裝應用程式(MSIX)

封裝應用程式使用 MSIX,並具備 package 身份碼,這是許多Windows擴充點所必需的。 套件身份讓 Windows 能夠可靠地識別平台 API 的呼叫者,這也是為什麼這些功能依賴它。

  • 打包後的應用程式通常運行於輕量級應用程式容器中,具備檔案系統與登錄檔虛擬化功能(舊版應用程式及 MSIX AppContainer 應用請參見 AppContainer)。
  • 如果需要,應用程式也可以設定為不在應用程式容器中執行。
  • MSIX 用於封裝與安裝(參見 What is MSIX?)。

帶有外部定位的包裝(稀疏包裝)

帶有外部位置的打包(也稱為 稀疏套件)讓你能在現有應用程式旁邊註冊一個小型身份套件——而不必更改安裝程式、二進位位置或更新流程。 它於 Windows 10 2004 版本(建置 19041)中首次亮相。

這是現有 Win32/WPF/WinForms 應用程式的最佳選擇,這些應用程式是透過自家安裝程式(NSIS、WiX、InstallShield 等)提供,且不想用 MSIX 取代。 你註冊一個輕量級身分識別套件,二進位檔保持在原位,並解鎖完整的以套件身分識別為門檻的 Windows 功能。

能力 MSIX 外部地點
更換您的安裝程式 是的 No
套件內的二進位文件 是的 沒有(外部)
商店合格資格 是的(MSIX 提交) 是的(MSI/EXE 提交)
套件身分識別 是的 是的
更新機制 MSIX 更新 你現有的機械裝置

完整指引:透過封裝和外部位置來授予封裝身份

未封裝應用程式

未封裝的應用程式不使用 MSIX, 也沒有套件識別碼,這表示他們無法存取上述功能。

  • 它們在 API 界面、檔案系統存取、登錄存取、權限提升及進程模型方面保持完全無限制。
  • 安裝與更新依賴 .exe.msi、自訂安裝程式、ClickOnce 或 xcopy 部署。

在你決定是否採用無包裝之前,請先根據 上方的功能表 與你的路線圖對照。 如果通知、背景任務或 AI API 即將推出,考慮先從打包式開始。

依情境選擇

Scenario 推薦型號 詳細資料
獨立開發者發佈到 Microsoft Store 建議使用封裝(MSIX) MSIX 是推薦路徑——它能啟用商店管理的更新、差異式下載和乾淨卸載。 WinUI 3 應用程式預設是打包的。 代碼簽章由商店免費處理。發佈你的打包應用程式

擁有現有 MSI 或 EXE 安裝程式的 Win32 應用程式,也可以透過 MSI/EXE 提交路徑發佈到商店,但商店不會向現有使用者推送更新——更新必須由應用程式或安裝程式自行處理。
企業應用程式透過 Intune 或 設定管理員 部署 封裝式或現有安裝程式的外部位置 新應用程式應該使用 MSIX。 自帶安裝程式的現有應用程式可以使用以外部位置為基礎的封裝。 Code signing: 使用自簽憑證(透過 Intune、群組政策或 設定管理員 信任)或 Azure Artifact Signing(前稱為 Trusted Signing)。 → 部署封裝應用程式
ISV 會提供其自家安裝程式的直接下載。 包裝與外部位置 在現有安裝程式旁註冊一個輕量級身份套件。 程式碼簽署: 非 Store 發佈需要 CA 信任的憑證。 Azure Artifact Signing(前稱 Trusted Signing) 是推薦的較低成本選項。 → 補助包身份

或者,你可以透過 MSI/EXE 提交路徑,將你現有的安裝程式提交到商店。
內部工具或開發者工具 未包裝 最簡單易建置與部署。 Windows 應用程式 SDK 透過 NuGet 運作,但部分功能將無法使用。

小提示

不確定程式碼簽署費用? 透過 Microsoft Store 發佈 MSIX 套件,意味著你不需要另外取得或管理憑證以建立終端使用者信任——Microsoft重新簽署套件。 透過商店發佈 Win32 MSI/EXE 安裝程式,需將憑證鏈接至 Microsoft 受信任根程式 中的 CA;不接受自簽。 對於其他分發路徑,你的簽署方式取決於部署情境——企業環境可以透過裝置管理信任自簽憑證,而較廣泛的非儲存區分發通常需要 CA 信任的程式碼簽署解決方案。 Azure 工件簽名(前稱可信簽署) 是 Microsoft 推薦的選項(參見 pricing),無需硬體令牌。

框架依賴型部署和自包含型部署

使用 Windows 應用程式 SDK 的應用程式在封裝模型之外,可自行決定如何處理其執行時相依項目。

  • Framework-dependent:Windows 應用程式 SDK 執行環境必須安裝在使用者的機器上。 應用程式佔用面積較小;依賴執行時是否存在或自動安裝。
  • Self-Contained:所有Windows 應用程式 SDK二進位檔都會隨你的應用程式一同附帶。 較大的佔地面積;沒有外部執行時間的要求。 適合封閉的企業環境。

部署自包含應用程式

開始使用 MSIX

如果你建置 Win32 桌面應用程式(有時稱為 classic 桌面應用程式)或 .NET 應用程式——包括 Windows Presentation Foundation(WPF)和 Windows Forms(WinForms)——那麼你可以使用 MSIX 來打包並部署你的應用程式。

其他安裝技術