Windows 應用程式 Development CLI (WinApp CLI)

這很重要

Windows 應用程式開發 CLI 目前處於 公開預覽。 功能與指令可能會在最終版本前有所變動。 請透過 creating a issue 分享你的回饋。

Windows 應用程式 開發 CLI(WinApp CLI)是一個命令列工具,用於使用您選擇的框架來建置 Windows 應用程式。 它可以在終端機、你偏好的編輯器,或 AI 編碼代理中使用。

  • WinUI 應用程式:建立、執行、除錯、測試及打包 WinUI 應用程式,無需開啟 Visual Studio。
  • 跨平台及其他框架:將 Windows 功能帶入你現有的 Electron、Flutter、Tauri、Rust、.NET 或 C++ 應用程式,且不需更換框架。 WinApp CLI 會設定 Windows 應用程式 SDK 和 Windows SDK,為你的應用程式提供套件身分,讓你能呼叫通知和裝置 AI 等 API,並以 MSIX 格式打包,供 Microsoft Store 或你自己的發行方式使用。

WinApp CLI 的主要優點

從終端機建立並執行 WinUI 應用程式

winapp new 使用官方範本(包括 blank、NavigationView、TabView 和 MVVM 起始範本)建立 WinUI 應用程式。 winapp run建置專案,安裝對應的 Windows 應用程式 執行環境,並啟動該應用程式,不論是打包還是未打包。 打造你的第一個 WinUI 應用程式

使用套件身分識別與當機診斷進行除錯

用套件身份來執行你的應用程式,這樣你可以測試通知、裝置上的 AI 以及其他需要身份的 API。 新增 --debug-output 以擷取除錯訊息和崩潰傾印。 對於 WinUI 當機,WinApp CLI 會解碼暫存例外,指出發生失敗的 XAML 事件處理常式。 使用套件識別進行偵錯

讓 AI 編碼代理立足於真實的 WinUI 程式碼

winapp find-ui從 WinUI 3 圖庫與 Windows 社群工具包中提供可運作的 XAML 與 C#。 winapp find-api檢查你專案參考的 Windows 執行階段 API。 代理則用它們從真實樣本和元資料生成程式碼,而不是靠猜測。 使用 WinApp CLI 搭配 AI 代理

自動化並測試你的應用程式使用者介面

winapp ui透過 使用者介面自動化 檢查並互動執行中的應用程式,並擷取截圖與錄影。 在 Windows 沙盒中執行你的應用程式,在乾淨的環境中測試它。 使用者介面自動化

打包、簽署並寄送

winapp pack 建立你的專案,打包成 MSIX,並在一個步驟中完成簽署。 在本地產生開發憑證,使用 Azure 信任簽署 簽署版本建置,並在 GitHub Actions 或 Azure DevOps 執行器上安裝 WinApp CLI。 打包你的應用程式

將 Windows 功能帶入任何框架

在不更改建置系統的情況下,為使用 .NET、C++、Electron、Flutter、Rust 或 Tauri 建置的應用程式新增 Windows SDK 和 Windows 應用程式 SDK、套件識別碼和 MSIX 封裝。 查看支援的框架

開始使用 WinUI

安裝 WinApp CLI 和 .NET SDK 後,建立並執行一個 WinUI 應用程式:

winapp new --name MyWinUIApp --template winui-navview --use-defaults
cd MyWinUIApp
winapp run

當你準備好在本地測試套件時,產生開發憑證並建立已簽署的 MSIX 套件:

winapp cert generate --manifest ./Package.appxmanifest
winapp pack ./MyWinUIApp.csproj -c Release --cert ./devcert.pfx

開發憑證使用預設密碼,僅用於本地測試。 在你發佈應用程式之前,請用可信憑證簽署,例如用 winapp az-sign。 如需詳細資訊,請參閱 安全性。

關於包含設定與首次 UI 變更的逐步教學,請參見 「建構你的第一個 WinUI 應用程式」。 要查看所有可用範本,請執行 winapp new --list。 完整工作流程,包括除錯、UI 自動化與打包,請參見「 使用 WinApp CLI 配合 WinUI」。

安裝

WinGet

安裝 CLI 最簡單的方法是透過 WinGet(Windows 封裝管理員):

winget install Microsoft.winappcli --source winget

如果你用 WinGet PowerShell 模組,建議直接執行 Install-WinGetPackage Microsoft.winappcli 。

NPM

對於 Electron 專案,請透過 NPM 安裝:

npm install @microsoft/winappcli --save-dev

GitHub Actions / Azure DevOps

對於 CI/CD 管線,請使用 setup-WinAppCli 動作自動安裝 CLI 到執行者/代理程式上。

手冊下載

從 GitHub Releases 下載最新版本。

確認安裝

安裝後,請透過呼叫 CLI 來驗證安裝:

winapp --help

或者如果使用 Electron/Node.js:

npx winapp --help

使用 WinApp CLI 搭配 AI 代理

