Freigeben über


Windows App Development CLI-Referenz

Von Bedeutung

Die Windows App Development CLI befindet sich derzeit in public preview. Features und Befehle können sich vor der endgültigen Version ändern.

Diese Seite dokumentiert alle verfügbaren Befehle für die winapp CLI.

Globale Optionen

Alle Befehle unterstützen diese globalen Optionen:

Option Beschreibung
--verbose, -v Aktivieren Sie die Ausgabe im Detailmodus für detaillierte Protokollierung
--quiet, -q Statusmeldungen unterdrücken
--help, -h Befehlshilfe anzeigen

Globales Cacheverzeichnis

WinApp erstellt ein Verzeichnis zum Zwischenspeichern von Dateien, die zwischen mehreren Projekten freigegeben werden können. Standardmäßig ist dies $UserProfile/.winapp.

Um einen anderen Speicherort zu verwenden, legen Sie die Umgebungsvariable WINAPP_CLI_CACHE_DIRECTORY fest:

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

Setupbefehle

initialisieren

Initialisieren Sie ein Verzeichnis mit Windows SDK, Windows App SDK und erforderlichen Ressourcen für die moderne Windows-Entwicklung.

winapp init [base-directory] [options]

Argumente:

Argument Beschreibung
base-directory Basis-/Stammverzeichnis für die App/den Arbeitsbereich (Standard: aktuelles Verzeichnis)

Optionen:

Option Beschreibung
--config-dir <path> Verzeichnis zum Lesen und Speichern von Konfigurationen (Standard: aktuelles Verzeichnis)
--setup-sdks SDK-Installationsmodus: stable (Standard), preview, , experimentaloder none
--ignore-config, --no-config Verwenden Sie keine Konfigurationsdatei für die Versionsverwaltung.
--no-gitignore Aktualisieren Sie die Gitignore-Datei nicht
--use-defaults, --no-prompt Keine Eingabeaufforderung anzeigen und Standard für alle Eingaben verwenden
--config-only Nur Konfigurationsdateivorgänge ausführen, Paketinstallation überspringen

Was es tut:

  • Erstellt winapp.yaml konfigurationsdatei
  • Herunterladen von Windows SDK- und Windows App SDK paketen
  • Generiert C++/WinRT-Header und Binärdateien
  • Erstellt AppxManifest.xml
  • Richtet Buildtools ein und aktiviert den Entwicklermodus
  • Aktualisiert gitignore so, dass generierte Dateien ausgeschlossen werden

Automatische Erkennung eines .NET-Projekts:

Wenn eine .csproj-Datei im Zielverzeichnis gefunden wird, verwendet init einen optimierten .NET-spezifischen Fluss:

  • Überprüft und aktualisiert die auf eine Windows-kompatible TFM (z. B. ).
  • Fügt Microsoft.WindowsAppSDK und Microsoft.Windows.SDK.BuildTools als NuGet-PackageReference-Einträge direkt in das .csproj hinzu.
  • Generiert appxmanifest.xml, Ressourcen und ein Entwicklungszertifikat
  • Erstellt keine winapp.yaml C++-Projektionen und lädt sie nicht herunter (für NuGet-Pakete verwendendotnet restore)

Beispiele:

# 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

Tipp

Wenn Sie init mit --setup-sdks none ausgeführt haben und später die SDKs benötigen, führen Sie winapp init --use-defaults --setup-sdks stable erneut aus. Dadurch bleiben vorhandene Dateien (Manifest usw.) erhalten.

wiederherstellen

Stellen Sie Pakete wieder her, und generieren Sie Dateien basierend auf der vorhandenen winapp.yaml Konfiguration neu.

winapp restore [options]

Optionen:

Option Beschreibung
--config-dir <path> Verzeichnis mit winapp.yaml (Standard: aktuelles Verzeichnis)

Was es tut:

  • Liest vorhandene winapp.yaml Konfiguration
  • Herunterladen/Aktualisieren von SDK-Paketen in angegebene Versionen
  • Generiert C++/WinRT-Header und Binärdateien

Hinweis

