微软新推出的打包工具 WinApp,其价值远不止创建 MSIX 包。它为 C++ 开发者提供了一条脱离 Visual Studio 图形界面的路径,通过命令行完成项目构建、依赖管理与打包。这不仅提升了持续集成的友好度,也让拥抱 AI 辅助编程的新一代开发流成为可能,为 Windows 开发带来了新的工作模式。
智能速览
WinApp 是微软官方的开源工具,用于将各类应用打包成 MSIX 格式。
它特别针对 C++ 项目提供了依赖管理功能,可通过 yaml 文件定义和下载所需库。
开发者可以全程使用命令行和轻量编辑器,无需依赖 Visual Studio 界面。
该工具与 AI CLI 和持续集成系统配合良好,适应现代软件开发趋势。
作者已通过该工具在 Zed 编辑器中,结合 AI 完成了完整的开发与打包流程。
精华内容
WinApp 的出现,直指 C++ Windows 开发中的一个长期痛点:对 Visual Studio 的重度依赖。它如何通过命令行重塑这一流程?
定位与核心功能
WinApp 的核心定位是一个打包工具,负责将 C++、C#、Electron、Flutter 或 Rust 项目打包成 MSIX 格式,以便在微软应用商店发布。其功能集中在创建应用清单、管理数字证书与签名,以及执行最终的打包操作。对于已有成熟包管理方案的 C#、Rust 等环境,它主要扮演协同角色。
赋能C++开发
WinApp 对 C++ 开发的支持尤为突出。官方假设 C++ 开发者使用 CMake,并通过 `winapp.yaml` 文件提供了依赖管理功能。开发者可以使用 `winapp restore` 命令,从 nuget.org 下载包括 Windows SDK 和第三方库(如 raylib)在内的依赖包。此外,它还会为项目创建 `.winapp` 子目录,将常用头文件和库本地化,使项目更加自洽和便携。
为何要告别VS
尽管 Visual Studio 功能强大,但其图形界面为主的操作模式与现代开发流程存在隔阂。在持续集成(CI)场景下,其命令行工具分散,且 sln 和 vcxproj 项目文件的操作缺乏充分文档,导致自动化困难。这种界面依赖的范式,难以与 Claude Code、Gemini CLI 等新一代 AI 编程助手有效协同,也无法很好地服务 Rust、Flutter 等技术栈的开发者。
实践验证可行
一个包含 WinRT 组件的 C++ 项目实例证明了 WinApp 的可行性。整个开发流程,从依赖管理、编码到最终打包,完全在 Zed 编辑器中借助 Gemini 和 GitHub Copilot 通过命令行完成,全程未启动 Visual Studio。仅在调试一个由 CMake 生成的 vcxproj 项目时,才短暂使用 Visual Studio 进行验证,展现了 WinApp 在脱离 VS 环境下的巨大潜力。
WinApp 虽然尚在初期,但它成功指明了 Windows C++ 开发的一条新路径:拥抱命令行,解放生产力。它让开发者能自由选择顺手的工具,并与 AI 时代的工作流无缝结合。这个工具的演进,值得每一位 Windows 开发者关注。