Condividi tramite


Uso dell'interfaccia della riga di comando di Winapp con Rust

Questa guida illustra come usare l'interfaccia della riga di comando di winapp con un'applicazione Rust per eseguire il debug con l'identità del pacchetto e creare un pacchetto dell'applicazione come MSIX.

L'identità del pacchetto è un concetto di base nel modello di Windows app. Consente all'applicazione di access API Windows specifiche (ad esempio Notifiche, Sicurezza, API di intelligenza artificiale e così via), avere un'esperienza di installazione/disinstallazione pulita e altro ancora.

Prerequisiti

  1. Toolchain Rust: Installare Rust usando rustup o winget:

    winget install Rustlang.Rustup --source winget
    
  2. CLI di winapp: installa lo winapp strumento tramite winget:

    winget install microsoft.winappcli --source winget
    

1. Creare una nuova app Rust

cargo new rust-app
cd rust-app

Eseguirlo per verificare che tutto funzioni:

cargo run

2. Aggiornare il codice per verificare l'identità

Aggiungi la windows dipendenza a Cargo.toml:

cargo add windows --features ApplicationModel

Sostituire il contenuto di 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. Eseguire senza identità

cargo run

Verrà visualizzato il messaggio "Non incluso nel pacchetto".

4. Inizializzare il progetto con la CLI di winapp

winapp init

Quando richiesto:

  • Nome pacchetto: premere INVIO per accettare il valore predefinito (rust-app)
  • Publisher nome: premere INVIO per accettare il valore predefinito o immettere il nome
  • Versione: premere INVIO per accettare 1.0.0.0
  • Punto di ingresso: premere INVIO per accettare il valore predefinito (rust-app.exe)
  • SDK di installazione: selezionare "Non configurare GLI SDK"

Verranno create le cartelle appxmanifest.xml e Assets per l'identità dell'app.

5. Eseguire il debug con l'identità

  1. Compilare il file eseguibile:

    cargo build
    
  2. Applicare l'identità di debug:

    winapp create-debug-identity .\target\debug\rust-app.exe
    
  3. Eseguire l'eseguibile (non usare cargo run poiché potrebbe ricompilare):

    .\target\debug\rust-app.exe
    

Dovresti vedere:

Package Family Name: rust-app_12345abcde

6. Pacchetto con MSIX

  1. Compilazione per il rilascio:

    cargo build --release
    
  2. Preparare la directory del pacchetto:

    mkdir dist
    copy .\target\release\rust-app.exe .\dist\
    
  3. Generare un certificato di sviluppo:

    winapp cert generate --if-exists skip
    
  4. Pacchetto e firma:

    winapp pack .\dist --cert .\devcert.pfx
    
  5. Installare il certificato (esegui come amministratore):

    winapp cert install .\devcert.pfx
    
  6. Installare ed eseguire:

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

Suggerimento

  • Firmare il MSIX con un certificato di firma del codice da una autorità di certificazione per la distribuzione in ambiente di produzione.
  • Microsoft Store firma MSIX per te, non è necessario firmare prima dell'invio.
  • Potrebbero essere necessari pacchetti MSIX separati per ogni architettura supportata (x64, Arm64).