Hinweis
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, sich anzumelden oder das Verzeichnis zu wechseln.
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, das Verzeichnis zu wechseln.
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.yamlkonfigurationsdatei - 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.WindowsAppSDKundMicrosoft.Windows.SDK.BuildToolsals NuGet-PackageReference-Einträge direkt in das.csprojhinzu. - Generiert
appxmanifest.xml, Ressourcen und ein Entwicklungszertifikat -
Erstellt keine
winapp.yamlC++-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.yamlKonfiguration - 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.yamlKonfiguration - Aktualisiert alle Pakete auf die neuesten verfügbaren Versionen
- Aktualisiert die
winapp.yamlDatei 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:
-
packaged- Standardmäßiges App-Manifest -
sparse- App-Manifest mit sparse/external location packaging
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--executableoder durch automatische Erkennung des einzelnen.exeim Eingabeordner aufgelöst. -
winapp create-debug-identitywird bei Bereitstellung aus dem Startpunktargument$targetnametoken$aufgelöst. -
winapp manifest generate --executableextrahiert Metadaten aus der ausführbaren Datei, während$targetnametoken$.exeim 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
Zugehörige Themen
Windows developer