Winapp CLI gebruiken met Tauri

In deze handleiding ziet u hoe u de winapp CLI gebruikt met een Tauri-toepassing om fouten op te sporen met pakketidentiteit en uw toepassing als een MSIX-pakket te verpakken.

Pakketidentiteit is een kernconcept in het Windows app model. Hiermee kan uw toepassing specifieke Windows-API's (zoals meldingen, beveiliging, AI-API's, enzovoort) access, een schone installatie-/verwijderingservaring hebben, en meer.

Vereiste voorwaarden

  1. Windows 11
  2. Node.js - winget install OpenJS.NodeJS --source winget
  3. winapp CLI - winget install microsoft.winappcli --source winget

1. Een nieuwe Tauri-app maken

npm create tauri-app@latest

Volg de aanwijzingen (Project naam: tauri-app, front-endtaal: JavaScript, Package manager: npm).

Navigeer naar uw project map en installeer afhankelijkheden:

cd tauri-app
npm install

Voer de app uit:

npm run tauri dev

2. Werk code bij om de identiteit te controleren

Backend-wijzigingen (Rust)

Voeg de windows afhankelijkheid toe. Open src-tauri/Cargo.toml:

[target.'cfg(windows)'.dependencies]
windows = { version = "0.58", features = ["ApplicationModel"] }

Open src-tauri/src/lib.rs en voeg de opdracht toe:

#[tauri::command]
fn get_package_family_name() -> String {
    #[cfg(target_os = "windows")]
    {
        use windows::ApplicationModel::Package;
        match Package::Current() {
            Ok(package) => {
                match package.Id() {
                    Ok(id) => match id.FamilyName() {
                        Ok(name) => name.to_string(),
                        Err(_) => "Error retrieving Family Name".to_string(),
                    },
                    Err(_) => "Error retrieving Package ID".to_string(),
                }
            }
            Err(_) => "No package identity".to_string(),
        }
    }
    #[cfg(not(target_os = "windows"))]
    {
        "Not running on Windows".to_string()
    }
}

Registreer de opdracht in de run functie:

pub fn run() {
    tauri::Builder::default()
        .plugin(tauri_plugin_opener::init())
        .invoke_handler(tauri::generate_handler![greet, get_package_family_name])
        .run(tauri::generate_context!())
        .expect("error while running tauri application");
}

Front-endwijzigingen (JavaScript)

Voeg src/index.htmleen alinea toe om het resultaat weer te geven:

<p id="pfn-msg"></p>

Roep de opdracht aan in src/main.js.

const { invoke } = window.__TAURI__.core;

async function checkPackageIdentity() {
  const pfn = await invoke("get_package_family_name");
  const pfnMsgEl = document.querySelector("#pfn-msg");

  if (pfn !== "No package identity" && !pfn.startsWith("Error")) {
    pfnMsgEl.textContent = `Package family name: ${pfn}`;
  } else {
    pfnMsgEl.textContent = `Not running with package identity`;
  }
}

window.addEventListener("DOMContentLoaded", () => {
  checkPackageIdentity();
});

Voer de app uit om te bevestigen dat het de melding 'Niet uitgevoerd met pakketidentiteit' weergeeft:

npm run tauri dev

3. Initialiseer project met winapp CLI

winapp init

Wanneer u hierom wordt gevraagd:

  • Pakketnaam: druk op Enter om de standaardwaarde te accepteren (tauri-app)
  • Publisher naam: Druk op Enter om de standaardinstelling te accepteren of voer uw naam in
  • Versie: Druk op Enter om 1.0.0.0 te accepteren
  • Toegangspunt: Druk op Enter om de standaardwaarde (tauri-app.exe) te accepteren
  • Sdk's instellen: Selecteer 'SDK's niet instellen'

4. Debuggen met identiteit

Voeg een script toe aan package.json:

"scripts": {
    "tauri:dev:withidentity": "cargo build --manifest-path src-tauri/Cargo.toml && winapp create-debug-identity src-tauri/target/debug/tauri-app.exe && .\\src-tauri\\target\\debug\\tauri-app.exe"
}

Voer het uit:

npm run tauri:dev:withidentity

U zou de Package Family Name in de app moeten zien verschijnen.

5. Pakket met MSIX

  1. Build voor release:

    npm run tauri build
    
  2. Pakketmap voorbereiden:

    mkdir dist
    copy .\src-tauri\target\release\tauri-app.exe .\dist\
    
  3. Een ontwikkelingscertificaat genereren:

    winapp cert generate --if-exists skip
    
  4. Pakket en teken:

    winapp pack .\dist --cert .\devcert.pfx
    
  5. Installeer het certificaat (als beheerder uitvoeren):

    winapp cert install .\devcert.pfx
    
  6. Installeer door te dubbelklikken op het gegenereerde .msix bestand. Start vanuit het startmenu.