Important
Why? • Get Started • Installation • Usage • Docs • Feedback
The Windows App Development CLI (winapp CLI) is a single command-line interface for managing Windows SDKs, packaging, generating app identity, manifests, certificates, and using build tools with any app framework. This tool bridges the gap between cross-platform development and Windows-native capabilities.
Whether you're building with .NET/Win32, CMake, Electron, or Rust, this CLI gives you access to:
- Modern Windows APIs - Windows App SDK and Windows SDK with automatic setup and code generation
- Package Identity - Debug and test by adding package identity without full packaging in a snap
- MSIX Packaging - App packaging with signing and Store readiness
- Developer Tools - Manifests, certificates, assets, and build integration
Perfect for:
- Cross-platform developers using frameworks like Qt or Electron wanting native Windows features or targeting Windows
- Developers who love their current tools and want to build Windows apps from VS Code, or any other editor
- Developers crafting CI/CD pipelines to automate building apps for Windows
Many powerful Windows APIs require your app to have package identity, enabling you to leverage some of the OS components Windows offers, that you wouldn't otherwise have access to. With identity, your app gains access to user-first features like notifications, OS integration, and on-device AI.
Our goal is to support developers wherever they are, with the tools and frameworks they already use. Based on feedback from developers shipping cross-platform apps on Windows, we built this CLI to streamline integrating with the Windows developer platform - handling SDK setup, header generation, manifests, certificates, and packaging in just a few commands:
Without winapp CLI, setting up a project involves 12 manual steps—downloading SDKs, generating headers, creating manifests, and more. With the CLI, it's just 4 commands.
Few examples of what package identity and MSIX packaging unlocks:
- Interactive native notifications and notification management
- Integration with Windows Explorer, Taskbar, Share sheet, and other shell surfaces
- Protocol handlers (
yourapp://URIs) - Web-to-app linking (
yoursite.comopens your app) - On-device AI (Local LLM, Text and Image AI APIs)
- Custom CLI commands via AppExecutionAlias
- Controlled access to camera, microphone, location, and other devices (with user consent)
- Background tasks (run when app is closed)
- File type associations (open
.xyzfiles with your app) - Startup tasks (launch at Windows login)
- App services (expose APIs to other apps)
- Clean install/uninstall & auto-updates
Checkout our getting started guides for step by step instructions of how to setup your environment, generate manifests, assets, and certificate, how to debug APIs that require package identity, and how to MSIX package your app.
Additional guides:
- Packaging an EXE/CLI: step by step guide of packaging an existing exe/cli as MSIX
The easiest way to use the CLI is via WinGet (Windows Package Manager). In Terminal, simply run:
winget install Microsoft.winappcli --source winget
You can install the CLI for Electron projects via NPM:
npm install @microsoft/winappcli --save-dev
For CI/CD pipelines on GitHub Actions or Azure DevOps, use the setup-WinAppCli action to automatically install the CLI on your runners/agents.
Download the latest build from GitHub Releases
Once installed (see Installation above), verify the installation by calling the CLI:
winapp --helpor if using Electron/Node.js
npx winapp --helpSetup Commands:
init- Initialize project with Windows SDK and App SDKrestore- Restore packages and dependenciesupdate- Update packages and dependencies to latest versions
App Identity & Debugging:
package- Create MSIX packages from directoriescreate-debug-identity- Add temporary app identity for debuggingmanifest- Generate and manage AppxManifest.xml files
Certificates & Signing:
Development Tools:
tool- Access Windows SDK toolsget-winapp-path- Get paths to installed SDK components
Node.js/Electron Specific:
node create-addon- Generate native C# or C++ addonsnode add-electron-debug-identity- Add identity to Electron processesnode clear-electron-debug-identity- Remove identity from Electron processes- Windows AI Addon for Electron
The full CLI usage can be found here: Documentation
This repository includes samples demonstrating how to use the CLI with various frameworks:
| Sample | Description |
|---|---|
| C++ App | Native C++ Win32 application with CMake |
| .NET Console | .NET console application |
| WPF App | WPF desktop application |
| Electron | Electron Forge app with appxmanifest, assets, native C++ addon, and C# addon |
| Electron WinML | Electron app using Windows ML for image classification |
| Rust App | Rust application using Windows APIs |
| Tauri App | Tauri cross-platform app with Rust backend |
File an issue, feature request or bug: please ensure that you are not filing a duplicate issue
Need help or have questions about the Windows App Development CLI? Visit our Support Guide for information about our issue templates and triage process.
This project welcomes contributions and suggestions. Most contributions require you to agree to a Contributor License Agreement (CLA) declaring that you have the right to, and actually do, grant us the rights to use your contribution. For details, visit Contributor License Agreements.
When you submit a pull request, a CLA bot will automatically determine whether you need to provide a CLA and decorate the PR appropriately (e.g., status check, comment). Simply follow the instructions provided by the bot. You will only need to do this once across all repos using our CLA.
This project has adopted the Microsoft Open Source Code of Conduct. For more information see the Code of Conduct FAQ or contact opencode@microsoft.com with any additional questions or comments.
To build the CLI:
# Build the CLI and package for npm from the repo root
.\scripts\build-cli.ps1
The binaries and packages will be placed in the artifacts folder
This project may contain trademarks or logos for projects, products, or services. Authorized use of Microsoft trademarks or logos is subject to and must follow Microsoft's Trademark & Brand Guidelines. Use of Microsoft trademarks or logos in modified versions of this project must not cause confusion or imply Microsoft sponsorship. Any use of third-party trademarks or logos are subject to those third-party's policies.