Kommentar
Åtkomst till den här sidan kräver auktorisering. Du kan prova att logga in eller ändra kataloger.
Åtkomst till den här sidan kräver auktorisering. Du kan prova att ändra kataloger.
Den här guiden visar hur du använder winapp CLI med ett Tauri-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 komma åt specifika Windows API:er (t.ex. meddelanden, säkerhet, AI-API:er osv.), har en ren installations-/avinstallationsupplevelse med mera.
Ett fullständigt arbetsexempel finns i Tauri-exemplet på den här lagringsplatsen.
Förutsättningar
- Windows 11
-
Node.js -
winget install OpenJS.NodeJS --source winget -
Rust Toolchain – Installera Rust med rustup eller
winget install Rustlang.Rustup --source winget -
winapp CLI -
winget install microsoft.winappcli --source winget
Tips/Råd
Om du redan har installerat dessa kör du kommandona winget install ändå för att söka efter uppdateringar.
1. Skapa en ny Tauri-app
Börja med att skapa en ny Tauri-applikation med hjälp av det officiella genereringsverktyget.
npm create tauri-app@latest
Följ anvisningarna:
-
Project namn:
tauri-app(eller önskat namn) -
Klientdelsspråk:
JavaScript -
Pakethanterare:
npm -
Mall för användargränssnitt:
Vanilla -
Gränssnittstema:
JavaScript
Gå till din project-katalog och installera beroenden:
cd tauri-app
npm install
Kör appen för att kontrollera att allt fungerar:
npm run tauri dev
2. Uppdatera koden för att kontrollera identiteten
Vi uppdaterar appen för att kontrollera om den körs med paketidentitet. Vi använder windows-lådan i Rust-serverdelen för att komma åt Windows API:er och exponera den för klientdelen.
Backend-förändringar (Rust)
Lägg till beroende: Öppna
src-tauri/Cargo.tomloch lägg till följande rader i slutet av filen. Detta lägger till Windows API-bindningar så att vi kan söka efter paketidentitet:[target.'cfg(windows)'.dependencies] windows = { version = "0.58", features = ["ApplicationModel"] }Lägg till kommando: Öppna
src-tauri/src/lib.rsoch lägg tillget_package_family_namefunktionen. Placera den förepub fn run()funktionen:#[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() } }Registrera kommando: I samma fil (
src-tauri/src/lib.rs) uppdaterar durunfunktionen för att registrera det nya kommandot:pub fn run() { tauri::Builder::default() .plugin(tauri_plugin_opener::init()) .invoke_handler(tauri::generate_handler![greet, get_package_family_name]) // Add get_package_family_name here .run(tauri::generate_context!()) .expect("error while running tauri application"); }
Klientdelsändringar (JavaScript)
Uppdatera HTML: Öppna
src/index.htmloch lägg till ett stycke för att visa resultatet:<!-- ... inside <main> ... --> <p id="pfn-msg"></p>Uppdateringslogik: Öppna
src/main.jsför att anropa kommandot och visa resultatet:const { invoke } = window.__TAURI__.core; // ... existing code ... 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", () => { // ... existing code ... checkPackageIdentity(); });Kör appen som vanligt:
npm run tauri devDu bör se "Körs inte med paketidentitet" i appfönstret. Detta bekräftar att standardutvecklingsversionen körs utan paketidentitet.
3. Initiera Project med winapp CLI
Kommandot winapp init konfigurerar allt du behöver i ett svep: appmanifest och resurser. Manifestet definierar appens identitet (namn, utgivare, version) som Windows använder för att bevilja API-åtkomst.
Kör följande kommando och följ anvisningarna:
winapp init
När du uppmanas att göra det:
- Paketnamn: Tryck på Retur för att acceptera standardvärdet (tauri-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å Retur för att acceptera standardvärdet (tauri-app.exe)
-
Installations-SDK:er: Välj "Konfigurera inte SDK:er" (Tauri använder Rusts
windowslåda, inte C++ SDK-huvudena)
Det här kommandot kommer att:
- Skapa
Package.appxmanifest– manifestet som definierar appens identitet - Skapa
Assetsmapp – ikoner som krävs för MSIX-paketering och Lagringsöverföring
Note
Eftersom inga SDK-paket hanteras skapas inget winapp.yaml – Tauri använder Rusts windows paket via Cargo, så det finns ingenting att spåra för winapp restore/update.
Du kan öppna Package.appxmanifest för att ytterligare anpassa egenskaper som visningsnamn, utgivare och funktioner.
4. Felsöka med identitet
För att felsöka med identitet måste vi bygga Rust-backend och köra den med winapp run. Eftersom npm run tauri dev hanterar processlivscykeln är det svårare att mata in identiteten där. I stället skapar vi ett anpassat skript. Inget certifikat eller signering krävs för felsökning.
Lägg till skript: Öppna
package.jsonoch lägg till ett nytt skripttauri:dev:withidentity:"scripts": { "tauri": "tauri", "tauri:dev:withidentity": "cargo build --manifest-path src-tauri/Cargo.toml && (if not exist dist mkdir dist) && copy /Y src-tauri\\target\\debug\\tauri-app.exe dist\\ >nul && winapp run .\\dist" }Det här skriptet gör:
-
cargo build ...: Omkompileras Rust-serverdelen. -
copy ... dist\\: Förbereder bara exe till endist-mapp (target\debug-mappen är mycket stor och innehåller artefakter från mellanliggande byggfaser som inte ingår i din app). -
winapp run .\\dist: Registrerar ett löst layoutpaket (precis som en riktig MSIX-installation) och startar appen.
-
Kör skriptet:
npm run tauri:dev:withidentity
Tips/Råd
Du kan se ett terminal-/konsolfönster som visas bakom appfönstret – det här är normalt för Felsökningsversioner av Tauri (det är Rust-processens konsol).
Nu bör appen vara öppen och visa ett paketfamiljenamn som bekräftar att den körs med programidentitet! Nu kan du börja använda och felsöka API:er som kräver paketidentitet, till exempel Meddelanden eller nya AI-API:er som Phi Silica.
Tips/Råd
winapp run registrerar även paketet i systemet. Därför kan MSIX visas som "redan installerat" när du försöker installera det senare i steg 5. Använd winapp unregister för att rensa utvecklingspaket när du är färdig.
Tips/Råd
Avancerade felsökningsarbetsflöden (koppla felsökningsprogram, IDE-konfiguration, startfelsökning) finns i felsökningsguiden.
5. Paket med MSIX
När du är redo att distribuera din app kan du paketera den som en MSIX som tillhandahåller paketidentiteten till ditt program.
Lägg först till ett pack:msix skript i package.json:
"scripts": {
"tauri": "tauri",
"tauri:dev:withidentity": "...",
"pack:msix": "npm run tauri -- build && (if not exist dist mkdir dist) && copy /Y src-tauri\\target\\release\\tauri-app.exe dist\\ >nul && winapp pack .\\dist --cert .\\devcert.pfx"
}
Det här skriptet gör:
-
npm run tauri -- build: Bygger Rust-backenden i releaseläge. -
copy ... dist\\: Förbereder bara exe till endist-mapp (target\release-mappen är mycket stor och innehåller artefakter från mellanliggande byggfaser som inte ingår i din app). -
winapp pack .\\dist --cert .\\devcert.pfx: Paketerar och signerar appen som MSIX.
Generera ett utvecklingscertifikat
MSIX-paket måste signeras. För lokal testning genererar du ett självsignerat utvecklingscertifikat:
winapp cert generate --if-exists skip
Tips/Råd
Certifikatets utfärdare ska matcha Publisher i din Package.appxmanifest. Kommandot cert generate läser detta automatiskt från manifestet.
Bygg, Staging och Packning
npm run pack:msix
Tips/Råd
Kommandot pack använder automatiskt Package.appxmanifest från din aktuella katalog och kopierar den till målmappen före paketering. Den genererade .msix-filen finns i den aktuella katalogen.
Installera certifikatet
Innan du kan installera MSIX-paketet måste du lita på utvecklingscertifikatet på datorn. Kör det här kommandot som administratör (du behöver bara göra det en gång per certifikat):
winapp cert install .\devcert.pfx
Installera och kör
Tips/Råd
Om du använde winapp run i steg 4 kanske paketet redan är registrerat i systemet. Använd winapp unregister först för att ta bort utvecklingsregistreringen och installera sedan versionspaketet.
Installera paketet genom att dubbelklicka på den genererade .msix filen eller använda PowerShell:
Add-AppxPackage .\tauri-app.msix
Tips/Råd
MSIX-filnamnet innehåller versionen och arkitekturen (t.ex. tauri-app_1.0.0.0_x64.msix). Kontrollera katalogen för det exakta filnamnet. Om du behöver packa om efter kodändringar ökar du Version i din Package.appxmanifest – Windows kräver ett högre versionsnummer för att uppdatera ett installerat paket.
När du har installerat den kan du starta appen från Start-menyn. Du bör se att appen körs med identitet.
Tips
- När du är redo för distribution kan du signera MSIX med ett kodsigneringscertifikat från en certifikatutfärdare så att användarna inte behöver installera ett självsignerat certifikat.
- Microsoft Store signerar MSIX åt dig, du behöver inte signera innan det skickas in.
- Du kan behöva skapa flera MSIX-paket, ett för varje arkitektur som du stöder (x64, Arm64).
Nästa steg
- Distribute via winget: Skicka din MSIX till Windows Správca balíkov Community Repository
-
Publicera till Microsoft Store: Skicka paketet med
winapp store -
Set up CI/CD: Använd
setup-WinAppCliGitHub Action för att automatisera paketeringen i din pipeline - Explore Windows API:er: Med paketidentitet kan du nu använda notiser, AI på enheten och andra identitetsberoende API:er
Windows developer