Använda winapp CLI med Rust

Den här guiden visar hur du använder winapp CLI med ett Rust-program för att felsöka med paketidentitet och paketera ditt program som en MSIX.

Paketidentitet är ett grundläggande begrepp i Windows app modellen. Det gör att ditt program kan access specifika Windows-API:er (t.ex. meddelanden, säkerhet, AI-API:er osv.), har en ren installation/avinstallation med mera.

Förutsättningar

  1. Rust Toolchain: Installera Rust med rustup eller winget:

    winget install Rustlang.Rustup --source winget
    
  2. winapp CLI: Installera winapp verktyget via winget:

    winget install microsoft.winappcli --source winget
    

1. Skapa en ny Rust-app

cargo new rust-app
cd rust-app

Kör den för att kontrollera att allt fungerar:

cargo run

2. Uppdatera koden för att kontrollera identiteten

Lägg till windows-beroendet i din Cargo.toml.

cargo add windows --features ApplicationModel

Ersätt innehållet i 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. Kör utan identitet

cargo run

Du bör se "Inte paketerad".

4. Initiera project med winapp CLI

winapp init

När du uppmanas att göra det:

  • Paketnamn: Tryck på Retur för att acceptera standardvärdet (rust-app)
  • Utgivarens namn: Tryck på Enter för att acceptera standardvärdet eller ange ditt namn
  • Version: Tryck på Retur för att acceptera 1.0.0.0
  • Startpunkt: Tryck på Enter för att acceptera standardvärdet (rust-app.exe)
  • Installations-SDK:er: Välj "Konfigurera inte SDK:er"

Detta skapar appxmanifest.xml och Assets mappar för din appidentitet.

5. Felsöka med identitet

  1. Skapa den körbara filen:

    cargo build
    
  2. Använd felsökningsidentitet:

    winapp create-debug-identity .\target\debug\rust-app.exe
    
  3. Kör den körbara filen (använd inte cargo run eftersom det kan återskapas):

    .\target\debug\rust-app.exe
    

Du bör se:

Package Family Name: rust-app_12345abcde

6. Paket med MSIX

  1. Skapa för lansering:

    cargo build --release
    
  2. Förberedelse av en paketkatalog:

    mkdir dist
    copy .\target\release\rust-app.exe .\dist\
    
  3. Generera ett utvecklingscertifikat:

    winapp cert generate --if-exists skip
    
  4. Paketera och signera:

    winapp pack .\dist --cert .\devcert.pfx
    
  5. Installera certifikatet (kör som administratör):

    winapp cert install .\devcert.pfx
    
  6. Installera och kör:

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

Tips/Råd

  • Signera din MSIX med ett kodsigneringscertifikat från en certifikatutfärdare för produktionsdistribution.
  • Microsoft Store signerar MSIX åt dig, du behöver inte signera innan det skickas in.
  • Du kan behöva separata MSIX-paket för varje arkitektur som du stöder (x64, Arm64).