WinApp CLI 設計上能很好地與 AI 編碼代理搭配使用。 像 find-api 和 find-ui 這類指令會以 --json 回傳機器可讀的輸出,讓代理程式在撰寫程式碼前能查閱真實的 WinUI 範例和 Windows 執行階段 API。

安裝代理插件,讓你的代理在 WinApp CLI 和 WinUI 上具備技能:

  • winappcli:可處理 WinApp CLI 指令、工作流程與故障排除的代理程式與技能。
  • winui: 用於建置、打包及測試 WinUI 3 應用程式的技能。
# GitHub Copilot CLI
copilot plugin marketplace add microsoft/WinAppCli
copilot plugin install winappcli@winappcli
copilot plugin install winui@winappcli

# Claude Code
claude plugin marketplace add microsoft/WinAppCli
claude plugin install winappcli@winappcli
claude plugin install winui@winappcli

# OpenAI Codex
codex plugin marketplace add microsoft/WinAppCli
codex plugin add winappcli@winappcli
codex plugin add winui@winappcli

如果你是在 Visual Studio Code 中工作,WinApp VS Code 擴充功能會從編輯器執行 WinApp CLI 指令,按下 F5 時會啟動帶有套件身分識別的應用程式。 從 Visual Studio 市集安裝它。

支援的架構

WinApp CLI 可搭配 WinUI 及其他應用程式框架使用:

Framework Guide
WinUI 開始使用 WinUI
.NET / WPF / WinForms 開始使用 .NET
.NET MAUI 開始使用 .NET MAUI
C++ (CMake) 開始使用 C++
電子 從頭開始學習 Electron
Rust 開始使用 Rust
陶瑞 開始使用Tauri
撲動 開始使用Flutter

額外指南:

  • 打包 EXE/CLI:將現有 EXE/CLI 打包為 MSIX 的逐步指南
  • .NET 檔案式應用程式:執行一個帶有套件身分識別的檔案.cs,無需專案檔案或清單
  • 稀疏包裝:透過僅含身分識別的(稀疏)MSIX 和外部內容,讓未封裝的應用程式具有套件身分識別
  • Shell 補全:在 PowerShell、bash、zsh 和 fish 中啟用指令、選項和值的 Tab 補全功能
  • DevTools:檢查一個正在執行的 WinUI 3 應用程式,嘗試即時屬性變更,並留言給代理程式(進階)
  • 安全性指引:開發憑證和開發人員模式會對你的電腦造成哪些變更、如何處理 devcert.pfx,以及如何為正式環境簽署

命令概觀

類別 Commands
建立與設定 新建、 初始化、 還原、 更新
執行與除錯 run、create-debug-identity、embed-identity、unregister
封裝 包
清單 manifest generate,manifest update-assets,manifest add-alias
證書與簽署 cert generate, cert install, sign, az-sign, create-external-catalog
代理程式的程式碼搜尋 find-ui、 find-api
使用者介面自動化與沙盒 UI、 DevTools、 目標
公用程式 tool, store, get-winapp-path, config, complete
Node.js/電子 node create-addon、 node generate-bindings、 node add-electron-debug-identity、 node clear-electron-debug-identity

完整 CLI 參考,請參見 CLI 參考。

Samples

GitHub 上的 samples 資料夾裡有每個支援框架的可執行專案:

Sample Description
WinUI 應用程式 已使用 winapp run 註冊並啟動的已封裝 WinUI 應用程式
WinUI 未封裝應用程式 未封裝的 WinUI 應用程式使用 winapp run 啟動
WinUI 方案集 多專案解決方案(應用程式與測試專案),顯示如何選取 winapp run 應用程式專案
C++ WinUI 應用程式 WinUI 視窗以 C++ 搭配 CMake 建置,沒有 XAML 或 MSBuild
WPF 應用程式 WPF 桌面應用程式
.NET MAUI 應用程式 .NET MAUI Windows專案已以 WinApp CLI 打包並簽署
C++ 應用程式 以 CMake 建置的原生 C++ Win32 應用程式
電子 Electron Forge 應用程式,包含清單、資產,以及原生的 C++ 和 C# 附加元件
Rust 應用程式 呼叫 Windows API 的 Rust 應用程式
Tauri 應用程式 Tauri 應用程式搭配 Rust 後端
Flutter 應用程式 Flutter 桌面應用程式,具備套件身份與 Windows 應用程式 SDK
Sparse 應用程式 WPF 應用程式,採用稀疏封裝(僅識別身分的 MSIX)及安裝程式

為什麼要包裝身份?

許多 Windows API 要求你的應用程式必須有套件身份。 透過身份認證,你的應用程式將獲得通知、作業系統整合及裝置上 AI 等功能access。 WinUI 應用程式範本包含套件清單,因此 winapp run 預設會給它們一個身分識別。 要查看套件識別功能解鎖的完整清單以及選擇合適包裝模型的幫助,請參閱 包裝總覽。

開放原始碼

WinApp CLI 是 開放原始碼。 你可以在 GitHub 找到原始碼、檔案問題並貢獻。 如需協助,請參閱支援。