重要
Windows 应用开发 CLI 目前为公开预览。 在最终发布之前,功能和命令可能会更改。 通过创建问题来共享反馈。
Windows 应用开发 CLI(winapp CLI)是一种命令行工具,用于使用所选框架生成Windows应用。 它适用于终端、你喜欢的编辑器或 AI 编码代理。
- WinUI 应用:创建、运行、调试、测试和打包 WinUI 应用,而无需打开Visual Studio。
- 跨平台和其他框架:在不更改框架的情况下,为现有的 Electron、Flutter、Tauri、Rust、.NET 或 C++ 应用带来Windows功能。 winapp CLI 设置Windows 应用 SDK和 Windows SDK,提供应用包标识,以便可以调用通知和设备上的 AI 等 API,并将其打包为 MSIX,用于在 Microsoft Store 或你自己的分发渠道中分发。
winapp CLI 的主要优势
从终端创建和运行 WinUI 应用
winapp new 从官方模板创建 WinUI 应用,包括空白、NavigationView、TabView 和 MVVM 入门模板。
winapp run 会生成项目,安装匹配的 Windows 应用 运行时,并启动应用,而无论其已打包还是未打包。
构建第一个 WinUI 应用
使用包标识和故障诊断进行调试
使用包标识运行应用,以便测试通知、设备端 AI 和其他需要标识的 API。 添加 --debug-output 以捕获调试消息和故障转储。 对于 WinUI 崩溃,winapp 会解码封存异常,帮助你定位到失败的 XAML 事件处理程序。
使用包标识进行调试
让 AI 编码代理基于真实的 WinUI 代码
winapp find-ui从 WinUI 3 库和 Windows Community Toolkit 返回可用的 XAML 和 C# 代码。
winapp find-api检查项目引用Windows 运行时 API。 代理使用它们从实际示例和元数据生成代码,而不是猜测。
将 winapp CLI 与 AI 代理配合使用
自动化并测试应用的 UI
winapp ui通过UI 自动化检查和与正在运行的应用交互,并捕获屏幕截图和录制。 在Windows沙盒中运行应用,以在干净的环境中对其进行测试。
UI 自动化
打包、签名并发布
winapp pack 生成项目,将其打包为 MSIX,并在一个步骤中对其进行签名。 在本地生成开发证书、使用 Azure 受信任签名 签署发布版本,并在 GitHub Actions 或 Azure DevOps 运行器上安装 winapp CLI。
打包应用
将Windows功能引入任何框架
将Windows SDK 和Windows 应用 SDK、包标识和 MSIX 打包添加到使用 .NET、C++、Electron、Flutter、Rust 或 Tauri 构建的应用,而无需更改生成系统。
请参阅支持的框架
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。
手动下载
验证安装
安装后,通过调用 CLI 验证安装:
winapp --help
或者,如果使用 Electron/Node.js:
npx winapp --help
将 winapp CLI 与 AI 代理配合使用
winapp CLI 旨在与 AI 编码代理很好地配合工作。 命令(例如 find-ui 和 find-api)会返回带有 --json 的机器可读输出,因此代理可以在编写代码之前查找实际的 WinUI 示例和 Windows 运行时 API。
安装 winapp 插件,为你的代理添加适用于 winapp CLI 工作流的技能:
# GitHub Copilot CLI
copilot plugin install microsoft/WinAppCli
# Claude Code
claude plugin marketplace add microsoft/WinAppCli
claude plugin install winappcli@winappcli
如果在Visual Studio Code中工作,WinApp VS Code 扩展会从编辑器运行 winapp CLI 命令,并在按 F5 时使用包标识启动应用。 从Visual Studio Marketplace安装它。
支持的框架
winapp CLI 适用于 WinUI 和其他应用框架:
| Framework | 指南 |
|---|---|
| WinUI | WinUI 入门 |
| .NET/ WPF / WinForms | 开始使用 .NET |
| .NET MAUI | .NET MAUI 入门 |
| C++ (CMake) | 开始使用 C++ |
| 电子 | 开始使用 Electron |
| Rust | 开始学习 Rust |
| 陶里 | 开始使用Tauri |
| Flutter | 开始使用 Flutter |
其他指南:
- 打包 EXE/CLI:将现有 EXE/CLI 打包为 MSIX 的分步指南
- 稀疏打包:使用仅含标识的(稀疏)MSIX 和外部内容为未打包的应用提供包标识
- Shell 补全:在 PowerShell、bash、zsh 和 fish 中为命令、选项和值启用选项卡补全
-
安全指南:计算机上的开发证书和开发人员模式发生哪些更改、如何处理
devcert.pfx以及如何登录生产
命令概述
| 类别 | 指令 |
|---|---|
| 创建和设置 | new, init, restore, update |
| 运行和调试 | run, create-debug-identity, embed-identity, unregister |
| 包装 | 打包 |
| 清单 | 清单生成, 清单更新资产, 清单添加别名 |
| 证书和签名 | cert generate, cert install, sign, az-sign, create-external-catalog |
| 面向代理的代码搜索 | find-ui, find-api |
| UI 自动化和沙盒 | ui, target |
| Utilities | 工具, 存储, 获取-winapp-路径, 完成 |
| Node.js/Electron | node create-addon, node generate-bindings, node add-electron-debug-identity, node clear-electron-debug-identity |
有关完整的 CLI 参考,请参阅 CLI 参考。
示例
GitHub上的示例文件夹为每个受支持的框架都有一个可运行的项目:
| Sample | Description |
|---|---|
| WinUI 应用 | 已使用 winapp run 注册并启动打包的 WinUI 应用 |
| WinUI 未打包的应用 | 使用 winapp run 启动的未打包 WinUI 应用 |
| WinUI 解决方案 | 多项目解决方案(应用和测试项目),显示 winapp run 如何选择应用项目 |
| C++ WinUI 应用 | 使用 C++ 和 CMake 构建、不使用 XAML 或 MSBuild 的 WinUI 窗口 |
| WPF应用 | WPF 桌面应用 |
| .NET MAUI应用 | 使用 winapp CLI 打包和签名.NET MAUI Windows项目 |
| C++ 应用 | 使用 CMake 构建的本机 C++ Win32 应用 |
| 电子 | 带有清单、资产和本机 C++ 和 C# 加载项的 Electron Forge 应用 |
| Rust 应用 | 调用 Windows API 的 Rust 应用 |
| Tauri 应用 | 具有 Rust 后端的 Tauri 应用 |
| Flutter 应用 | 具有程序包标识和Windows 应用 SDK的 Flutter 桌面应用 |
| 精简应用 | 带有稀疏打包(仅标识 MSIX)和安装程序的 WPF 应用 |
为什么包标识重要?
许多Windows API 要求应用具有包标识。 通过身份识别,您的应用可以访问通知、操作系统集成以及设备上的人工智能等功能。 WinUI 应用模板包括包清单,因此 winapp run 默认为它们提供标识。 有关包标识解锁功能的完整列表以及帮助选择合适打包模型的信息,请参阅 打包概述。
开源
winapp CLI 开放源代码。 可以在 GitHub 中找到源代码、文件问题和贡献内容。 如需帮助,请参阅 支持。