Winapp: Novo CLI para modernizar seus Apps

O winapp CLI é a nova ferramenta de linha de comando da Microsoft, open source e em prévia pública, criada para simplificar o ciclo de vida de aplicações Windows. Ele reúne em um só lugar tarefas como configuração de SDKs, identidade de pacote, manifestos, certificados e empacotamento MSIX.

O desenvolvimento para Windows ficou bem mais heterogêneo nos últimos anos. Em vez de um ecossistema concentrado no Visual Studio e no MSBuild, muitos times trabalham com Electron, CMake, .NET, Rust ou Dart, quase sempre dentro de pipelines automatizados de CI/CD.

Neste artigo, você vai entender o que é o winapp CLI, para quem ele foi pensado, como instalar e quais problemas ele resolve na prática.

O que é o winapp CLI

O Windows App Development CLI, chamado simplesmente de winapp, foi anunciado pela Microsoft em janeiro de 2026 no blog oficial do Windows Developer. Em outras palavras, trata-se de uma interface única para tarefas que antes exigiam várias ferramentas diferentes.

Segundo a documentação oficial no Microsoft Learn, o winapp CLI gerencia SDKs do Windows, empacotamento, identidade do aplicativo, manifestos, certificados e ferramentas de build. Além disso, ele funciona com qualquer framework de aplicação.

O foco está em desenvolvedores que se encaixam em pelo menos um destes perfis:

  • utilizam frameworks multiplataforma;
  • trabalham fora do Visual Studio;
  • não dependem do MSBuild como ferramenta central de build.

Por isso, a proposta é acelerar todo o caminho, desde o setup do ambiente até o empacotamento e a distribuição. Assim, recursos modernos do Windows ficam acessíveis independentemente do toolchain adotado.

Nikola Metulev, gerente de produto do projeto, resumiu a ideia de forma direta. O objetivo é unificar essas tarefas em um único CLI, para que o desenvolvedor foque em construir aplicativos em vez de brigar com configuração.

Por que uma CLI para desenvolvimento de apps Windows

O winapp CLI foi pensado para um público amplo. Entre os perfis citados no anúncio estão desenvolvedores web que usam Electron, profissionais C++ experientes com CMake e quem constrói aplicativos com .NET, Rust ou Dart.

A motivação é uma dificuldade recorrente. Mesmo com um framework multiplataforma, integrar o app corretamente com as capacidades modernas do Windows costuma gerar atrito operacional, sobretudo fora do fluxo tradicional do Visual Studio.

Na prática, o desenvolvedor precisa baixar o Windows SDK, configurar o Windows App SDK, escrever um manifesto, gerar um certificado e assinar o pacote. Cada etapa tem sua própria ferramenta, sua própria documentação e seus próprios erros.

Dessa forma, o winapp CLI atua como um atalho estruturado para esse problema. Ele automatiza as etapas mais trabalhosas e permite que o time acesse funcionalidades do sistema sem trocar de stack.

Esse ponto é relevante porque muitos aplicativos multiplataforma têm grande presença no Windows. No entanto, eles deixam de usar recursos nativos avançados por causa da complexidade de integração, empacotamento e configuração do ambiente.

Frameworks suportados pelo winapp CLI

A documentação atual traz guias de início rápido para vários ecossistemas. Por exemplo, há roteiros específicos para cada um destes cenários:

  • .NET, incluindo WPF e Windows Forms;
  • C++ com CMake;
  • Electron;
  • Rust;
  • Tauri;
  • Flutter.

Além disso, existem guias para empacotar um executável ou CLI já existente como MSIX. Também há material sobre empacotamento esparso, que dá identidade a um app não empacotado sem mudar onde ele está instalado.

Quando você executa o comando init sem informar um diretório, a ferramenta procura projetos compatíveis na árvore de pastas. Ela reconhece, por exemplo, um package.json com Electron nas dependências, um pubspec.yaml do Flutter ou um tauri.conf.json do Tauri.

Se você trabalha com interfaces desktop em .NET, vale comparar essa abordagem com a do .NET MAUI para desktop no Windows e no macOS. São caminhos diferentes, mas ambos levam ao mesmo sistema operacional.

Acesso facilitado a APIs modernas e integrações do Windows

Um ponto central do anúncio é facilitar a adoção de APIs e recursos modernos do sistema. Entre eles estão as Windows AI APIs, os recursos de segurança e as integrações com o shell do Windows.

Segundo o time, o objetivo é reduzir o esforço necessário para usar essas capacidades. Isso vale especialmente quando o desenvolvedor trabalha em um ecossistema que não nasceu pensando primeiro no Windows.

O papel da identidade de pacote

Muitas APIs do Windows exigem que o aplicativo tenha identidade de pacote. Com essa identidade, o app ganha acesso a notificações, integração com o sistema operacional e recursos de IA executados no próprio dispositivo.

