Condividi tramite


Riferimento alla CLI per lo sviluppo di app Windows

Importante

L'interfaccia della riga di comando Windows App Development è attualmente disponibile in public preview. Le funzionalità e i comandi possono cambiare prima della versione finale.

Questa pagina documenta tutti i comandi disponibili per l'interfaccia della riga di comando di winapp.

Opzioni globali

Tutti i comandi supportano queste opzioni globali:

Opzione Descrizione
--verbose, -v Abilitare l'output dettagliato per la registrazione dettagliata
--quiet, -q Nascondere i messaggi di progresso
--help, -h Visualizzare la Guida ai comandi

Directory cache globale

WinApp crea una directory per memorizzare nella cache i file che possono essere condivisi tra più progetti. Per impostazione predefinita, tale valore è $UserProfile/.winapp.

Impostare la variabile di ambiente WINAPP_CLI_CACHE_DIRECTORY per usare un percorso diverso:

$env:WINAPP_CLI_CACHE_DIRECTORY = "d:\temp\.winapp"

Comandi di installazione

Init

Inizializzare una directory con Windows SDK, Windows App SDK e asset necessari per lo sviluppo di Windows moderno.

winapp init [base-directory] [options]

Argomenti:

Argomentazione Descrizione
base-directory Directory di base/radice per l'app/area di lavoro (impostazione predefinita: directory corrente)

Opzioni:

Opzione Descrizione
--config-dir <path> Directory per leggere/archiviare la configurazione (impostazione predefinita: directory corrente)
--setup-sdks Modalità di installazione dell'SDK: stable (impostazione predefinita), preview, experimentalo none
--ignore-config, --no-config Non usare il file di configurazione per la gestione delle versioni
--no-gitignore Non aggiornare il file .gitignore
--use-defaults, --no-prompt Non richiedere e usare l'impostazione predefinita di tutte le impostazioni
--config-only Gestire solo le operazioni dei file di configurazione, ignorare l'installazione del pacchetto

Risultato:

  • Crea il file di winapp.yaml configurazione
  • Scarica i pacchetti di Windows SDK e Windows App SDK
  • Genera intestazioni e file binari C++/WinRT
  • Crea AppxManifest.xml
  • Configura gli strumenti di compilazione e abilita la modalità sviluppatore
  • Aggiorna .gitignore per escludere i file generati

Rilevamento automatico del progetto .NET:

Quando un file .csproj viene trovato nella directory di destinazione, init usa un flusso semplificato specifico di .NET.

  • Convalida e aggiorna l'oggetto TargetFramework in un TFM compatibile con Windows (ad esempio, net10.0-windows10.0.26100.0)
  • Aggiunge Microsoft.WindowsAppSDK e Microsoft.Windows.SDK.BuildTools come voci NuGet PackageReference direttamente in .csproj
  • Genera appxmanifest.xml, asset e un certificato di sviluppo
  • Non crea o winapp.yaml scarica proiezioni C++ (da usare dotnet restore per i pacchetti NuGet)

Esempi:

# Initialize current directory
winapp init

# Initialize with experimental packages
winapp init --setup-sdks experimental

# Initialize specific directory without prompts
winapp init ./my-project --use-defaults

# Initialize a .NET project (auto-detected from .csproj)
cd my-dotnet-app
winapp init

Suggerimento

Se hai eseguito init con --setup-sdks none e successivamente hai bisogno degli SDK, esegui di nuovo winapp init --use-defaults --setup-sdks stable. In questo modo vengono mantenuti i file esistenti (manifesto e così via).

restaurare

Ripristinare i pacchetti e rigenerare i file in base alla configurazione esistente winapp.yaml .

winapp restore [options]

Opzioni:

Opzione Descrizione
--config-dir <path> Directory contenente winapp.yaml (impostazione predefinita: directory corrente)

Risultato:

  • Legge la configurazione esistente winapp.yaml
  • Download/aggiornamenti dei pacchetti SDK nelle versioni specificate
  • Rigenera intestazioni e file binari C++/WinRT

Annotazioni

Per i progetti .NET inizializzati con winapp init, non esiste alcun winapp.yaml. Usare dotnet restore invece per ripristinare i pacchetti NuGet.

Esempi:

# Restore from winapp.yaml in current directory
winapp restore

aggiornare

