Nota
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare ad accedere o modificare le directory.
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare a modificare le directory.
Questa guida illustra come usare la CLI winapp con un'applicazione Tauri per eseguire il debug con l'identità del pacchetto e confezionare l'applicazione come MSIX.
L'identità del pacchetto è un concetto di base nel modello di Windows app. Consente all'applicazione di accedere a API di Windows specifiche (ad esempio Notifiche, Sicurezza, API di intelligenza artificiale e così via), avere un'esperienza di installazione/disinstallazione pulita e altro ancora.
Per un esempio funzionante completo, vedere l'esempio Tauri in questo repository.
Prerequisiti
- Windows 11
-
Node.js -
winget install OpenJS.NodeJS --source winget -
Toolchain Rust - Installare Rust usando rustup o
winget install Rustlang.Rustup --source winget -
Interfaccia della riga di comando di winapp -
winget install microsoft.winappcli --source winget
Tip
Se questi sono già installati, eseguire comunque i comandi per verificare la winget install disponibilità di aggiornamenti.
1. Creare una nuova app Tauri
Inizia creando una nuova applicazione Tauri utilizzando lo strumento di scaffolding ufficiale:
npm create tauri-app@latest
Seguire le istruzioni:
-
Project name:
tauri-app(o il nome preferito) -
Linguaggio front-end:
JavaScript -
Gestione pacchetti:
npm -
Modello di interfaccia utente:
Vanilla -
Sapore dell'interfaccia utente:
JavaScript
Naviga nella directory del tuo progetto e installa le tue dipendenze.
cd tauri-app
npm install
Eseguire l'app per assicurarsi che tutto funzioni:
npm run tauri dev
2. Aggiornare il codice per controllare l'identità
Aggiorneremo l'app per verificare se è in esecuzione con l'identità del pacchetto. Si userà la "crate" nel backend di Rust per accedere alle API di Windows ed esporlo al frontend.
Modifiche Backend (Rust)
Aggiungi dipendenza: aprire
src-tauri/Cargo.tomle aggiungere le righe seguenti alla fine del file. In questo modo vengono aggiunte le associazioni API Windows in modo da poter verificare l'identità del pacchetto:[target.'cfg(windows)'.dependencies] windows = { version = "0.58", features = ["ApplicationModel"] }Aggiungi comando: aprire
src-tauri/src/lib.rse aggiungere laget_package_family_namefunzione . Posizionarlo prima dellapub fn run()funzione:#[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() } }Comando Register: nello stesso file (
src-tauri/src/lib.rs), aggiornare larunfunzione per registrare il nuovo comando: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"); }
Modifiche front-end (JavaScript)
Aggiornare HTML: aprire
src/index.htmle aggiungere un paragrafo per visualizzare il risultato:<!-- ... inside <main> ... --> <p id="pfn-msg"></p>Aggiorna logica: aprire
src/main.jsper richiamare il comando e visualizzare il risultato: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(); });Eseguire ora l'app come di consueto:
npm run tauri devNella finestra dell'app verrà visualizzato "Not running with package identity" (Non in esecuzione con l'identità del pacchetto). Ciò conferma che la compilazione di sviluppo standard è in esecuzione senza identità del pacchetto.
3. Inizializzare Project con la CLI di winapp
Il winapp init comando configura tutti gli elementi necessari in un'unica operazione: manifesto dell'app e asset. Il manifesto definisce l'identità dell'app (nome, editore, versione) che Windows usa per concedere l'accesso all'API.
Eseguire il comando seguente e seguire i prompt:
winapp init
Quando richiesto:
- Nome pacchetto: premere INVIO per accettare il valore predefinito (tauri-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 (tauri-app.exe)
-
Configurazione SDK: selezionare "Non configurare gli SDK" (Tauri utilizza i crate di
windowsRust, non le intestazioni dell'SDK C++)
Questo comando consentirà di:
- Crea
Package.appxmanifest: manifesto che definisce l'identità dell'app - Crea
Assetscartella : icone necessarie per l'invio di pacchetti MSIX e dello Store
Annotazioni
Poiché non vengono gestiti pacchetti SDK, non viene creato alcun winapp.yaml — Tauri usa il crate di windows Rust tramite Cargo, quindi non vi è nulla di cui winapp restore/update debba tenere traccia.
È possibile aprire Package.appxmanifest per personalizzare ulteriormente le proprietà, ad esempio il nome visualizzato, l'editore e le funzionalità.
4. Eseguire il debug con l'identità
Per eseguire il debug utilizzando l'identità, è necessario costruire il back-end Rust ed eseguirlo con winapp run. Poiché npm run tauri dev gestisce il ciclo di vita del processo, è più difficile inserire l'identità. Verrà invece creato uno script personalizzato. Non è necessario alcun certificato o firma per il debug.
Aggiungi script: aprire
package.jsone aggiungere un nuovo scripttauri: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" }Cosa fa questo script:
-
cargo build ...: ricompila il back-end Rust. -
copy ... dist\\: inserisce solo l'exe in unadistcartella (latarget\debugcartella è molto grande e contiene artefatti di compilazione intermedi che non fanno parte dell'app). -
winapp run .\\dist: registra un pacchetto di layout libero (proprio come un'installazione MSIX reale) e avvia l'app.
-
Eseguire lo script:
npm run tauri:dev:withidentity
Tip
È possibile che venga visualizzata una finestra del terminale o della console dietro la finestra dell'app. Questo è normale per le compilazioni di debug di Tauri (si tratta della console del processo Rust).
Dovresti ora vedere l'app aperta e un "Nome famiglia di pacchetti" viene visualizzato, confermando che è in esecuzione con l'identità verificata. È ora possibile iniziare a usare e eseguire il debug di API che richiedono l'identità del pacchetto, ad esempio Notifiche o le nuove API di intelligenza artificiale come Phi Silica.
Tip
winapp run registra anche il pacchetto nel sistema. Ecco perché MSIX può apparire come "già installato" quando si tenta di installarlo più avanti nel passaggio 5. Usare winapp unregister per pulire i pacchetti di sviluppo al termine.
Tip
Per i flussi di lavoro di debug avanzati (collegamento di debugger, installazione dell'IDE, debug di avvio), vedere la Guida al debug.
5. Pacchetto con MSIX
Dopo aver distribuito l'app, è possibile crearne il pacchetto come MSIX che fornirà l'identità del pacchetto all'applicazione.
Per prima cosa, aggiungi uno pack:msix script a 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"
}
Cosa fa questo script:
-
npm run tauri -- build: compila il back-end Rust in modalità di rilascio. -
copy ... dist\\: inserisce solo l'exe in unadistcartella (latarget\releasecartella è molto grande e contiene artefatti di compilazione intermedi che non fanno parte dell'app). -
winapp pack .\\dist --cert .\\devcert.pfx: crea pacchetti e firma l'app come MSIX.
Generare un certificato di sviluppo
I pacchetti MSIX devono essere firmati. Per i test locali, generare un certificato di sviluppo autofirmato:
winapp cert generate --if-exists skip
Tip
L'emittente del certificato deve corrispondere al Publisher nel Package.appxmanifest. Il cert generate comando legge automaticamente il file dal manifesto.
Compilazione, fase e pacchetto
npm run pack:msix
Tip
Il pack comando usa automaticamente la Package.appxmanifest dalla directory corrente e la copia nella cartella di destinazione prima dell'impacchettamento. Il file con estensione msix generato si troverà nella directory corrente.
Installare il certificato
Prima di poter installare il pacchetto MSIX, è necessario considerare attendibile il certificato di sviluppo nel computer. Eseguire questo comando come amministratore (è necessario eseguire questa operazione una sola volta per ogni certificato):
winapp cert install .\devcert.pfx
Installare ed eseguire
Tip
Se è stato usato winapp run nel passaggio 4, il pacchetto potrebbe essere già registrato nel sistema. Usare winapp unregister prima di tutto per rimuovere la registrazione di sviluppo, quindi installare il pacchetto di versione.
Installare il pacchetto facendo doppio clic sul file generato .msix o usando PowerShell:
Add-AppxPackage .\tauri-app.msix
Tip
Il nome file MSIX include la versione e l'architettura (ad esempio, tauri-app_1.0.0.0_x64.msix). Controlla la directory per trovare il nome file esatto. Se è necessario creare un nuovo pacchetto dopo la modifica del codice, incrementare il Version nell'Package.appxmanifest: Windows richiede un numero di versione superiore per aggiornare un pacchetto installato.If you need to repackage after code changes, increment the Version in your Package.appxmanifest— Windows richiede un numero di versione superiore per aggiornare un pacchetto installato.
Dopo l'installazione, è possibile avviare l'app dal menu Start. Verrà visualizzata l'app in esecuzione con identità.
Tips
- Quando si è pronti per la distribuzione, è possibile firmare MSIX con un certificato di firma del codice da un'autorità di certificazione in modo che gli utenti non devono installare un certificato autofirmato.
- Il Microsoft Store firmerà MSIX per te, non è necessario firmare prima dell'invio.
- Potrebbe essere necessario creare più pacchetti MSIX, uno per ogni architettura supportata (x64, Arm64).
Operazioni successive
- Distribute tramite winget: Presenta il tuo MSIX al Windows Gestione pacchetti Community Repository
-
Pubblica al Microsoft Store: Utilizzare
winapp storeper inviare il pacchetto -
Configura CI/CD: utilizza l'azione
setup-WinAppCliGitHub per automatizzare il confezionamento nella pipeline - API Explore Windows: Con l'identità del pacchetto, è ora possibile usare Notifications, on-device AI e altre API dipendenti da identity