Partager via


Utilisation de winapp CLI avec Rust

Ce guide montre comment utiliser l’interface CLI winapp avec une application Rust pour déboguer avec l’identité de package et empaqueter votre application en tant que MSIX.

L’identité de package est un concept de base dans le modèle Windows app. Il permet à votre application d'accéder à des API Windows spécifiques (telles que les notifications, les API de sécurité, les API IA, etc.), d'avoir une expérience d'installation/désinstallation optimisée, et bien plus encore.

Prerequisites

  1. Chaîne d’outils Rust : Installer Rust à l’aide de rustup ou winget :

    winget install Rustlang.Rustup --source winget
    
  2. CLI winapp : Installez l’outil winapp via winget :

    winget install microsoft.winappcli --source winget
    

1. Créer une application Rust

cargo new rust-app
cd rust-app

Exécutez-le pour vous assurer que tout fonctionne :

cargo run

2. Mettre à jour le code pour vérifier l’identité

Ajoutez la windows dépendance à votre Cargo.toml:

cargo add windows --features ApplicationModel

Remplacez le contenu 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. Exécuter sans identité

cargo run

Vous devez voir « Non empaqueté ».

4. Initialisez le projet avec l'outil CLI winapp

winapp init

Lorsque vous y êtes invité :

  • Nom du package : appuyez sur Entrée pour accepter la valeur par défaut (rust-app)
  • Publisher nom : appuyez sur Entrée pour accepter la valeur par défaut ou entrer votre nom
  • Version : appuyez sur Entrée pour accepter la version 1.0.0.0
  • Point d’entrée : appuyez sur Entrée pour accepter la valeur par défaut (rust-app.exe)
  • Kits de développement logiciel (SDK) d’installation : Sélectionnez « Ne pas configurer les kits SDK »

Cela crée les dossiers appxmanifest.xml et Assets pour votre identité d’application.

5. Déboguer avec l’identité

  1. Générez l’exécutable :

    cargo build
    
  2. Appliquer l’identité de débogage :

    winapp create-debug-identity .\target\debug\rust-app.exe
    
  3. Exécutez l'exécutable (n'utilisez pas cargo run car il pourrait être reconstruit)

    .\target\debug\rust-app.exe
    

Vous devriez voir :

Package Family Name: rust-app_12345abcde

6. Package avec MSIX

  1. Build pour la mise en production :

    cargo build --release
    
  2. Préparer le répertoire du package :

    mkdir dist
    copy .\target\release\rust-app.exe .\dist\
    
  3. Générez un certificat de développement :

    winapp cert generate --if-exists skip
    
  4. Empaqueter et signer :

    winapp pack .\dist --cert .\devcert.pfx
    
  5. Installez le certificat (exécuté en tant qu’administrateur) :

    winapp cert install .\devcert.pfx
    
  6. Installez et exécutez :

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

Conseil / Astuce

  • Signez votre MSIX avec un certificat de signature de code auprès d’une autorité de certification pour la distribution de production.
  • Le Microsoft Store signe MSIX pour vous, il n’est pas nécessaire de vous connecter avant la soumission.
  • Vous pouvez avoir besoin de packages MSIX distincts pour chaque architecture prise en charge (x64, Arm64).