Aggiornare i pacchetti alle versioni più recenti e aggiornare il file di configurazione.

winapp update [options]

Opzioni:

Opzione Descrizione
--config-dir <path> Directory contenente winapp.yaml (impostazione predefinita: directory corrente)
--setup-sdks Modalità di installazione dell'SDK: stable (impostazione predefinita), preview, experimentalo none

Risultato:

  • Legge la configurazione esistente winapp.yaml
  • Aggiorna tutti i pacchetti alle versioni disponibili più recenti
  • Aggiorna il winapp.yaml file con nuovi numeri di versione
  • Rigenera intestazioni e file binari C++/WinRT

Esempi:

# Update packages to latest versions
winapp update

# Update including experimental packages
winapp update --setup-sdks experimental

Creazione di pacchetti di comandi

pack

Creare pacchetti MSIX da directory dell'applicazione preparate. È necessario che appxmanifest.xml file sia presente nella directory di destinazione, nella directory corrente o passato con l'opzione --manifest .

winapp pack <input-folder> [options]

Argomenti:

Argomentazione Descrizione
input-folder Directory contenente i file dell'applicazione da pacchettizzare

Opzioni:

Opzione Descrizione
--output <filename> Nome file MSIX di output (impostazione predefinita: <name>.msix)
--name <name> Nome pacchetto (impostazione predefinita: dal manifesto)
--manifest <path> Percorso del file AppxManifest.xml (impostazione predefinita: individuazione automatica)
--cert <path> Percorso del certificato di firma (abilita la firma automatica)
--cert-password <password> Password del certificato (impostazione predefinita: "password")
--generate-cert Generare un nuovo certificato di sviluppo
--install-cert Installare il certificato nel computer
--publisher <name> Nome del Publisher per la generazione di certificati
--self-contained Raggruppa il runtime di Windows App SDK
--skip-pri Ignorare la generazione di file PRI
--executable <path> Percorso dell'eseguibile relativo alla cartella di input. Usato per risolvere $targetnametoken$ i segnaposto nel manifesto.

Risultato:

  • Convalida ed elabora i file AppxManifest.xml
  • Risolve i $placeholder$ token nel manifesto (vedere Segnaposto nel manifesto)
  • Assicura le dipendenze appropriate del framework
  • Aggiorna manifesti side-by-side con registrazioni
  • Gestisce la distribuzione Windows App SDK autonoma
  • Firma il pacchetto se il certificato fornito

Esempi:

# Package directory with auto-detected manifest
winapp pack ./dist

# Package with custom output name and certificate
winapp pack ./dist --output MyApp.msix --cert ./cert.pfx

# Package with generated and installed certificate and self-contained runtime
winapp pack ./dist --generate-cert --install-cert --self-contained

# Package with explicit executable
winapp pack ./dist --executable MyApp.exe

create-debug-identity

Creare l'identità dell'app per il debug senza pacchetti MSIX completi usando la creazione di pacchetti di posizione/sparse esterni.

winapp create-debug-identity [entrypoint] [options]

Argomenti:

Argomentazione Descrizione
entrypoint Percorso dell'eseguibile (.exe) o script che necessita di un'identità

Opzioni:

Opzione Descrizione
--manifest <path> Percorso di AppxManifest.xml (impostazione predefinita: ./appxmanifest.xml)
--no-install Non installare il pacchetto dopo la creazione
--keep-identity Mantenere l'identità del manifesto così com'è, senza aggiungere .debug al nome del pacchetto e all'ID dell'applicazione

Risultato:

  • Modifica il manifesto parallelo del file eseguibile
  • Registra il pacchetto sperse per l'identificazione
  • Abilita il debug delle API che richiedono identità

Esempi:

# Add identity to executable using local manifest
winapp create-debug-identity ./bin/MyApp.exe

# Add identity with custom manifest location
winapp create-debug-identity ./dist/app.exe --manifest ./custom-manifest.xml

Comandi del manifesto

manifesto generato

Generare AppxManifest.xml dai modelli.

winapp manifest generate [directory] [options]

Argomenti:

Argomentazione Descrizione
directory Directory in cui generare il manifesto (impostazione predefinita: directory corrente)

Opzioni:

Opzione Descrizione
--package-name <name> Nome pacchetto (impostazione predefinita: nome cartella)
--publisher-name <name> Publisher CN (impostazione predefinita: CN=<current user>)
--version <version> Versione (impostazione predefinita: "1.0.0.0")
--description <text> Descrizione (impostazione predefinita: "Applicazione personale")
--entrypoint <path> File eseguibile o script del punto di ingresso
--template <type> Tipo di modello: packaged (impostazione predefinita) o sparse
--logo-path <path> Percorso del file di immagine del logo
--if-exists <Error\|Overwrite\|Skip> Comportamento se il file esiste già (impostazione predefinita: Errore)

Modelli:

Segnaposto nel manifesto

I manifesti generati utilizzano token $placeholder$ (delimitati dal segno del dollaro) che vengono risolti automaticamente in fase di creazione del pacchetto.

Segnaposto Risolto a Esempio
$targetnametoken$ Nome eseguibile senza estensione Executable="$targetnametoken$.exe" diventa Executable="MyApp.exe"
$targetentrypoint$ Windows.FullTrustApplication Sempre risolto automaticamente

Come vengono risolti i segnaposto:

  • winapp pack $targetnametoken$ viene risolto utilizzando l'opzione --executable o rilevando automaticamente il singolo .exe nella cartella di input.
  • winapp create-debug-identity risolve $targetnametoken$ dall'argomento del punto di ingresso quando fornito.
  • winapp manifest generate --executable estrae i metadati dal file eseguibile, ma mantiene $targetnametoken$.exe nel manifesto per una risoluzione successiva.

Suggerimento

Mantenere $targetnametoken$ nel manifesto registrato evita i nomi eseguibili hard-coded e funziona con winapp pack e compilazioni di Visual Studio.

Esempi:

# Generate standard manifest interactively
winapp manifest generate

# Generate with all options specified
winapp manifest generate ./src --package-name MyApp --publisher-name "CN=My Company" --if-exists overwrite

aggiornamento asset del manifesto

Generare tutti gli asset di immagine MSIX necessari da un'unica immagine di origine.

winapp manifest update-assets <image-path> [options]

Argomenti:

Argomentazione Descrizione
image-path Percorso del file di immagine di origine (PNG, JPG, GIF e così via)

Opzioni:

Opzione Descrizione
--manifest <path> Percorso del file AppxManifest.xml (impostazione predefinita: cerca la directory corrente)

Accetta una singola immagine di origine e genera automaticamente tutti i 12 asset di immagine MSIX necessari alle dimensioni corrette. Le risorse vengono salvate nella Assets cartella relativa alla posizione del manifesto.

Esempi:

# Generate assets with auto-detected manifest
winapp manifest update-assets mylogo.png

# Specify manifest location explicitly
winapp manifest update-assets mylogo.png --manifest ./dist/appxmanifest.xml

Comandi per certificato e firma

Generazione di certificati

Generare certificati di sviluppo per la firma del pacchetto.

winapp cert generate [options]

Opzioni:

Opzione Descrizione
--manifest <appxmanifest.xml> Estrarre informazioni di publisher da appxmanifest.xml
--publisher <name> Nome editore per il certificato
--output <path> Percorso del file del certificato di output
--password <password> Password del certificato (impostazione predefinita: "password")
--valid-days <days> Numero di giorni in cui il certificato è valido (impostazione predefinita: 365)
--install Installare il certificato nell'archivio del computer locale dopo la generazione
--if-exists <Error\|Overwrite\|Skip> Comportamento se il file di certificato esiste già (impostazione predefinita: Errore)

Installazione del certificato

Installare il certificato nell'archivio certificati del computer.

winapp cert install <cert-path>

Argomenti:

Argomentazione Descrizione
cert-path Percorso del file di certificato da installare

Esempi:

# Generate certificate for specific publisher
winapp cert generate --publisher "CN=My Company" --output ./mycert.pfx

# Install certificate to machine
winapp cert install ./mycert.pfx

segno

Firmare pacchetti MSIX ed eseguibili con certificati.

winapp sign <file-path> [options]

Argomenti:

Argomentazione Descrizione
file-path Percorso del pacchetto MSIX o del file eseguibile da firmare

Opzioni:

Opzione Descrizione
--cert <path> Percorso del certificato di firma
--cert-password <password> Password del certificato (impostazione predefinita: "password")

Esempi:

# Sign MSIX package
winapp sign MyApp.msix --cert ./mycert.pfx

