WinAppCLI:快速 Windows 应用开发的命令行工具

WinAppCLI:快速 Windows 应用开发的命令行工具

从终端一次性构建、打包并部署 Windows 应用,使用统一、简洁的命令行界面。


为什么选择 WinAppCLI?

现代跨平台框架(Electron、.NET、C++、Rust、Tauri…)都能提供极佳的用户体验,但在 Windows 上部署仍显得与众不同,流程繁琐且易出错。你需要完成:

  • 安装并管理完整的 Windows 及 Windows App SDK 工具集。
  • 生成 AppxManifest.xml 文件,编码应用身份、功能权限与快捷方式信息。
  • 创建并维护开发证书。
  • 将应用打包为 MSIX 或 EXE。
  • 对二进制文件进行签名,设置版本号,并配置面向商店的元数据。

逐一手工完成这些步骤既乏味又容易出错。WinAppCLI 将这些任务整合到一个体积小、维护良好的开源项目中。

  • 一个工具,多框架支持 – Electron、.NET、C++、Rust、Tauri。
  • 零摩擦 SDK 安装 – 自动获取最新版 Windows SDK 与 App SDK。
  • 即时应用身份 – 仅调试时添加临时身份,无需完整打包。
  • 快速且可复现的 MSIX 生成 – 适配 CI/CD 流水线。
  • 开源 – MIT 许可证,完全可审计。

快速开始

1. 安装 WinAppCLI

平台 命令
Windows(通过 WinGet) winget install Microsoft.winappcli --source winget
Node / Electron npm install @microsoft/winappcli --save-dev
CI 环境 使用 GitHub Actions 的 setup‑WinAppCli 操作,或在 runner 上通过 winget 安装

本地开发时,你也可直接从 GitHub releases 页面 下载最新发行版。

2. 验证安装

winapp --help

你应该能看到帮助菜单,包括 initpackagecertmanifest 等命令。

3. 初始化项目

# 在新建或现有的 Electron 项目中
winapp init

此命令会拉取所需 SDK,创建证书占位符,并生成 winapp.example.yaml(你可将其改名为 winapp.yaml)。


核心命令概览

命令 用途
init 初始化 SDK 并生成 manifest 与身份架构
restore 恢复 SDK 包与依赖
update 更新 SDK 至最新版
package 从源目录构建 MSIX 或 EXE 包
create-debug-identity 为调试添加临时应用身份
manifest 生成或更新 AppxManifest.xml
cert 创建或更新开发证书
sign 用指定证书签名 MSIX 或 EXE
tool 暴露 Windows SDK 命令行工具
node create-addon 为 Electron 生成 C# 或 C++ 插件
node add-electron-debug-identity 为 Electron 进程添加调试身份

完整参考可在 官方文档 中查看。


示例项目

仓库包含一组即装即跑的示例,展示多栈实际使用场景。每个示例都包含 winapp.yaml 与简短 README。

  • Electron – 使用 Electron Forge、原生 C++ 插件与 C# 模块。
  • Electron WinML – 展示使用 Windows ML 的图像分类。
  • C++ (Win32) – 纯 C++ 应用,使用 CMake 构建。
  • .NET Console – .NET WinAppSDK 包装示例。
  • WPF – 经典 Windows Presentation Foundation UI。
  • Rust – 通过 windows-rs crate 调用本机 API。
  • Tauri – Rust 后端支持跨平台前端。

运行示例只需三步:

cd samples/electron
npm install
npx winapp init
npx winapp package

生成的 dist 目录包含可 sideload 或上传商店的 MSIX 应用。


CI/CD 集成

WinAppCLI 旨在无缝融入现代流水线。

GitHub Actions

- name: Setup WinAppCLI
  uses: microsoft/setup-winappcli@v1

- name: Build and Sign
  run: |
    winapp init
    winapp package
    winapp sign --certificate myCert.pfx --password ${{ secrets.CERT_PASSWORD }}

Azure DevOps

在流水线中加入官方 setup-WinAppCli 任务,或通过 winget 在代理上安装。

CLI 会暴露环境变量(例如 WINAPP_SDK_PATH),便于在其他工具中引用已安装 SDK。


常见问题与排查

症状 可能原因 解决方案
winapp: unrecognized command CLI 未在 PATH 验证安装,重跑 winget installnpm,并将本地 node_modules/.bin 添加至 PATH
签名失败并提示 The certificate was not found 证书路径或密码错误 使用 --certificate 指定完整路径,或通过 --password / 环境变量 WINAPP_CERT_PASSWORD 传递密码
Electron 与 .NET 构建之间身份冲突 winapp.yaml 中存在重复身份 删除或重命名冲突的身份条目
MSIX 安装失败,提示 signature is missing 证书未受信任 在测试机上将开发证书安装至 受信任的根证书颁发机构
---

贡献

WinAppCLI 是一个 MIT 许可证下的开源项目。欢迎你:

  1. 提出问题 – 缺陷报告、功能建议或使用疑问。
  2. 提交拉取请求 – 修复、改进或新增语言绑定。
  3. 贡献示例 – 为其他框架或构建系统添加支持。

所有贡献者须签署 Microsoft 的 Contributor License Agreement。详情请参阅 CONTRIBUTING.md


最后想法

WinAppCLI 将 Windows 应用打包这项艰巨任务转化为可重复、可脚本化的过程。无论你是想为 Electron 项目添加原生 Windows 功能、为 .NET 开发者提供快速 MSIX 打包,还是 CI 工程师需要可靠构建步骤,这个 CLI 都是你工具链中强有力的补充。

快来试一试:通过 WinGet 或 NPM 安装,跑一个示例,告诉我们你的体验。凭借社区贡献与 Microsoft 牵线的路线图,WinAppCLI 正在成为跨平台时代 Windows 应用开发的事实标准。

原创文章: 查看原文

分享本文