Compartilhar via


Usando a CLI do winapp com o Rust

Este guia demonstra como usar a interface de linha de comando (CLI) do winapp com um aplicativo Rust para depurar utilizando a identidade do pacote e empacotar seu aplicativo como um MSIX.

A identidade do pacote é um conceito básico no modelo de Windows app. Ele permite que seu aplicativo acesse APIs específicas do Windows (como Notificações, Segurança, APIs de IA etc.), e tenha uma experiência de instalação/desinstalação limpa, entre outras funcionalidades.

Pré-requisitos

  1. Rust Toolchain: instalar o Rust usando rustup ou winget:

    winget install Rustlang.Rustup --source winget
    
  2. CLI do winapp: instale a winapp ferramenta por meio do winget:

    winget install microsoft.winappcli --source winget
    

1. Criar um novo aplicativo Rust

cargo new rust-app
cd rust-app

Execute-o para verificar se tudo está funcionando:

cargo run

2. Atualizar código para verificar a identidade

Adicione a windows dependência ao seu Cargo.toml:

cargo add windows --features ApplicationModel

Substitua o conteúdo de src/main.rs:

use windows::ApplicationModel::Package;

fn main() {
    match Package::Current() {
        Ok(package) => {
            match package.Id() {
                Ok(id) => match id.FamilyName() {
                    Ok(name) => println!("Package Family Name: {}", name),
                    Err(e) => println!("Error getting family name: {}", e),
                },
                Err(e) => println!("Error getting package ID: {}", e),
            }
        }
        Err(_) => println!("Not packaged"),
    }
}

3. Executar sem identificação

cargo run

Você deve ver "Não empacotado".

4. Inicie o projeto com a CLI do winapp

winapp init

Quando solicitado:

  • Nome do pacote: Pressione Enter para aceitar o padrão (rust-app)
  • Nome do publicador: pressione Enter para aceitar o valor padrão ou insira seu nome
  • Versão: Pressione Enter para aceitar 1.0.0.0
  • Ponto de entrada: pressione Enter para aceitar o padrão (rust-app.exe)
  • Configurar SDKs: selecione "Não configurar SDKs"

Isso cria as pastas appxmanifest.xml e Assets para a identidade do aplicativo.

5. Depurar com identidade

  1. Crie o executável:

    cargo build
    
  2. Aplicar identidade de depuração:

    winapp create-debug-identity .\target\debug\rust-app.exe
    
  3. Execute o arquivo executável (não use cargo run pois ele pode recompilar):

    .\target\debug\rust-app.exe
    

Você deve ver:

Package Family Name: rust-app_12345abcde

6. Empacotar com MSIX

  1. Compilar para lançamento:

    cargo build --release
    
  2. Preparar o diretório do pacote:

    mkdir dist
    copy .\target\release\rust-app.exe .\dist\
    
  3. Gerar um certificado de desenvolvimento:

    winapp cert generate --if-exists skip
    
  4. Empacotar e assinar:

    winapp pack .\dist --cert .\devcert.pfx
    
  5. Instalar o certificado (executar como administrador):

    winapp cert install .\devcert.pfx
    
  6. Instalar e executar:

    Add-AppxPackage .\rust-app.msix
    rust-app
    

Dica

  • Assine seu MSIX com um certificado de assinatura de código de uma Autoridade de Certificação para distribuição em produção.
  • A Microsoft Store assina o MSIX para você, não é necessário assinar antes do envio.
  • Talvez você precise de pacotes MSIX separados para cada arquitetura compatível (x64, Arm64).