O problema é que, tradicionalmente, obter identidade exigia empacotar o aplicativo inteiro como MSIX. Isso tornava o ciclo de depuração lento, porque cada teste dependia de gerar, assinar e instalar um pacote.

Por isso, o winapp CLI oferece formas de adicionar identidade durante o desenvolvimento sem o empacotamento completo. Assim, você depura APIs que exigem identidade quase como depuraria qualquer outro código.

Windows AI APIs no winapp CLI

As Windows AI APIs permitem usar modelos locais, como o Phi Silica, em computadores Copilot+ com NPU. Também é possível usar o Windows Machine Learning para executar modelos ONNX próprios.

Os guias de Electron do winapp CLI mostram exatamente esse caminho. Neles, um app JavaScript resume textos com o Phi Silica ou executa modelos com o WinML, sempre com identidade de pacote configurada pela ferramenta.

Se o tema inteligência artificial no ecossistema Microsoft interessa a você, vale ler também sobre como construir aplicações de IA com .NET.

Public Preview

O time da Microsoft estabeleceu expectativas realistas sobre o estado do projeto. A ferramenta está nos primeiros estágios, e diversos cenários de desenvolvimento Windows ainda estão em construção.

A liberação como prévia pública tem um objetivo claro: aprender com o uso real. Portanto, há um foco explícito em coletar feedback e pedidos de funcionalidades por meio das issues do repositório no GitHub.

A própria documentação avisa que recursos e comandos podem mudar antes da versão final. Em outras palavras, vale acompanhar as notas de release antes de amarrar um pipeline de produção a uma opção específica.

Essa abordagem sugere que o winapp CLI é tratado como um investimento em evolução. Assim, as prioridades devem seguir aquilo que a comunidade realmente precisa nos fluxos modernos de desenvolvimento Windows.

Como instalar o winapp CLI

A Microsoft apresentou duas formas diretas de instalação no anúncio. Cada uma reflete um perfil típico de desenvolvedor.

Instalação via WinGet

O WinGet é a opção principal para uso geral. Se você ainda não usa o gerenciador de pacotes do Windows, confira o guia sobre como configurar o WinGet no ambiente de desenvolvimento.

winget install microsoft.winappcli

A documentação atual também mostra a mesma instalação com a origem explícita. Nesse caso, o comando fica assim:

winget install Microsoft.winappcli --source winget

Instalação via npm para projetos Electron

Quando o aplicativo é mantido como projeto JavaScript ou TypeScript, a instalação via npm faz mais sentido. Dessa forma, a ferramenta vira uma dependência de desenvolvimento versionada junto com o projeto.

npm install --save-dev @microsoft/winappcli

Nesse cenário, você executa a ferramenta com o npx, sem precisar de instalação global. Além disso, alguns comandos específicos para Electron existem apenas no pacote npm.

Outras opções e verificação

Para pipelines de CI/CD, a Microsoft mantém a action setup-WinAppCli, que instala a ferramenta em runners do GitHub Actions e agentes do Azure DevOps. Também é possível baixar a versão mais recente direto da página de releases do repositório.

Depois de instalar, confirme que tudo funciona chamando a ajuda da ferramenta:

winapp --help

Em projetos Electron ou Node.js, use o npx para chamar o executável local:

npx winapp --help

Principais comandos do winapp CLI

A referência oficial organiza os comandos em categorias. A seguir, estão os mais importantes para entender a proposta da ferramenta.

Setup do ambiente com init e restore

O comando init prepara um diretório para desenvolvimento Windows moderno. Ele baixa o Windows SDK e o Windows App SDK, gera cabeçalhos C++/WinRT, cria o Package.appxmanifest e atualiza o .gitignore.

# Inicializa o projeto no diretório atual
winapp init

Além disso, o init cria um arquivo winapp.yaml com as versões dos SDKs usados. Esse arquivo pode ir para o controle de versão, enquanto os arquivos gerados ficam fora dele.

Quando outra pessoa clona o repositório, basta rodar o restore. Ele lê o winapp.yaml, baixa os pacotes nas versões especificadas e regenera os arquivos necessários.

# Restaura os SDKs com base no winapp.yaml
winapp restore

Em projetos .NET, as versões ficam como PackageReference no .csproj. Nesse caso, o restore simplesmente executa o dotnet restore por você.

Identidade para depuração

O comando create-debug-identity cria uma identidade de depuração usando empacotamento esparso. O executável continua no local original, e o Windows associa a identidade a ele.

# Adiciona identidade ao executável usando o manifesto local
winapp create-debug-identity ./bin/MyApp.exe

Na prática, isso permite testar APIs que exigem identidade sem gerar um MSIX a cada alteração. Por padrão, a ferramenta acrescenta .debug ao nome do pacote, para não colidir com a versão instalada de verdade.

Empacotamento MSIX e certificados

O comando pack cria pacotes MSIX a partir de uma pasta com os arquivos do aplicativo. Ele exige um manifesto, que você gera com o init ou com o manifest generate.

