CLI-referens för Windows App-utveckling

Viktigt!

CLI för Windows App Development finns för närvarande i public preview. Funktioner och kommandon kan ändras innan den slutliga versionen.

På den här sidan dokumenteras alla tillgängliga kommandon för winapp CLI.

Globala alternativ

Alla kommandon har stöd för följande globala alternativ:

Option Beskrivning
--verbose, -v Aktivera utförliga utdata för detaljerad loggning
--quiet, -q Ignorera förloppsmeddelanden
--help, -h Visa kommandohjälp

Global cachekatalog

WinApp skapar en katalog för cachelagring av filer som kan delas mellan flera projekt. Som standard är detta $UserProfile/.winapp.

Om du vill använda en annan plats anger du WINAPP_CLI_CACHE_DIRECTORY miljövariabeln:

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

Installationskommandon

init

Initiera en katalog med Windows SDK, Windows App SDK och nödvändiga tillgångar för modern Windows-utveckling.

winapp init [base-directory] [options]

Argument:

Argument Beskrivning
base-directory Bas-/rotkatalog för appen/arbetsytan (standard: aktuell katalog)

Alternativ:

Option Beskrivning
--config-dir <path> Katalog för att läsa/lagra konfiguration (standard: aktuell katalog)
--setup-sdks SDK-installationsläge: stable (standard), preview, experimentaleller none
--ignore-config, --no-config Använd inte konfigurationsfilen för versionshantering
--no-gitignore Uppdatera inte .gitignore-filen
--use-defaults, --no-prompt Fråga inte och använd standardvärdet för alla prompter
--config-only Hantera endast konfigurationsfilåtgärder, hoppa över paketinstallation

Vad den gör:

  • Skapar winapp.yaml konfigurationsfil
  • Laddar ned Windows SDK- och Windows App SDK-paket
  • Genererar C++/WinRT-huvuden och binärfiler
  • Skapar AppxManifest.xml
  • Konfigurerar byggverktyg och aktiverar utvecklarläge
  • Uppdaterar .gitignore för att exkludera genererade filer

Automatisk .NET projektdetektering:

När en .csproj-fil finns i målkatalogen använder init ett effektiviserat .NET specifikt flöde:

  • Validerar och uppdaterar TargetFramework till en Windows-kompatibel TFM (till exempel net10.0-windows10.0.26100.0)
  • Lägger till Microsoft.WindowsAppSDK och Microsoft.Windows.SDK.BuildTools som NuGet-poster PackageReference direkt i .csproj
  • Genererar appxmanifest.xml, tillgångar och ett utvecklingscertifikat
  • Skapar inte eller laddar ned C++-projektioner (använd dotnet restore för NuGet-paket)

Exempel:

# 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

Tips/Råd

Om du körde init med --setup-sdks none och senare behöver SDK:erna, kör om winapp init --use-defaults --setup-sdks stable. Detta bevarar befintliga filer (manifest osv.).

återställ

Återställ paket och återskapa filer baserat på befintlig winapp.yaml konfiguration.

winapp restore [options]

Alternativ:

Option Beskrivning
--config-dir <path> Katalog som innehåller winapp.yaml (standard: aktuell katalog)

Vad den gör:

  • Läser befintlig winapp.yaml konfiguration
  • Laddar ned/uppdaterar SDK-paket till angivna versioner
  • Återskapar C++/WinRT-huvuden och binärfiler

Anmärkning

För .NET projekt som initierats med winapp init finns det ingen winapp.yaml. Använd dotnet restore för att återställa NuGet-paket i stället.

Exempel:

# Restore from winapp.yaml in current directory
winapp restore

uppdatering

Uppdatera paketen till de senaste versionerna och uppdatera konfigurationsfilen.

winapp update [options]

Alternativ:

Option Beskrivning
--config-dir <path> Katalog som innehåller winapp.yaml (standard: aktuell katalog)
--setup-sdks SDK-installationsläge: stable (standard), preview, experimentaleller none

Vad den gör:

  • Läser befintlig winapp.yaml konfiguration
  • Uppdaterar alla paket till de senaste tillgängliga versionerna
  • winapp.yaml Uppdaterar filen med nya versionsnummer
  • Återskapar C++/WinRT-huvuden och binärfiler

Exempel:

# Update packages to latest versions
winapp update

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

Paketeringskommandon

pack

Skapa MSIX-paket från förberedda programkataloger. Kräver att appxmanifest.xml filen finns i målkatalogen, i den aktuella katalogen eller skickas --manifest med alternativet .

winapp pack <input-folder> [options]