Für .NET Projekte, die mit winapp init initialisiert wurden, gibt es keine winapp.yaml. Verwenden Sie stattdessen dotnet restore, um NuGet-Pakete wiederherzustellen.

Beispiele:

# Restore from winapp.yaml in current directory
winapp restore

Aktualisierung

Aktualisieren Sie Pakete auf ihre neuesten Versionen, und aktualisieren Sie die Konfigurationsdatei.

winapp update [options]

Optionen:

Option Beschreibung
--config-dir <path> Verzeichnis mit winapp.yaml (Standard: aktuelles Verzeichnis)
--setup-sdks SDK-Installationsmodus: stable (Standard), preview, , experimentaloder none

Was es tut:

  • Liest vorhandene winapp.yaml Konfiguration
  • Aktualisiert alle Pakete auf die neuesten verfügbaren Versionen
  • Aktualisiert die winapp.yaml Datei mit neuen Versionsnummern.
  • Generiert C++/WinRT-Header und Binärdateien

Beispiele:

# Update packages to latest versions
winapp update

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

Packen von Befehlen

pack

Erstellen Sie MSIX-Pakete aus vorbereiteten Anwendungsverzeichnissen. Erfordert, dass appxmanifest.xml Datei im Zielverzeichnis, im aktuellen Verzeichnis vorhanden oder mit der --manifest Option übergeben wird.

winapp pack <input-folder> [options]

Argumente:

Argument Beschreibung
input-folder Verzeichnis, das die zu verpackenden Anwendungsdateien enthält

Optionen:

Option Beschreibung
--output <filename> Ausgabe-MSIX-Dateiname (Standard: <name>.msix)
--name <name> Paketname (Standard: aus Manifest)
--manifest <path> Pfad zu AppxManifest.xml (Standard: automatische Erkennung)
--cert <path> Pfad zum Signieren eines Zertifikats (aktiviert die automatische Signatur)
--cert-password <password> Zertifikatkennwort (Standard: "Kennwort")
--generate-cert Generieren eines neuen Entwicklungszertifikats
--install-cert Installieren des Zertifikats auf dem Computer
--publisher <name> Publisher Name für die Zertifikatgenerierung
--self-contained Bundle Windows App SDK Laufzeit
--skip-pri Pri-Dateigenerierung überspringen
--executable <path> Pfad zur ausführbaren Datei relativ zum Eingabeordner. Wird verwendet, um $targetnametoken$-Platzhalter im Manifest aufzulösen.

Was es tut:

  • Überprüft und verarbeitet AppxManifest.xml Dateien
  • Löst die $placeholder$-Tokens im Manifest auf (siehe Manifestplatzhalter)
  • Stellt die richtigen Frameworkabhängigkeiten sicher
  • Aktualisiert parallele Manifeste mit Registrierungen
  • Behandelt die Bereitstellung eigenständiger Windows App SDKs
  • Signiert das Paket, wenn das Zertifikat bereitgestellt wird.

Beispiele:

# 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

Erstellen Sie eine App-Identität für das Debuggen ohne vollständige MSIX-Paketerstellung unter Verwendung eines externen Speicherorts/sparse Paketerstellung.

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

Argumente:

Argument Beschreibung
entrypoint Pfad zu ausführbarer Datei (.exe) oder Skript, das Identität benötigt

Optionen:

Option Beschreibung
--manifest <path> Pfad zu AppxManifest.xml (Standard: ./appxmanifest.xml)
--no-install Installieren Sie das Paket nach der Erstellung nicht
--keep-identity Beibehalten der Manifestidentität, so wie sie ist, ohne .debug an den Paketnamen und die Anwendungs-ID anzufügen.

Was es tut:

  • Ändert das Side-by-Side-Manifest der ausführbaren Datei.
  • Registriert ein Sparse-Paket für Identität
  • Ermöglicht das Debuggen von identitätsrelevanten APIs.

Beispiele:

# 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

Manifestbefehle

Manifest generieren

Generieren Sie AppxManifest.xml aus Vorlagen.

winapp manifest generate [directory] [options]

Argumente:

Argument Beschreibung
directory Verzeichnis zum Generieren des Manifests in (Standard: aktuelles Verzeichnis)