# Gera um certificado de desenvolvimento e empacota a pasta dist
winapp pack ./dist --generate-cert

Para assinar pacotes, o grupo cert gera e instala certificados de desenvolvimento. Contudo, a documentação alerta que a senha padrão é pública, então esses certificados servem apenas para testes.

Para distribuir de verdade, use um certificado emitido por uma autoridade certificadora ou o Azure Trusted Signing. Se o destino for a loja, o guia sobre como publicar um aplicativo na Windows Store complementa esse processo.

Windows-first sem necessidade de toolchain

O posicionamento do winapp CLI é claro. Ele permite que desenvolvedores e equipes trabalhem com qualquer toolchain, sem perder a capacidade de configurar o ambiente, acessar APIs modernas e empacotar com menos atrito.

Isso segue uma linha consistente na evolução recente do ecossistema Windows. A Microsoft vem reduzindo barreiras de adoção e dando suporte real a stacks que não dependem do Visual Studio como ponto central.

Por exemplo, um time que compila em C++ com CMake no VS Code pode usar o mesmo fluxo de identidade e empacotamento de um time .NET. Da mesma forma, um projeto Rust ganha acesso ao MSIX sem adotar o MSBuild.

Além disso, o fato de ser uma ferramenta de linha de comando favorece a automação. Os mesmos comandos executados na máquina do desenvolvedor rodam no pipeline, o que reduz a diferença entre o build local e o build de CI.

Integração do winapp CLI com Electron

No vídeo oficial divulgado pela Microsoft, o time apresentou um exemplo com Electron. Nele, o app recebe suporte a bibliotecas do Windows para exibir notificações nativas do sistema.

O cenário Electron é especial porque o executável electron.exe fica dentro da pasta node_modules, separado do código do app. Por isso, o pacote npm traz o comando node add-electron-debug-identity, que registra a identidade no processo do Electron durante o desenvolvimento.

# Registra a identidade de depuração no processo do Electron
npx winapp node add-electron-debug-identity

A documentação registra um problema conhecido com empacotamento esparso no Electron, que pode fazer o app fechar na inicialização. Nesse caso, a orientação é desativar o sandbox apenas para depuração, porque o empacotamento MSIX completo não sofre com esse problema.

Para desfazer a configuração, existe o comando node clear-electron-debug-identity. Além disso, o pacote oferece o node create-addon, que cria um addon nativo quando a API desejada precisa de código C++ ou C#.

Os guias atuais mostram ainda que é possível gerar bindings JavaScript para APIs do Windows App SDK. Assim, uma notificação pode ser exibida direto do JavaScript, sem escrever um addon nativo.

Quando adotar o winapp CLI

Se o seu app já é construído no Visual Studio com MSBuild e projetos WinUI, o ganho imediato tende a ser menor. Afinal, a IDE já cuida de boa parte do manifesto, da identidade e do empacotamento.

Por outro lado, se você mantém um app Electron, Tauri, Flutter, Rust ou C++ com CMake, o winapp CLI resolve dores bem concretas. Ele elimina scripts manuais para baixar SDKs, gerar certificados e montar pacotes.

Também vale considerar o estado de prévia. Por isso, a recomendação é experimentar em projetos de teste ou em ramos separados antes de levar a ferramenta para o pipeline principal.

Conclusão

O anúncio do winapp CLI representa uma tentativa direta de modernizar e simplificar o desenvolvimento para Windows. Isso acontece em um cenário no qual a diversidade de frameworks e ferramentas é inevitável.

Ao oferecer uma ferramenta open source em prévia pública, voltada a fluxos multiplataforma e fora do MSBuild, a Microsoft sinaliza um compromisso com um ciclo de vida mais acessível. Ele vai do setup ao empacotamento e abre caminho para Windows AI APIs, segurança e integração com o shell.

Como projeto em fase inicial, o winapp CLI ainda vai evoluir com base na adoção e no feedback da comunidade. Mesmo assim, ele já surge como um componente importante para reduzir o atrito entre stacks modernas e o ecossistema nativo do Windows.

FAQ

O winapp CLI é gratuito?

Sim. A ferramenta é open source e o código está disponível no repositório microsoft/WinAppCli no GitHub.

Preciso do Visual Studio para usar o winapp CLI?

Não. A ferramenta foi pensada justamente para quem trabalha fora do Visual Studio e não depende do MSBuild.

Qual a diferença entre instalar via WinGet e via npm?

O WinGet instala a ferramenta no sistema para uso geral. O npm adiciona o CLI como dependência de desenvolvimento do projeto e inclui comandos exclusivos para Electron.

O winapp CLI já pode ser usado em produção?

Ele está em prévia pública e os comandos podem mudar antes da versão final. Por isso, teste com cuidado antes de depender dele em pipelines críticos.

O que é identidade de pacote?

É a identidade que o Windows associa a um aplicativo empacotado. Muitas APIs, como notificações e recursos de IA no dispositivo, só funcionam quando o app tem essa identidade.