# Sign executable
winapp sign ./bin/MyApp.exe --cert ./mycert.pfx --cert-password mypassword

Comandi di utilità

strumento

Accedi direttamente agli strumenti del Windows SDK. Usa gli strumenti disponibili in Microsoft.Windows.SDK.BuildTools.

winapp tool <tool-name> [tool-arguments]

Strumenti disponibili:

  • makeappx - Creare e modificare pacchetti di app
  • signtool - Firmare i file e verificare le firme
  • mt - Strumento manifesto per assembly affiancate
  • E altri strumenti di Windows SDK di Microsoft.Windows.SDK.BuildTools

Esempi:

# Use signtool to verify signature
winapp tool signtool verify /pa MyApp.msix

store

Eseguire un comando di Microsoft Store Developer CLI. Questo comando scarica l'interfaccia della riga di comando per sviluppatori di Microsoft Store se non è già stata scaricata. Per altre informazioni, vedere Interfaccia della riga di comando per sviluppatori di Microsoft Store.

winapp store [args...]

Argomenti:

Argomentazione Descrizione
args... Argomenti da passare direttamente all'interfaccia a riga di msstore comando

Esempi:

# List all apps in your Microsoft Partner Center account
winapp store app list

# Publish a package to the Microsoft Store
winapp store publish ./myapp.msix --appId <your-app-id>

get-winapp-path

Ottieni i percorsi dei componenti di Windows SDK installati.

winapp get-winapp-path [options]

Restituisce i percorsi della directory dell'area di lavoro .winapp, delle directory di installazione dei pacchetti e delle posizioni dei file di intestazione generati.


comandi per Node.js/Electron

Questi comandi sono disponibili solo nel pacchetto NPM.

node create-addon

Generare modelli di componente aggiuntivo C++ o C# nativi con Windows SDK e integrazione Windows App SDK.

npx winapp node create-addon [options]

Opzioni:

Opzione Descrizione
--name <name> Nome del componente aggiuntivo (impostazione predefinita: "nativeWindowsAddon")
--template Selezionare il tipo di componente aggiuntivo: cs o cpp (impostazione predefinita: cpp)
--verbose Abilitare l'output dettagliato

Risultato:

  • Crea la directory del componente aggiuntivo con i file modello
  • Genera i file binding.gyp e addon con esempi dello Windows SDK
  • Installa le dipendenze npm necessarie
  • Aggiunge script di compilazione a package.json

Esempi:

# Generate addon with default name
npx winapp node create-addon

# Generate custom named C# addon
npx winapp node create-addon --name myWindowsAddon --template cs

node add-electron-debug-identity

Aggiungere l'identità dell'app al processo di sviluppo di Electron usando sparse packaging. Richiede un appxmanifest.xml (crearne uno con winapp init o winapp manifest generate).

Importante

Si è verificato un problema noto relativo al packaging sparso di applicazioni Electron che causano l'arresto anomalo dell'app all'avvio o impediscono il rendering del contenuto web. Il problema è stato risolto in Windows ma non è ancora stato propagato a tutti i dispositivi. È possibile disabilitare il sandboxing nell'app Electron con il --no-sandbox flag come soluzione alternativa. Questo problema non influisce sulla creazione di pacchetti MSIX completi.

Per annullare l'identità di debug Electron, usare winapp node clear-electron-debug-identity.

npx winapp node add-electron-debug-identity [options]

Opzioni:

Opzione Descrizione
--manifest <path> Percorso verso il file XML appxmanifest personalizzato (impostazione predefinita: appxmanifest.xml nella directory corrente)
--no-install Non installare o modificare le dipendenze; configurare solo l'identità di debug di Electron
--keep-identity Mantenere l'identità del manifesto così com'è, senza accodare .debug
--verbose Abilitare l'output dettagliato

Esempi:

# Add identity to Electron development process
npx winapp node add-electron-debug-identity

# Use a custom manifest file
npx winapp node add-electron-debug-identity --manifest ./custom/appxmanifest.xml

nodo clear-electron-debug-identity

Rimuovere l'identità del pacchetto dal processo di debug Electron ripristinando il electron.exe originale dal backup.

npx winapp node clear-electron-debug-identity [options]

Opzioni:

Opzione Descrizione
--verbose Abilitare l'output dettagliato

Esempi:

# Remove identity from Electron development process
npx winapp node clear-electron-debug-identity