Optionen:

Option Beschreibung
--package-name <name> Paketname (Standard: Ordnername)
--publisher-name <name> Publisher CN (Standard: CN=<current user>)
--version <version> Version (Standard: "1.0.0.0")
--description <text> Beschreibung (Standard: "Meine Anwendung")
--entrypoint <path> Ausführbare Datei oder Skript des Einstiegspunkts
--template <type> Vorlagentyp: packaged (Standard) oder sparse
--logo-path <path> Pfad zur Logobilddatei
--if-exists <Error\|Overwrite\|Skip> Verhalten, wenn die Datei bereits vorhanden ist (Standard: Fehler)

Vorlagen:

Platzhalter im Manifest

Generierte Manifeste verwenden $placeholder$ Token (durch Dollarzeichen getrennt), die beim Verpacken automatisch aufgelöst werden:

Platzhalter Gelöst in Beispiel
$targetnametoken$ Name der ausführbaren Datei ohne Erweiterung Executable="$targetnametoken$.exe" wird zu Executable="MyApp.exe"
$targetentrypoint$ Windows.FullTrustApplication Immer automatisch gelöst

Wie Platzhalter aufgelöst werden:

  • winapp pack $targetnametoken$ wird durch die Option --executable oder durch automatische Erkennung des einzelnen .exe im Eingabeordner aufgelöst.
  • winapp create-debug-identity wird bei Bereitstellung aus dem Startpunktargument $targetnametoken$ aufgelöst.
  • winapp manifest generate --executable extrahiert Metadaten aus der ausführbaren Datei, während $targetnametoken$.exe im Manifest für eine spätere Auflösung bleibt.

Tipp

Wenn Sie $targetnametoken$ in Ihrem eingecheckten Manifest beibehalten, werden ausführbare Namen nicht hart codiert und funktionieren sowohl mit winapp pack als auch mit Visual Studio Builds.

Beispiele:

# 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

Manifestaktualisierungsressourcen

Generieren Sie alle erforderlichen MSIX-Bildressourcen aus einem einzelnen Quellimage.

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

Argumente:

Argument Beschreibung
image-path Pfad zur Quellbilddatei (PNG, JPG, GIF usw.)

Optionen:

Option Beschreibung
--manifest <path> Pfad zu AppxManifest.xml Datei (Standard: aktuelles Verzeichnis durchsuchen)

Übernimmt ein einzelnes Quellimage und generiert automatisch alle 12 erforderlichen MSIX-Bildressourcen in den richtigen Dimensionen. Objekte werden relativ zur Position des Manifests im Assets Verzeichnis gespeichert.

Beispiele:

# 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

Zertifikats- und Signaturbefehle

Zertifikat erzeugen

Generieren Sie Entwicklungszertifikate für die Paketsignierung.

winapp cert generate [options]

Optionen:

Option Beschreibung
--manifest <appxmanifest.xml> Extrahieren Sie Informationen über den Herausgeber aus appxmanifest.xml
--publisher <name> Publisher Name für das Zertifikat
--output <path> Pfad der Ausgabezertifikatdatei
--password <password> Zertifikatkennwort (Standard: "Kennwort")
--valid-days <days> Anzahl der Tage, an der das Zertifikat gültig ist (Standard: 365)
--install Installieren des Zertifikats im lokalen Computerspeicher nach der Generierung
--if-exists <Error\|Overwrite\|Skip> Verhalten, wenn die Zertifikatdatei bereits vorhanden ist (Standard: Fehler)

Zertifikat installieren

Installieren Sie das Zertifikat im Zertifikatspeicher des Computers.

winapp cert install <cert-path>

Argumente:

Argument Beschreibung
cert-path Pfad zur zu installierenden Zertifikatdatei

Beispiele:

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

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

sign

Signieren Sie MSIX-Pakete und ausführbare Dateien mit Zertifikaten.

winapp sign <file-path> [options]

Argumente:

Argument Beschreibung
file-path Pfad zu einem MSIX-Paket oder einer ausführbaren Datei zum Signieren

Optionen:

Option Beschreibung
--cert <path> Pfad zum Signieren eines Zertifikats
--cert-password <password> Zertifikatkennwort (Standard: "Kennwort")

Beispiele:

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

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

Hilfsprogrammbefehle

Werkzeug

Greifen Sie direkt auf Windows SDK-Tools zu. Verwendet Tools, die in Microsoft.Windows.SDK.BuildTools verfügbar sind.

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

Verfügbare Tools:

  • makeappx – Erstellen und Bearbeiten von App-Paketen
  • signtool - Signieren von Dateien und Überprüfen von Signaturen
  • mt - Manifesttool für parallele Assemblys
  • Und andere Windows SDK-Tools von Microsoft.Windows.SDK.BuildTools

Beispiele:

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

store

Führen Sie einen Befehl der Microsoft Store Developer CLI aus. Dieser Befehl lädt die Microsoft Store Developer CLI herunter, wenn sie noch nicht heruntergeladen wurde. Weitere Informationen finden Sie in der Microsoft Store Developer CLI.

winapp store [args...]

Argumente:

Argument Beschreibung
args... Argumente, die direkt an die msstore CLI übergeben werden sollen

Beispiele:

# 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

Abrufen der Pfade zu den installierten Windows SDK-Komponenten.

winapp get-winapp-path [options]

Gibt Pfade zum .winapp Arbeitsbereichsverzeichnis, Paketinstallationsverzeichnissen und generierten Header-Speicherorten zurück.


Node.js/Electron-Befehle

Diese Befehle sind nur im NPM-Paket verfügbar.

node create-addon

Generieren Sie systemeigene C++- oder C#-Addonvorlagen mit Windows SDK und Windows App SDK Integration.

npx winapp node create-addon [options]

Optionen:

Option Beschreibung
--name <name> Addonname (Standard: "nativeWindowsAddon")
--template Wählen Sie den Typ des Addons: cs oder cpp (Standard: cpp)
--verbose Ausführliche Ausgabe aktivieren

Was es tut:

  • Erstellt ein Addonverzeichnis mit Vorlagendateien.
  • Generiert binding.gyp- und addon-Dateien mit Windows SDK-Beispielen
  • Installiert erforderliche npm-Abhängigkeiten
  • Fügt ein Buildskript zur package.json hinzu.

Beispiele:

# 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

Fügen Sie App-Identität zum Electron-Entwicklungsprozess hinzu, indem Sie reduzierte Verpackung verwenden. Erfordert eine appxmanifest.xml (erstellen Sie eine mit winapp init oder winapp manifest generate).

Von Bedeutung

Es gibt ein bekanntes Problem mit spärlichen Verpackungen von Electron-Anwendungen, was dazu führt, dass die App beim Start abstürzt oder Webinhalte nicht rendert. Das Problem wurde in Windows behoben, wurde aber noch nicht auf alle Geräte weitergegeben. Sie können Sandboxing in Ihrer Electron-App mit dem --no-sandbox Flag als Problemumgehung deaktivieren. Dieses Problem wirkt sich nicht auf die gesamte MSIX-Verpackung aus.

Um die Electron-Debug-Identität zurückzusetzen, verwenden Sie winapp node clear-electron-debug-identity.

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

Optionen:

Option Beschreibung
--manifest <path> Pfad zu benutzerdefinierten appxmanifest.xml (Standard: appxmanifest.xml im aktuellen Verzeichnis)
--no-install Installieren oder ändern Sie keine Abhängigkeiten; konfigurieren Sie nur die Electron-Debugidentität
--keep-identity Die Manifestidentität unverändert beibehalten, ohne .debug anzufügen.
--verbose Ausführliche Ausgabe aktivieren

Beispiele:

# 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

node clear-electron-debug-identity (Befehl zur Bereinigung der Electron-Debug-Identität)

Entfernen Sie die Paketidentität aus dem Electron-Debugprozess, indem Sie die ursprüngliche electron.exe aus der Sicherung wiederherstellen.

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

Optionen:

Option Beschreibung
--verbose Ausführliche Ausgabe aktivieren

Beispiele:

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