Argument:

Argument Beskrivning
input-folder Katalog som innehåller programfilerna som ska paketera

Alternativ:

Option Beskrivning
--output <filename> Utdata för MSIX-filnamn (standard: <name>.msix)
--name <name> Paketnamn (standard: från manifest)
--manifest <path> Sökväg till AppxManifest.xml (standard: automatisk identifiering)
--cert <path> Sökväg till signeringscertifikat (möjliggör automatisk signering)
--cert-password <password> Certifikatlösenord (standard: "lösenord")
--generate-cert Generera ett nytt utvecklingscertifikat
--install-cert Installera certifikatet på datorn
--publisher <name> Publisher namn för certifikatgenerering
--self-contained Bunta Windows App SDK körtid
--skip-pri Hoppa över PRI-filgenerering
--executable <path> Sökväg till den körbara filen i förhållande till indatamappen. Används för att lösa $targetnametoken$ platshållare i manifestet.

Vad den gör:

  • Validerar och bearbetar AppxManifest.xml filer
  • Löser $placeholder$ token i manifestet (se Platshållare för manifest)
  • Säkerställer rätt ramverksberoenden
  • Uppdaterar manifest sida vid sida med registreringar
  • Hanterar fristående Windows App SDK-utplacering
  • Signerar paket om certifikatet tillhandahålls

Exempel:

# 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

skapa-debug-identitet

Skapa app-identitet för felsökning utan fullständig MSIX-paketering med extern lagring/gles paketering.

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

Argument:

Argument Beskrivning
entrypoint Sökväg till körbar (.exe) eller skript som behöver identitet

Alternativ:

Option Beskrivning
--manifest <path> Sökväg till AppxManifest.xml (standard: ./appxmanifest.xml)
--no-install Installera inte paketet när du har skapat det
--keep-identity Behåll manifestidentiteten as-is, utan att lägga .debug till paketnamnet och program-ID:t

Vad den gör:

  • Ändrar körbara manifest sida vid sida
  • Registrerar sparse-paket för identitet
  • Aktiverar felsökning av identitetskrävande API:er

Exempel:

# 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

Manifestkommandon

manifestet generera

Generera AppxManifest.xml från mallar.

winapp manifest generate [directory] [options]

Argument:

Argument Beskrivning
directory Katalog för att generera manifest i (standard: aktuell katalog)

Alternativ:

Option Beskrivning
--package-name <name> Paketnamn (standard: mappnamn)
--publisher-name <name> Publisher CN (förvalt: CN=<current user>)
--version <version> Version (förval: "1.0.0.0")
--description <text> Beskrivning (standard: "Mitt program")
--entrypoint <path> Exekverbar startpunkt eller skript
--template <type> Malltyp: packaged (standard) eller sparse
--logo-path <path> Sökväg till logotypbildfil
--if-exists <Error\|Overwrite\|Skip> Beteende om filen redan finns (standard: Fel)

Mallar:

Platshållare för manifest

Genererade manifest använder $placeholder$ tokens (avgränsade med dollartecken) som löses automatiskt under paketeringen.

Platshållare Löst till Exempel
$targetnametoken$ Körbart namn utan filändelse Executable="$targetnametoken$.exe" blir Executable="MyApp.exe"
$targetentrypoint$ Windows.FullTrustApplication Alltid löst automatiskt

Så här hanteras platshållarna:

  • winapp pack löser $targetnametoken$ genom --executable alternativ eller genom att automatiskt identifiera den enda .exe i indatamappen.
  • winapp create-debug-identity löses $targetnametoken$ från argumentet entrypoint när det tillhandahålls.
  • winapp manifest generate --executable extraherar metadata från den körbara filen men behåller $targetnametoken$.exe i manifestet för senare lösning.

Tips/Råd

Om du håller $targetnametoken$ i ditt incheckade manifest undviker du hårdkodande körbara programnamn och fungerar med både winapp pack och Visual Studio byggen.

Exempel:

# 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

manifest uppdatera-tillgångar

Generera alla nödvändiga MSIX-avbildningstillgångar från en enda källbild.

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

Argument:

Argument Beskrivning
image-path Sökväg till källbildfilen (PNG, JPG, GIF osv.)

Alternativ:

Option Beskrivning
--manifest <path> Sökväg till AppxManifest.xml fil (standard: sök aktuell katalog)

Tar en enda källbild och genererar automatiskt de 12 nödvändiga MSIX-avbildningsresurserna med rätt dimensioner. Tillgångar sparas i Assets katalogen i förhållande till manifestets plats.

Exempel:

# 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

Certifikat- och signeringskommandon

certifikat generera

Generera utvecklingscertifikat för paketsignering.

winapp cert generate [options]

Alternativ:

Option Beskrivning
--manifest <appxmanifest.xml> Extrahera publiceringsinformation från appxmanifest.xml
--publisher <name> Publicerarnamn för certifikat
--output <path> Sökväg till outputcertifikatfil
--password <password> Certifikatlösenord (standard: "lösenord")
--valid-days <days> Antal dagar som certifikatet är giltigt (standard: 365)
--install Installera certifikatet i det lokala datorarkivet efter genereringen
--if-exists <Error\|Overwrite\|Skip> Beteende om certifikatfilen redan finns (standard: Fel)

installera certifikat

Installera certifikat till certifikatlager för maskin.

winapp cert install <cert-path>

Argument:

Argument Beskrivning
cert-path Sökväg till certifikatfilen som ska installeras

Exempel:

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

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

tecken

Signera MSIX-paket och körbara filer med certifikat.

winapp sign <file-path> [options]

Argument:

Argument Beskrivning
file-path Sökväg till MSIX-paket eller körbar fil för signering

Alternativ:

Option Beskrivning
--cert <path> Sökväg till signeringscertifikat
--cert-password <password> Certifikatlösenord (standard: "lösenord")

Exempel:

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

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

Verktygskommandon

verktyg

Åtkomst till Windows SDK-verktyg direkt. Använder verktyg som är tillgängliga i Microsoft.Windows.SDK.BuildTools.

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

Tillgängliga verktyg:

  • makeappx – Skapa och manipulera apppaket
  • signtool – Signera filer och verifiera signaturer
  • mt – Manifestverktyg för sammansättningar sida vid sida
  • Och andra Windows SDK-verktyg från Microsoft.Windows.SDK.BuildTools

Exempel:

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

store

Kör ett CLI-kommando för Microsoft Store Developer. Det här kommandot laddar ned Microsoft Store Developer CLI om det inte redan har laddats ned. Läs mer på Microsoft Store Developer CLI.

winapp store [args...]

Argument:

Argument Beskrivning
args... Argumenten som ska skickas direkt till msstore CLI

Exempel:

# 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

Hämta sökvägar till installerade Windows SDK-komponenter.

winapp get-winapp-path [options]

Returnerar sökvägar till .winapp arbetskatalogen, paketinstallationskataloger och genererade headerplatser.


Node.js/Electron-kommandon

Dessa kommandon är endast tillgängliga i NPM-paketet.

node create-addon

Generera interna C++ eller C#-tilläggsmallar med Windows SDK och Windows App SDK integrering.

npx winapp node create-addon [options]

Alternativ:

Option Beskrivning
--name <name> Addon-namn (standard: "nativeWindowsAddon")
--template Välj typ av tillägg: cs eller cpp (standard: cpp)
--verbose Aktivera utförliga utdata

Vad den gör:

  • Skapar addon-katalog med mallfiler
  • Genererar binding.gyp- och addon-filer med Windows SDK-exempel
  • Installerar nödvändiga npm-beroenden
  • Lägger till byggskript i package.json

Exempel:

# 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

Lägg till appidentitet i Electron-utvecklingsprocessen med hjälp av gles paketering. Kräver en appxmanifest.xml (skapa en med winapp init eller winapp manifest generate).

Viktigt!

Det finns ett känt problem med gles paketering av Elektronprogram som gör att appen kraschar vid start eller inte renderar webbinnehåll. Problemet har åtgärdats i Windows men har inte spridits till alla enheter ännu. Du kan inaktivera sandbox-miljön i din Electron-app med --no-sandbox flaggan som en lösning. Det här problemet påverkar inte fullständig MSIX-paketering.

Om du vill ångra Electron-felsökningsidentiteten använder du winapp node clear-electron-debug-identity.

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

Alternativ:

Option Beskrivning
--manifest <path> Sökväg till anpassad appxmanifest.xml (standard: appxmanifest.xml i aktuella katalogen)
--no-install Installera eller ändra inte beroenden. konfigurera endast electron-felsökningsidentiteten
--keep-identity Behåll manifestidentiteten som den är, utan att lägga till .debug
--verbose Aktivera utförliga utdata

Exempel:

# 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

nod clear-electron-debug-identity

Ta bort paketidentiteten från Electron-felsökningsprocessen genom att återställa den ursprungliga electron.exe från säkerhetskopian.

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

Alternativ:

Option Beskrivning
--verbose Aktivera utförliga utdata

Exempel:

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