Observação
O acesso a essa página exige autorização. Você pode tentar entrar ou alterar diretórios.
O acesso a essa página exige autorização. Você pode tentar alterar os diretórios.
Conclusão do shell
Habilite a conclusão da guia para comandos, opções e valores. Consulte o guia de Conclusão do Shell para obter instruções de instalação.
# Quick setup for PowerShell (permanent — add to profile)
winapp complete --setup powershell >> $PROFILE
# Or try it in the current session only
winapp complete --setup powershell | Out-String | Invoke-Expression
Iniciar
Inicialize um diretório com o SDK do Windows, SDK do Aplicativo Windows e ativos necessários para o desenvolvimento moderno do Windows.
winapp init [base-directory] [options]
Argumentos:
-
base-directory- Diretório base/raiz para o aplicativo/workspace (padrão: diretório atual)
Opções:
-
--config-dir <path>- Diretório para leitura/configuração do repositório (padrão: diretório atual) -
--setup-sdks- Modo de instalação do SDK: 'estável' (padrão), 'versão prévia', 'experimental' ou 'nenhum' (ignorar instalação do SDK) -
--ignore-config,--no-config- Não use o arquivo de configuração para o gerenciamento de versão -
--no-gitignore- Não atualize o arquivo .gitignore -
--use-defaults,--no-prompt– Não solicitar e usar o padrão de todos os prompts -
--config-only– Manipular somente as operações de arquivo de configuração, ignorar a instalação do pacote
O que faz:
- Cria
winapp.yamlo arquivo de configuração (somente quando os pacotes do SDK são gerenciados; ignorados com--setup-sdks none) - Baixa pacotes do Windows SDK e do SDK do Aplicativo Windows
- Gera cabeçalhos e binários do C++/WinRT
- Cria Package.appxmanifest
- Configura ferramentas de build e habilita o modo de desenvolvedor
- Atualiza .gitignore para excluir arquivos gerados
- Armazena arquivos compartilháveis no diretório de cache global
Detecção automática de projeto .NET:
Quando um arquivo .csproj é encontrado no diretório de destino, init usa um fluxo simplificado .NET específico:
- Valida e atualiza o
TargetFrameworkpara um TFM compatível com Windows (por exemplo,net10.0-windows10.0.26100.0) - Adiciona
Microsoft.WindowsAppSDKeMicrosoft.Windows.SDK.BuildToolscomo entradas do NuGetPackageReferencediretamente no.csproj - Gera
Package.appxmanifest, ativos e um certificado de desenvolvimento -
Não cria nem
winapp.yamlbaixa projeções do C++ (usedotnet restorepara pacotes NuGet)
Exemplos:
# Initialize current directory
winapp init
# Initialize with experimental packages
winapp init --setup-sdks experimental
# Initialize specific directory without prompts
winapp init ./my-project --use-defaults
# Initialize a .NET project (auto-detected from .csproj)
cd my-dotnet-app
winapp init
Dica: instalar SDKs após a instalação inicial
Se você executou init com --setup-sdks none (ou ignorou a instalação do SDK) e depois precisa dos SDKs:
# Re-run init to install SDKs - preserves existing files (manifest, etc.)
winapp init --use-defaults --setup-sdks stable
Use --setup-sdks preview ou --setup-sdks experimental para versões prévias/experimentais do SDK.
restauração
Restaurar pacotes e regenerar arquivos com base na configuração existente winapp.yaml .
winapp restore [options]
Opções:
-
--config-dir <path>- Diretório que contém winapp.yaml (padrão: diretório atual)
O que faz:
- Lê a configuração existente
winapp.yaml - Baixar/atualizar pacotes do SDK para versões especificadas
- Regenera cabeçalhos e binários do C++/WinRT
- Armazena arquivos compartilháveis no diretório de cache global
Observação
Para projetos .NET inicializados com winapp init, não há winapp.yaml. Use o dotnet restore em vez disso para restaurar pacotes NuGet.
Exemplos:
# Restore from winapp.yaml in current directory
winapp restore
atualização
Atualize os pacotes para suas versões mais recentes e atualize o arquivo de configuração.
winapp update [options]
Opções:
-
--setup-sdks <stable|preview|experimental|none>- Modo de instalação do SDK:stable(padrão),previewexperimentalounone(ignorar instalação do SDK)
O que faz:
- Lê a configuração existente
winapp.yamlno diretório atual - Atualiza todos os pacotes para suas versões mais recentes disponíveis
- Atualiza o
winapp.yamlarquivo com novos números de versão - Regenera cabeçalhos e binários do C++/WinRT
Exemplos:
# Update packages to latest versions
winapp update
# Update including experimental packages
winapp update --setup-sdks experimental
pacote
Crie pacotes MSIX com base em diretórios de aplicativos preparados. Requer que um arquivo de manifesto (Package.appxmanifest preferencial, appxmanifest.xml também com suporte) esteja presente no diretório de destino, no diretório atual ou passado com a opção --manifest . (executar init ou manifest generate criar um manifesto)
winapp pack <input-folder> [options]
Argumentos:
-
input-folder– Diretório que contém os arquivos do aplicativo para empacotar
Opções:
-
--output <filename>- Nome do arquivo MSIX de saída (padrão:<name>_<version>_<arch>.msix, voltar para<name>_<version>.msix,<name>_<arch>.msixou<name>.msixquando a versão/arco não pode ser determinada) -
--name <name>- Nome do pacote (padrão: do manifesto) -
--manifest <path>- Caminho para o arquivo de manifesto (Package.appxmanifestpreferencial,appxmanifest.xmltambém com suporte; padrão: detecção automática) -
--cert <path>- Caminho para assinar o certificado (habilita a assinatura automática) -
--cert-password <password>- Senha de certificado (padrão: "senha") -
--generate-cert– Gerar um novo certificado de desenvolvimento -
--install-cert– Instalar o certificado no computador -
--publisher <name>– nome Publisher para geração de certificado -
--self-contained– tempo de execução do pacote SDK do Aplicativo Windows -
--skip-pri- Ignorar a geração de arquivos PRI -
--executable <path>- Caminho para o executável em relação à pasta de entrada (também--exe). Usado para resolver$targetnametoken$espaços reservados no manifesto.
O que faz:
- Valida e processa arquivos Package.appxmanifest
- Resolve tokens
$placeholder$no manifesto (consulte espaços reservados de manifesto abaixo) - Garante dependências de estrutura adequadas
- Atualiza manifestos lado a lado com registros
- Descobre automaticamente componentes winRT de terceiros e registra suas classes ativas (consulte a descoberta de componentes do WinRT abaixo)
- Manipula a implantação autocontida do WinAppSDK
- Assinar pacote se o certificado for fornecido
Descoberta de componente do WinRT
Ao empacotar, winapp pack verifica automaticamente os winapp.yaml pacotes NuGet definidos nos componentes WinRT de terceiros ( *.csproj por exemplo, Win2D). Ele analisa .winmd arquivos para extrair nomes de classe ativantes e localiza suas DLLs de implementação. As entradas descobertas são registradas da seguinte maneira:
-
Dependentes da estrutura (padrão): classes ativantes são adicionadas como
<InProcessServer>entradas noPackage.appxmanifest -
Autocontido (
--self-contained): classes ativas são inseridas em manifestos SxS (lado a lado) dentro do executável
Resolução de espaço reservado durante o empacotamento:
Se o manifesto contiver $targetnametoken$ no Executable atributo:
- Se
--executablefor fornecido (caminho relativo à pasta de entrada), o espaço reservado será substituído pelo valor especificado - Caso contrário,
winapp packverifica a raiz da pasta de entrada em busca.exede arquivos – se exatamente um for encontrado, ele será usado automaticamente - Se zero ou vários
.exearquivos forem encontrados, um erro será mostrado solicitando que você especifique--executable
Exemplos:
# Package directory with auto-detected manifest
winapp pack ./dist
# Package with custom output name and certificate
winapp pack ./dist --output MyApp.msix --cert ./cert.pfx
# Package with generated and installed certificate and self-contained WinAppSDK runtime
winapp pack ./dist --generate-cert --install-cert --self-contained
# Package with explicit executable (resolves $targetnametoken$ in manifest)
winapp pack ./dist --executable MyApp.exe
create-debug-identity
Crie a identidade do aplicativo para depuração usando o empacotamento esparso. O exe permanece em seu local original – Windows associa a identidade a ela por meio de Add-AppxPackage -ExternalLocation.
Quando usar isso vs
winapp run: usecreate-debug-identityquando o exe estiver separado do código do aplicativo (por exemplo, aplicativos Electron emnode_modulesqueelectron.exeestá) ou ao testar especificamente o comportamento do pacote esparso. Para a maioria das estruturas em que o exe está em sua pasta de saída de build, usewinapp runem vez disso : ele registra um pacote de layout solto completo e inicia o aplicativo. Consulte o Guia de Depuração para obter uma comparação completa.
winapp create-debug-identity [entrypoint] [options]
Argumentos:
-
entrypoint- Caminho para executável (.exe) ou script que precisa de identidade
Opções:
-
--manifest <path>- Caminho para o arquivo de manifesto do aplicativo ouappxmanifest.xmlPackage.appxmanifest(padrão: detectarPackage.appxmanifestautomaticamente ouappxmanifest.xmlno diretório atual) -
--no-install- Não instale o pacote após a criação -
--keep-identity– Manter a identidade do manifesto as-is, sem acrescentar.debugao nome do pacote e à ID do aplicativo
O que faz:
- Modifica o manifesto de execução paralela do executável
- Registra o pacote esparso para identidade
- Habilita a depuração de APIs que exigem identidade
Exemplos:
# Add identity to executable using local manifest
winapp create-debug-identity ./bin/MyApp.exe
# Add identity with custom manifest location
winapp create-debug-identity ./dist/app.exe --manifest ./custom-manifest.xml
# Create identity for hosted app script
winapp create-debug-identity app.py
manifesto
Gere e gerencie arquivos Package.appxmanifest.
geração de manifesto
Gere Package.appxmanifest a partir de modelos.
winapp manifest generate [directory] [options]
Argumentos:
-
directory- Diretório no qual gerar manifesto (padrão: diretório atual)
Opções:
-
--package-name <name>- Nome do pacote (padrão: nome da pasta) -
--publisher-name <name>– CN de Publisher (padrão: CN=<usuário >) -
--version <version>– Versão (padrão: "1.0.0.0") -
--description <text>- Descrição (padrão: "Meu Aplicativo") -
--entrypoint <path>– Executável de ponto de entrada ou script -
--template <type>- Tipo de modelo:packaged(padrão) ousparse -
--logo-path <path>- Caminho para o arquivo de imagem do logotipo -
--if-exists <Error|Overwrite|Skip>– Comportamento quando o arquivo de manifesto já existe no caminho de destino (padrão:Error)
Modelos:
-
packaged- Manifesto do aplicativo empacotado padrão -
sparse- Manifesto do aplicativo usando o empacotamento de localização esparso/externo
Marcadores de posição de manifesto
Os manifests gerados no momento do empacotamento usam tokens $placeholder$ (delimitados por cifrão) que são resolvidos automaticamente:
| Placeholder | Resolvido para | Exemplo |
|---|---|---|
$targetnametoken$ |
Nome executável sem extensão |
Executable="$targetnametoken$.exe" → Executable="MyApp.exe" |
$targetentrypoint$ |
Windows.FullTrustApplication |
Sempre resolvido automaticamente |
Isso segue a mesma convenção usada por Visual Studio modelos de projeto, portanto, os manifestos são portáteis entre ferramentas.
Como os marcadores de posição são resolvidos:
-
winapp pack— Durante o empacotamento,$targetnametoken$é resolvido usando a opção--executableou detectando automaticamente o único.exena pasta de entrada. Se vários arquivos (ou zero).exeforem encontrados e--executablenão forem especificados, um erro será mostrado. -
winapp create-debug-identity— Quando um argumento de ponto de entrada é fornecido,$targetnametoken$é resolvido a partir dele. Sem um ponto de entrada, o espaço reservado executável já deve ser resolvido no manifesto. -
winapp manifest generate --executable— Quando--executablefor fornecido, os metadados de manifesto (versão, descrição) e ícones são extraídos do executável, mas o manifesto gerado ainda usa$targetnametoken$.exe; esse espaço reservado é resolvido posteriormente (por exemplowinapp pack, ouwinapp create-debug-identity).
PS: Keeping
$targetnametoken$in your check-in manifest avoids hard-coding executable names and works withwinapp packand Visual Studio builds.
Exemplos:
# Generate standard manifest interactively
winapp manifest generate
# Generate with all options specified
winapp manifest generate ./src --package-name MyApp --publisher-name "CN=My Company" --if-exists overwrite
suplemento de manifesto
Adicione um alias de execução (uap5:AppExecutionAlias) a um Package.appxmanifest. Isso permite iniciar o aplicativo empacotado na linha de comando digitando o nome do alias.
winapp manifest add-alias [options]
Opções:
-
--name <alias>- Nome do alias (por exemplomyapp.exe). Padrão: inferido doExecutableatributo no manifesto. -
--manifest <path>- Caminho para Package.appxmanifest (padrão: pesquisar o diretório atual) -
--app-id <id>– ID do aplicativo para adicionar o alias (padrão: primeiro elemento Application)
O que faz:
- Lê o manifesto e infere o alias do
Executableatributo (preservando espaços reservados como$targetnametoken$.exe) - Adiciona a declaração de
uap5namespace se ainda não estiver presente - Adiciona um
<Extensions>bloco com<uap5:AppExecutionAlias>o elemento Application de destino - Se o alias já existir, o relatará e sairá com êxito
Exemplos:
# Add alias inferred from Executable attribute (e.g. $targetnametoken$.exe)
winapp manifest add-alias
# Add alias with explicit name
winapp manifest add-alias --name myapp.exe
# Add alias to specific manifest
winapp manifest add-alias --manifest ./dist/Package.appxmanifest
manifest atualizar-recursos
Gere todos os ativos de imagem MSIX necessários de uma única imagem de origem.
winapp manifest update-assets <image-path> [options]
Argumentos:
-
image-path- Caminho para o arquivo de imagem de origem (PNG, JPG, SVG, ICO, GIF, BMP etc.)
Opções:
-
--manifest <path>- Caminho para o arquivo Package.appxmanifest (padrão: pesquisar o diretório atual) -
--light-image <path>- Caminho para uma imagem de origem separada para variantes de tema claro
Descrição:
Usa uma única imagem de origem e gera um conjunto abrangente de ativos de imagem MSIX com base nas referências de ativos do manifesto:
Para cada ativo referenciado no manifesto:
-
5 variantes de escala — base (sem sufixo),
.scale-125, ,.scale-150,.scale-200.scale-400
Para o ícone do aplicativo (Square44x44Logo /AppList, 44×44 base):
-
14 variantes de targetsize banhada —
.targetsize-{16,20,24,30,32,36,40,48,60,64,72,80,96,256} -
14 variantes de targetsize não modeladas —
.targetsize-{size}_altform-unplated
Additionally:
-
app.ico — arquivo de ICO de várias resoluções (16, 24, 32, 48, 256) para integração de shell. Se um arquivo existente
.icofor encontrado no diretório de ativos (por exemploAppIcon.ico, de um modelo de projeto), ele será substituído no local em vez de criar uma duplicata
Com --light-image:
-
Variantes de targetsize de tema claro —
.targetsize-{size}_altform-lightunplated(ícone do aplicativo) -
Variantes de escala de tema claro —
.scale-{factor}_altform-colorful_theme-light(blocos, logotipo da loja)
Suporte ao SVG: Os arquivos SVG têm suporte total como imagens de origem. Eles são renderizados como vetores diretamente em cada tamanho de destino, produzindo resultados perfeitos em todas as resoluções.
O comando dimensiona as imagens proporcionalmente, mantendo a taxa de proporção, centralizando-as com planos de fundo transparentes quando necessário. Os ativos são salvos no diretório Assets relativo ao local do manifesto.
Exemplos:
# Generate assets with auto-detected manifest
winapp manifest update-assets mylogo.png
# Use an SVG source for best quality at all sizes
winapp manifest update-assets mylogo.svg
# Specify manifest location explicitly
winapp manifest update-assets mylogo.png --manifest ./dist/Package.appxmanifest
# Generate light theme variants from a separate image
winapp manifest update-assets mylogo.png --light-image mylogo-light.png
# Use the same image for both (generates all MRT light theme qualifiers)
winapp manifest update-assets mylogo.png --light-image mylogo.png
# With verbose output
winapp manifest update-assets mylogo.png --verbose
execução
Crie um pacote de layout solto de uma pasta de saída de build, registre-o com Windows usando a API Windows.Management.Deployment.PackageManager e inicie o aplicativo, simulando uma instalação msix completa para depuração. Retorna a ID do processo para anexo do depurador.
Esta é o comando preferencial para depuração com identidade do pacote para a maioria das estruturas (.NET, C++, Rust, Flutter, Tauri). Ao contrário do
create-debug-identityque registra um pacote esparso para um único exe,winapp runregistra a pasta inteira como um pacote de layout flexível, assim como uma instalação MSIX real. Consulte o Guia de Depuração para fluxos de trabalho comuns de depuração.
winapp run <input-folder> [options]
Argumentos:
-
input-folder- Diretório que contém o aplicativo a ser executado (obrigatório)
Opções:
-
--manifest <path>- Caminho para Package.appxmanifest (padrão: detectar automaticamente da pasta de entrada ou do diretório atual) -
--output-appx-directory <path>- Diretório de saída para o pacote de layout solto (padrão:AppXdentro do diretório da pasta de entrada) -
--args <string>- Argumentos de linha de comando a serem passados para o aplicativo. Como alternativa, use--seguido de argumentos para evitar escape (por exemplo,winapp run . -- --flag value). -
--no-launch- Crie apenas a identidade de depuração e registre o pacote sem iniciar o aplicativo -
--with-alias– Inicie o aplicativo usando seu alias de execução em vez de ativação do AUMID. O aplicativo é executado no terminal atual com stdin/stdout/stderr herdado. Requer umuap5:ExecutionAliasno manifesto (usewinapp manifest add-aliaspara adicionar um). Não é possível combinar com--no-launch. Não é possível combinar com--json. -
--debug-output– CapturarOutputDebugStringmensagens e exceções de primeira chance do aplicativo iniciado. O ruído da estrutura (WinUI, COM, DirectX) é filtrado da saída do console; o arquivo de log completo captura tudo. Se o aplicativo falhar, capturará automaticamente um minidump e o analisará para mostrar o tipo de exceção, a mensagem e o rastreamento de pilha com números de arquivo de origem:linha (resolvidos de PDBs na pasta de saída de build). Falhas gerenciadas (.NET) são analisadas instantaneamente sem ferramentas externas. Falhas nativas (C++/WinRT) mostram os nomes e deslocamentos do módulo. Somente um depurador pode anexar a um processo de cada vez, portanto, outros depuradores (Visual Studio, VS Code) não podem ser usados simultaneamente. Em vez disso, use--no-launchse precisar anexar um depurador diferente. Não é possível combinar com--no-launch. Não é possível combinar com--json. -
--symbols– Baixe símbolos PDB do servidor de símbolos Microsoft para uma análise de falha nativa mais avançada com nomes de função resolvidos. Usado somente com--debug-output. Se ocorrer omitido e ocorrer uma falha nativa, a saída sugerirá a adição desse sinalizador. A primeira execução baixa símbolos e os armazena em cache localmente; as execuções subsequentes usam o cache. -
--unregister-on-exit- Cancele o registro do pacote de desenvolvimento após a saída do aplicativo. Remove apenas os pacotes registrados no modo de desenvolvimento. Não é possível combinar com--no-launch. -
--detach– Inicie o aplicativo e retorne imediatamente sem esperar que ele saia. Útil para CI/automação em que você precisa interagir com o aplicativo após a inicialização. Imprime o PID para stdout (ou em JSON com--json). Não é possível combinar com--no-launch,--debug-output,--with-aliasou--unregister-on-exit. -
--clean- Remova os dados do aplicativo do pacote existente (LocalState, configurações etc.) antes de implantar novamente. Por padrão, os dados do aplicativo são preservados em relançamentos. -
--json- Formatar a saída como JSON para consumo programático (por exemplo, CI/automação). Útil para--detachcapturar o PID. Não é possível combinar com--with-aliasou--debug-output.
Persistência de dados do aplicativo:
Por padrão, winapp run preserva os dados do aplicativo (LocalState, RoamingState, Settingsetc.) ao implantar novamente. Se o aplicativo gravar dados no ApplicationData.Current.LocalFolder contexto ou Environment.GetFolderPath(SpecialFolder.LocalApplicationData) dentro do pacote, esses dados sobreviverão entre winapp run invocações.
Use --clean quando precisar de um novo início (por exemplo, para redefinir o estado corrompido ou testar o comportamento de primeira execução).
O que faz:
- Localiza ou gera o Package.appxmanifest
- Cria e registra uma identidade de depuração usando um pacote de layout flexível
- Calcula a ID do modelo de usuário do aplicativo (AUMID)
- Inicia o aplicativo usando a identidade registrada (a menos que
--no-launchseja especificado) - ID do processo impresso (PID) para anexo do depurador
Exemplos:
# Register debug identity and launch app from build output
winapp run ./bin/Debug
# Launch with custom manifest and arguments
winapp run ./dist --manifest ./out/Package.appxmanifest --args "--my-flag value"
# Pass arguments after -- to avoid escaping (equivalent to --args)
winapp run ./bin/Debug -- --my-flag value
# Specify output directory for loose layout package
winapp run ./bin/Release --output-appx-directory ./AppXDebug
# Register identity without launching
winapp run ./bin/Debug --no-launch
# Launch via execution alias (console apps run in current terminal)
winapp run ./bin/Debug --with-alias
# Launch and capture OutputDebugString messages and crash diagnostics
winapp run ./bin/Debug --debug-output
# Download native symbols for richer crash analysis (C++/WinRT crashes)
winapp run ./bin/Debug --debug-output --symbols
# Combine with execution alias to debug console apps inline
winapp run ./bin/Debug --with-alias --debug-output
# Run and automatically clean up registration on exit
winapp run ./bin/Debug --with-alias --unregister-on-exit
# Launch and detach immediately (useful for CI/automation)
winapp run ./bin/Debug --detach
# Detach with JSON output (returns PID for scripting)
winapp run ./bin/Debug --detach --json
# Wipe application data (LocalState, settings) and start fresh
winapp run ./bin/Debug --clean
Propriedades do MSBuild (pacote NuGet):
Ao usar o pacote NuGet Microsoft.Windows.SDK.BuildTools.WinApp, dotnet run invoca automaticamente winapp run. As seguintes propriedades do MSBuild podem ser definidas em seu .csproj comportamento de controle:
| Propriedade | Padrão | Descrição |
|---|---|---|
EnableWinAppRunSupport |
true |
Habilitar/desabilitar a funcionalidade de suporte de execução |
WinAppLaunchArgs |
(vazio) | Argumentos a serem passados para o aplicativo na inicialização |
WinAppRunUseExecutionAlias |
false |
Iniciar por meio de alias de execução em vez de ativação do AUMID |
WinAppRunNoLaunch |
false |
Registrar apenas a identidade sem iniciar |
WinAppRunDebugOutput |
false |
Capturar OutputDebugString mensagens e exceções de primeira chance. Somente um depurador pode anexar por vez (impede VS/VS Code). Em vez disso, use WinAppRunNoLaunch para anexar um depurador diferente. |
<PropertyGroup>
<WinAppRunUseExecutionAlias>true</WinAppRunUseExecutionAlias>
<WinAppRunDebugOutput>true</WinAppRunDebugOutput>
</PropertyGroup>
Unregister
Cancele o registro de um pacote de desenvolvimento sideload. Remove apenas os pacotes que foram registrados no modo de desenvolvimento (por exemplo, via winapp run ou create-debug-identity). Os pacotes instalados na loja ou instalados pelo MSIX nunca são removidos.
winapp unregister [options]
Opções:
-
--manifest <path>- Caminho para Package.appxmanifest (padrão: detecção automática do diretório atual) -
--force- Ignorar a verificação do diretório de local de instalação e cancelar o registro, mesmo que o pacote tenha sido registrado de uma árvore de projeto diferente -
--json- Formatar saída como JSON
O que faz:
- Lê o nome do pacote do manifesto
- Pesquisa pacotes e pacotes
{name}(a variante de depuração é criada porcreate-debug-identity){name}.debug - Verifica se cada pacote foi registrado no modo de desenvolvimento (
IsDevelopmentMode == true) - Verifica se o local de instalação do pacote está na árvore de diretório atual (a menos
--forceque ) - Cancelar o registro de pacotes correspondentes
Exemplos:
# Unregister from current directory (auto-detects manifest)
winapp unregister
# Unregister with explicit manifest
winapp unregister --manifest ./Package.appxmanifest
# Force unregister even if registered from a different project tree
winapp unregister --force
# JSON output for scripting
winapp unregister --json
cert
Gere, inspecione e instale certificados de desenvolvimento.
Gerar certificado
Gerar certificados de desenvolvimento para assinatura de pacote.
winapp cert generate [options]
Opções:
-
--manifest <Package.appxmanifest>– Extrair informações do editor de Package.appxmanifest -
--publisher <name>– Publisher nome do certificado -
--output <path>- Caminho do arquivo de certificado de saída (dá suporte a caminhos absolutos e relativos) -
--password <password>- Senha de certificado (padrão: "senha") -
--valid-days <valid-days>- Número de dias em que o certificado é válido (padrão: 365) -
--install– Instalar o certificado no repositório de máquinas local após a geração -
--if-exists <Error|Overwrite|Skip>- Definir o comportamento se o arquivo de certificado já existir (padrão: Erro) -
--export-cer- Exportar um.cerarquivo (somente chave pública) ao lado do.pfx. Útil para distribuir o certificado público separadamente para a instalação de confiança. -
--json- Formatar a saída como JSON para consumo programático. Os erros também são retornados como JSON ({"error": "..."}).
Informações de certificado
Exibir detalhes do certificado de um arquivo PFX. Útil para verificar se um certificado corresponde ao manifesto antes de assinar.
winapp cert info <cert-path> [options]
Argumentos:
-
cert-path- Caminho para o arquivo de certificado (PFX)
Opções:
-
--password <password>- Senha para o arquivo PFX (padrão: "senha") -
--json- Formatar saída como JSON
Instalação do certificado
Instale o certificado no repositório de certificados do computador.
winapp cert install <cert-path> [options]
Argumentos:
-
cert-path- Caminho para o arquivo de certificado a ser instalado
Exemplos:
# Generate certificate for specific publisher
winapp cert generate --publisher "CN=My Company" --output ./mycert.pfx
# Generate certificate and export public key .cer file
winapp cert generate --publisher "CN=My Company" --export-cer
# Generate certificate with JSON output (for scripting)
winapp cert generate --publisher "CN=My Company" --json
# View certificate details
winapp cert info ./mycert.pfx
# View certificate details as JSON
winapp cert info ./mycert.pfx --json
# Install certificate to machine
winapp cert install ./mycert.pfx
assinar
Assinar pacotes MSIX e executáveis com certificados.
winapp sign <file-path> [options]
Argumentos:
-
file-path- Caminho para o pacote MSIX ou executável para assinar
Opções:
-
--cert <path>- Caminho para assinar o certificado -
--cert-password <password>- Senha de certificado (padrão: "senha")
Exemplos:
# Sign MSIX package
winapp sign MyApp.msix --cert ./mycert.pfx
# Sign executable
winapp sign ./bin/MyApp.exe --cert ./mycert.pfx --cert-password mypassword
create-external-catalog
Gere um CodeIntegrityExternal.cat arquivo de catálogo contendo hashes de arquivos executáveis de diretórios especificados. Esse catálogo é usado com o sinalizador TrustedLaunch em manifestos de pacote esparsos MSIX (AllowExternalContent) para permitir a execução de arquivos externos não incluídos no próprio pacote.
Isso é semelhante a como signtool.exe cria AppxMetadata\CodeIntegrity.cat ao assinar um pacote MSIX, mas gera um catálogo externo para uso com empacotamento de localização esparso/externo.
winapp create-external-catalog <input-folder> [options]
Argumentos:
-
input-folder- Um ou mais diretórios que contêm arquivos executáveis a serem processados. Separar vários diretórios com ponto-e-vírgula (por exemplo,"dir1;dir2")
Opções:
-
--recursive,-r– Incluir arquivos de subdiretórios -
--use-page-hashes- Incluir hashes de página ao gerar o catálogo (produz um catálogo maior com dados de hash por página) -
--compute-flat-hashes- Incluir hashes de arquivo simples ao gerar o catálogo -
--if-exists <Error|Overwrite|Skip>- Comportamento quando o arquivo de saída já existe (padrão:Error) -
--output,-o– Caminho do arquivo do catálogo de saída. Se não for especificado,CodeIntegrityExternal.catserá criado no diretório atual. Se um diretório for especificado, o nome de arquivo padrão será acrescentado.
O que faz:
- Verifica os diretórios especificados para arquivos executáveis (binários PE com seções de código)
- Gera um CDF (Arquivo de Definição de Catálogo) com hashes de todos os executáveis encontrados
- Usa APIs Windows CryptoCAT para produzir o arquivo de catálogo
.cat - Arquivos não executáveis (por exemplo,
.txt.dllsem seções de código) são ignorados automaticamente
Exemplos:
# Generate catalog for all executables in a directory
winapp create-external-catalog ./bin
# Include files in subdirectories
winapp create-external-catalog ./bin --recursive
# Specify a custom output path
winapp create-external-catalog ./bin --output ./dist/CodeIntegrityExternal.cat
# Overwrite existing catalog
winapp create-external-catalog ./bin --if-exists Overwrite
# Skip generation if catalog already exists
winapp create-external-catalog ./bin --if-exists Skip
# Include page hashes (for stricter code integrity validation)
winapp create-external-catalog ./bin --use-page-hashes
# Process multiple directories
winapp create-external-catalog "./bin;./lib" --recursive
# Combine multiple options
winapp create-external-catalog ./bin --recursive --use-page-hashes --compute-flat-hashes --output ./dist/CodeIntegrityExternal.cat --if-exists Overwrite
Quando usar:
Use este comando ao criar um pacote MSIX esparso que usa TrustedLaunch para verificar executáveis externos. O fluxo de trabalho típico é:
-
winapp manifest generate --template sparse— Criar um manifesto esparso comAllowExternalContent -
winapp create-external-catalog ./bin— Gerar o catálogo de integridade de código para os executáveis do aplicativo -
winapp pack— Empacotar o manifesto, os ativos e o catálogo em um MSIX
ferramenta
Acesso às ferramentas do SDK do Windows diretamente. Usa ferramentas disponíveis em Microsoft.Windows. SDK. BuildTools
winapp tool <tool-name> [tool-arguments]
Ferramentas disponíveis:
-
makeappx– Criar e manipular pacotes de aplicativos -
signtool– Assinar arquivos e verificar assinaturas -
mt- Ferramenta de manifesto para conjuntos lado a lado - E outras ferramentas do SDK Windows do Microsoft.Windows. SDK. BuildTools
Exemplos:
# Use signtool to verify signature
winapp tool signtool verify /pa MyApp.msix
armazenar
Execute um comando da CLI do Desenvolvedor da Microsoft Store. Esse comando baixará a CLI do desenvolvedor do Microsoft Store se ainda não tiver sido baixado. Saiba mais sobre a CLI Microsoft Store Developer.
winapp store [args...]
Argumentos:
-
args...– Argumentos a serem passados diretamente para amsstoreCLI. Consulte a documentação da CLI do MSStore para obter comandos e opções disponíveis.
O que faz:
- Garante que a CLI do Desenvolvedor do Microsoft Store (
msstore) esteja baixada e disponível em seu sistema. - Encaminha todos os argumentos para a
msstoreCLI. - Executa o comando mostrando a saída diretamente no terminal.
Exemplos:
# List all apps in your Microsoft Partner Center account
winapp store app list
# Publish a package to the Microsoft Store
winapp store publish ./myapp.msix --appId <your-app-id>
get-winapp-path
Obter caminhos para componentes do SDK do Windows instalados.
winapp get-winapp-path [options]
O que ele retorna:
- Caminhos para o
.winappdiretório do workspace - Diretórios de instalação do pacote
- Locais de cabeçalho gerados
node create-addon
(Disponível somente no pacote NPM) Gerar modelos de complemento C++ ou C# nativos com Windows SDK e integração SDK do Aplicativo Windows.
npx winapp node create-addon [options]
Opções:
-
--name <name>- Nome do complemento (padrão: "nativeWindowsAddon") -
--template- Selecione o tipo de complemento. As opções sãocsoucpp(padrão:cpp) -
--verbose- Habilitar saída detalhada
O que faz:
- Cria o diretório de complemento com arquivos de modelo
- Gera binding.gyp e addon.cc com exemplos de SDK Windows
- Instala as dependências npm necessárias (nan, node-addon-api, node-gyp)
- Adiciona o script de build ao arquivo package.json
Exemplos:
# Generate addon with default name
npx winapp node create-addon
# Generate custom named addon
npx winapp node create-addon --name myWindowsAddon
node add-electron-debug-identity
(Disponível somente no pacote NPM) Adicione a identidade do aplicativo ao processo de desenvolvimento do Electron usando o empacotamento esparso. Requer um Package.appxmanifest (crie um com winapp init ou winapp manifest generate se você não tiver um).
Importante
Há um problema conhecido com o empacotamento esparso de aplicativos Electron que faz com que o aplicativo falhe ao iniciar ou não renderize o conteúdo da Web. O problema foi corrigido em Windows mas ainda não foi propagado para dispositivos de Windows externos. Se você estiver vendo esse problema após a chamada add-electron-debug-identity, poderá desabilitar a área restrita em seu aplicativo Electron para fins de depuração com o --no-sandbox sinalizador. Esse problema não afeta o empacotamento MSIX completo.
Para desfazer a identidade de depuração do Electron, use winapp node clear-electron-debug-identity.
npx winapp node add-electron-debug-identity [options]
Opções:
| Opção | Descrição |
|---|---|
--manifest <path> |
Caminho para Package.appxmanifest personalizado (padrão: Package.appxmanifest no diretório atual) |
--no-install |
Não instale nem modifique as dependências; apenas configure a identidade de depuração do Electron |
--keep-identity |
Mantenha a identidade do manifesto as-is, sem acrescentar .debug ao nome do pacote e à ID do aplicativo |
--verbose |
Habilitar saída detalhada |
O que faz:
- Registra a identidade de depuração para electron.exe processo
- Habilita o teste de APIs que exigem identidade no desenvolvimento do Electron
- Usa Package.appxmanifest existente para configuração de identidade
Exemplos:
# Add identity to Electron development process
npx winapp node add-electron-debug-identity
# Use a custom manifest file
npx winapp node add-electron-debug-identity --manifest ./custom/Package.appxmanifest
node clear-electron-debug-identity
(Disponível somente no pacote NPM) Remova a identidade do pacote do processo de depuração do Electron restaurando o electron.exe original do backup.
npx winapp node clear-electron-debug-identity [options]
Opções:
| Opção | Descrição |
|---|---|
--verbose |
Habilitar saída detalhada |
O que faz:
- Restaura electron.exe do backup criado por
add-electron-debug-identity - Remove os arquivos de backup após a restauração
- Retorna o Electron ao estado original sem a identidade do pacote
Exemplos:
# Remove identity from Electron development process
npx winapp node clear-electron-debug-identity
Opções globais
Todos os comandos dão suporte a estas opções globais:
-
--verbose,-v– Habilitar a saída detalhada para registro em log detalhado -
--quiet,-q– Suprimir mensagens de progresso -
--help,-h– Mostrar ajuda de comando
Diretório de Cache Global
O Winapp cria um diretório para armazenar em cache arquivos que podem ser compartilhados entre vários projetos.
Por padrão, o winapp cria um diretório $UserProfile/.winapp como o diretório de cache global.
Para usar um local diferente, defina a variável de WINAPP_CLI_CACHE_DIRECTORY ambiente.
No cmd:
REM Set a custom location for winapp's global cache
set WINAPP_CLI_CACHE_DIRECTORY=d:\temp\.winapp
No PowerShell e pwsh:
# Set a custom location for winapp's global cache
$env:WINAPP_CLI_CACHE_DIRECTORY=d:\temp\.winapp
O Winapp criará esse diretório automaticamente quando você executar comandos como init ou restore.
ui
Inspecione e interaja com a execução Windows UIs do aplicativo usando Automação da Interface do Usuário (UIA).
winapp ui [command] [options]
Comandos:
-
status– Conectar-se ao aplicativo e mostrar informações -
inspect- Exibir árvore de elementos -
search- Localizar elementos por seletor -
get-property– Ler propriedades do elemento -
get-text/get-value- Ler valor/texto do elemento (TextPattern, ValuePattern ou Name) -
screenshot- Capturar janela/elemento como PNG (captura automaticamente caixas de diálogo separadamente) -
invoke- Ativar elemento (clique, alterne, expanda) -
click- Clique no elemento por meio da simulação do mouse (para controles que não dão suporte à invocação) -
set-value- Definir valor no elemento editável (texto, número) -
focus– Mover o foco do teclado -
scroll-into-view- Elemento scroll visível -
wait-for- Aguarde o estado do elemento -
list-windows- Listar todas as janelas de um aplicativo -
get-focused- Relatar o elemento focado no momento
Opções:
-
-a, --app <app>- Aplicativo de destino (nome, título ou PID) -
-w, --window <hwnd>- Janela de destino por HWND (estável)
Para obter a documentação completa, consulte docs/ui-automation.md.
Windows developer