CLI-documentatie en -gebruik

Shell-voltooiing

Schakel tabvoltooiing in voor opdrachten, opties en waarden. Zie de handleiding voor voltooiing van Shell voor installatie-instructies.

# Quick setup for PowerShell (permanent — add to profile)
winapp complete --setup powershell >> $PROFILE

# Or try it in the current session only
winapp complete --setup powershell | Out-String | Invoke-Expression

init

Initialiseer een map met Windows SDK, Windows App SDK en vereiste assets voor moderne Windows-ontwikkeling.

winapp init [base-directory] [options]

Argumenten:

  • base-directory - Basis-/hoofdmap voor de app/werkruimte (standaard: huidige map)

Opties:

  • --config-dir <path> - Configuratie van map voor lezen/opslaan (standaard: huidige map)
  • --setup-sdks - SDK-installatiemodus: 'stabiel' (standaard), 'preview', 'experimenteel' of 'geen' (sdk-installatie overslaan)
  • --ignore-config, --no-config - Gebruik geen configuratiebestand voor versiebeheer
  • --no-gitignore - .gitignore-bestand niet bijwerken
  • --use-defaults, --no-prompt - Niet vragen en standaard van alle prompts gebruiken
  • --config-only - Alleen bewerkingen van configuratiebestanden verwerken, pakketinstallatie overslaan
  • --add-js-bindings (alleen npm) - Toevoegen winapp.jsBindings aan package.json en JS-/TypeScript-bindingen genereren, zonder te vragen (niet compatibel met --setup-sdks none)

Wat het doet:

  • Hiermee maakt u winapp.yaml een configuratiebestand (alleen wanneer SDK-pakketten worden beheerd; overgeslagen met --setup-sdks none)
  • Windows SDK- en Windows App SDK-pakketten downloaden
  • Hiermee worden C++/WinRT-headers en binaire bestanden gegenereerd
  • Maakt Package.appxmanifest
  • Hiermee stelt u buildhulpprogramma's in en activeert u de ontwikkelaarsmodus.
  • Werkt .gitignore bij om gegenereerde bestanden uit te sluiten
  • Slaat deelbare bestanden op in de globale cachemap
  • Genereert JS-bindingen voor Windows App SDK API's wanneer deze zijn ingeschakeld (alleen npm)

Automatische projectdetectie:

Wanneer init wordt uitgevoerd zonder een mapargument, voert het een breedte-eerste zoekopdracht van de huidige mapstructuur uit om compatibele projecten te vinden (maximaal 10). Ondersteunde projecttypen:

  • Tauri : tauri.conf.json één niveau onder de map gevonden
  • Electron , package.json met electron in afhankelijkheden of devDependencies
  • Flutter - pubspec.yaml in de hoofdmap van het project
  • .NET - .csproj in de hoofdmap van het project
  • RustCargo.toml in de hoofdmap van het project
  • C++ - CMakeLists.txt in de hoofdmap van het project

De zoekactie slaat vaak genegeerde mappen over (node_modules, bin, obj, .git, enzovoort). Wanneer een compatibel project wordt gevonden, worden submappen eronder niet doorzocht.

  • Als er een mapargument wordt opgegeven (bijvoorbeeld winapp init . of winapp init path/to/project), wordt de zoekopdracht overgeslagen en init wordt alleen die map voor een compatibel project gecontroleerd
  • Als --use-defaults (of --no-prompt) is ingesteld zonder een mapargument, init slaat u de zoekopdracht over en initialiseert u de huidige map niet-interactief, waarschuwing eerst als er geen bekend projecttype wordt gedetecteerd (bijvoorbeeld winapp init --use-defaults)
  • In niet-interactieve omgevingen (piped stdin, CI, omgeleide invoer), init wordt automatisch gebruikgemaakt --use-defaults van gedrag en wordt een waarschuwing verzonden: Non-interactive environment detected. Using default values.
  • Als de huidige map een compatibel project is, init gaat u onmiddellijk verder
  • Als er ergens anders precies één project wordt gevonden, wordt u gevraagd om te bevestigen
  • Als er meerdere projecten worden gevonden, kunt u selecteren welke u wilt initialiseren: de huidige map is altijd beschikbaar als een terugvaloptie
  • Als er geen projecten worden gevonden, wordt u gewaarschuwd en wordt u gevraagd of u toch wilt doorgaan
  • Als de zoekactie de limiet van 10 projecten bereikt, wordt een waarschuwing voorgesteld om een mapargument op te geven

Automatische .NET projectstroom:

Wanneer een .csproj-bestand wordt gevonden in de doelmap, gebruikt init een gestroomlijnde .NET-specifieke stroom:

  • Valideert en werkt de TargetFramework bij naar een Windows compatibele TFM (bijvoorbeeld net10.0-windows10.0.26100.0)
  • Voegt Microsoft.WindowsAppSDK en Microsoft.Windows.SDK.BuildTools als NuGet-vermeldingen PackageReference rechtstreeks toe in de .csproj
  • Genereert Package.appxmanifest, assets en een ontwikkelingscertificaat
  • Maakt geen C++-projecties aan winapp.yaml of downloadt ze (gebruik dotnet restore voor NuGet-pakketten)

Voorbeelden:

# 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

Tip: SDK's installeren na de eerste installatie

Als u de init SDK hebt uitgevoerd --setup-sdks none (of de SDK-installatie hebt overgeslagen) en later de SDK's nodig hebt:

# Re-run init to install SDKs - preserves existing files (manifest, etc.)
winapp init . --use-defaults --setup-sdks stable

Gebruik --setup-sdks preview of --setup-sdks experimental voor preview-/experimentele SDK-versies.


herstellen

Herstel pakketten en genereer bestanden opnieuw op basis van de bestaande winapp.yaml configuratie.

winapp restore [options]

Opties:

  • --config-dir <path> - Map met winapp.yaml (standaard: huidige map)

Wat het doet:

  • Leest de bestaande winapp.yaml configuratie
  • SDK-pakketten downloaden/bijwerken naar opgegeven versies
  • Genereert C++/WinRT-headers en binaire bestanden opnieuw
  • Slaat deelbare bestanden op in de globale cachemap

Opmerking

Voor .NET projecten die zijn geïnitialiseerd met winapp init, is er geen winapp.yaml. Gebruik dotnet restore in plaats daarvan om NuGet-pakketten te herstellen.

Voorbeelden:

# Restore from winapp.yaml in current directory
winapp restore

update

Werk pakketten bij naar de nieuwste versies en werk het configuratiebestand bij.

winapp update [options]

Opties:

  • --setup-sdks <stable|preview|experimental|none> - SDK-installatiemodus: stable (standaard), preview, experimentalof none (sdk-installatie overslaan)

Wat het doet:

  • Leest de bestaande winapp.yaml configuratie in de huidige map
  • Alle pakketten bijwerken naar de nieuwste beschikbare versies
  • winapp.yaml Het bestand bijwerken met nieuwe versienummers
  • Genereert C++/WinRT-headers en binaire bestanden opnieuw

Voorbeelden:

# Update packages to latest versions
winapp update

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

pack

MSIX-pakketten maken op basis van voorbereide toepassingsmappen. Vereist dat een manifestbestand (Package.appxmanifest voorkeur, appxmanifest.xml ook ondersteund) aanwezig is in de doelmap, in de huidige map of doorgegeven met de --manifest optie. (een manifest uitvoeren init of manifest generate maken)

Geef meerdere invoermappen door om een .msixbundle voor distributie met meerdere architectuur te maken (zie bundels met meerdere architecturen hieronder).

winapp pack <input-folder> [input-folder...] [options]

Argumenten:

  • input-folder - Een of meer mappen met de toepassingsbestanden die moeten worden verpakt. Geef meerdere mappen (bijvoorbeeld) door om een MSIX-bundel ./publish/x64 ./publish/arm64te maken.

Opties:

  • --output <filename> - Naam van uitvoerbestand. Voor één pakket: <name>_<version>_<arch>.msix (terugvallen op <name>_<version>.msix, <name>_<arch>.msixof <name>.msix). Voor bundels: <name>_<version>_<arch1>_<arch2>.msixbundle.
  • --name <name> - Pakketnaam (standaard: van manifest)
  • --manifest <path> - Pad naar manifestbestand (Package.appxmanifest aanbevolen, appxmanifest.xml ook ondersteund; standaard: automatisch detecteren)
  • --cert <path> - Pad naar handtekeningcertificaat (automatisch ondertekenen is ingeschakeld)
  • --cert-password <password> - Certificaatwachtwoord (standaard: 'wachtwoord')
  • --generate-cert - Een nieuw ontwikkelingscertificaat genereren
  • --install-cert - Certificaat installeren op computer
  • --publisher <name>- Publisher voor het genereren van certificaten. Accepteert een volledige X.500 DN-naam of een lege naam (automatisch verpakt als CN=<name>)
  • --self-contained - Bundel Windows App SDK runtime
  • --skip-pri - Het genereren van PRI-bestanden overslaan
  • --executable <path> - Pad naar het uitvoerbare bestand ten opzichte van de invoermap (ook --exe). Wordt gebruikt om tijdelijke aanduidingen in het manifest op te lossen $targetnametoken$ .

Wat het doet:

  • Valideert en verwerkt Package.appxmanifest-bestanden
  • $placeholder$ Hiermee worden tokens in het manifest omgezet (zie tijdelijke aanduidingen voor manifesten hieronder)
  • Zorgt voor de juiste frameworkafhankelijkheden
  • Manifesten parallel bijwerken met registraties
  • Detecteert en bundelt automatisch niet-installatiekopiebestanden waarnaar wordt verwezen in het manifest (bijvoorbeeld AppExtension manifest.json, configuratiebestanden) uit de manifestmap of invoermap als ze ontbreken in fasering
  • Detecteert automatisch WinRT-onderdelen van derden en registreert hun activeringsklassen (zie hieronder WinRT-onderdeeldetectie )
  • Verwerkt zelfstandige WinAppSDK-implementatie
  • Ondertekent het pakket indien het certificaat is verstrekt.

WinRT-onderdeeldetectie

Bij het verpakken winapp pack scant u automatisch NuGet-pakketten die zijn gedefinieerd in of winapp.yaml*.csproj voor WinRT-onderdelen van derden (bijvoorbeeld Win2D). Het parseert .winmd bestanden om activeringsbare klassenamen te extraheren en hun implementatie-DLL's te vinden. De gedetecteerde vermeldingen worden als volgt geregistreerd:

  • Frameworkafhankelijk (standaard): Activeringsklassen worden toegevoegd als <InProcessServer> vermeldingen in de Package.appxmanifest
  • Zelfstandige (--self-contained): Activeringsklassen worden ingesloten in SxS-manifesten (side-by-side) binnen het uitvoerbare bestand

Tijdelijke aanduiding voor oplossing tijdens verpakking:

Als het manifest het $targetnametoken$ kenmerk bevatExecutable:

  1. Als --executable dit is opgegeven (pad ten opzichte van de invoermap), wordt de tijdelijke aanduiding vervangen door de opgegeven waarde
  2. winapp pack Anders scant u de hoofdmap van de invoermap voor .exe bestanden, als er precies één wordt gevonden, wordt deze automatisch gebruikt
  3. Als er nul of meerdere .exe bestanden worden gevonden, wordt een fout weergegeven waarin u wordt gevraagd om op te geven --executable

Voorbeelden:

# 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 WinAppSDK runtime
winapp pack ./dist --generate-cert --install-cert --self-contained

# Package with explicit executable (resolves $targetnametoken$ in manifest)
winapp pack ./dist --executable MyApp.exe

Bundels met meerdere architectuur

Wanneer meerdere invoermappen worden doorgegeven, winapp pack maakt u een .msixbundle map met één .msix per architectuur:

# Create unsigned bundle for Microsoft Store submission
winapp pack ./publish/x64 ./publish/arm64

# Create signed bundle for sideloading
winapp pack ./publish/x64 ./publish/arm64 --cert ./devcert.pfx

# Self-contained bundle
winapp pack ./publish/x64 ./publish/arm64 --self-contained --generate-cert

De opdracht detecteert automatisch de architectuur van elke map uit de PE-header van het primaire uitvoerbare bestand, valideert consistentie tussen segmenten (identiteit, mogelijkheden, afhankelijkheden) en produceert een <Name>_<Version>_<arch1>_<arch2>.msixbundle.

Manifestoplossing voor bundels:

Elk segment in de bundel heeft een manifest nodig. Met de opdracht worden manifesten in deze volgorde omgezet:

  1. --manifest <path> — Indien opgegeven, wordt dit enkele manifest gebruikt voor alle segmenten. De ProcessorArchitecture functie wordt automatisch per segment bijgewerkt zodat deze overeenkomt met de gedetecteerde architectuur.

  2. Manifest per map : als elke invoermap een Package.appxmanifest (of appxmanifest.xml) bevat, wordt het manifest van die map gebruikt voor het segment.

  3. Huidige mapterugval : als een map geen manifest heeft, zoekt de opdracht naar Package.appxmanifest in de huidige werkmap en gebruikt deze (met automatisch gestempelde architectuur).

In alle gevallen wordt het manifest automatisch bijgewerkt: tijdelijke aanduidingen worden opgelost, afhankelijkheden worden geïnjecteerd en de ProcessorArchitecture is geforceerd ingesteld op de gedetecteerde architectuur. Na de oplossing zorgt een kruissegmentvalidatie ervoor dat identiteit (naam, versie, Publisher), mogelijkheden en afhankelijkheden consistent zijn in alle segmenten. Dit kan alleen ProcessorArchitecture verschillen. De pakketversie die in de segmenten is gedefinieerd, wordt toegewezen aan de MSIX-bundelversie, behalve als dit het geval is 0.0.0.0, in welk geval automatisch een versie op basis van een tijdstempel wordt gegenereerd.

# Option 1: Single shared manifest (simplest for most projects)
# Place Package.appxmanifest in your project root and run from there
winapp pack ./publish/x64 ./publish/arm64

# Option 2: Explicit manifest path
winapp pack ./publish/x64 ./publish/arm64 --manifest ./src/Package.appxmanifest

# Option 3: Per-folder manifests (useful if slices have different app extensions)
# Each folder already contains its own Package.appxmanifest
winapp pack ./publish/x64 ./publish/arm64

create-debug-identity

Maak een app-identiteit voor foutopsporing met behulp van sparse-pakketten. De exe blijft op de oorspronkelijke locatie: Windows koppelt er identiteit aan via Add-AppxPackage -ExternalLocation.

Wanneer u dit wilt gebruiken versus winapp run: Gebruik create-debug-identity wanneer de exe losstaat van uw app-code (bijvoorbeeld Electron-apps waarin electron.exe zich bevindt node_modules), of wanneer specifiek het gedrag van het sparse-pakket wordt getest. Voor de meeste frameworks waarin de exe zich in uw build-uitvoermap bevindt, gebruikt winapp run u in plaats daarvan: het registreert een volledig losse lay-outpakket en start de app. Zie de handleiding voor foutopsporing voor een volledige vergelijking.

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

Argumenten:

  • entrypoint - Pad naar uitvoerbaar bestand (.exe) of script dat identiteit nodig heeft

Opties:

  • --manifest <path> - Pad naar het manifestbestand van de app of Package.appxmanifestappxmanifest.xml (standaard: automatisch detecteren Package.appxmanifest of appxmanifest.xml in de huidige map)
  • --no-install - Installeer het pakket niet na het maken
  • --keep-identity- Houd de manifestidentiteit as-is, zonder toe te voegen aan de pakketnaam en toepassings-id .debug

Wat het doet:

  • Wijzigt het side-by-side manifest van het uitvoerbare bestand
  • Sparse-pakket voor identiteit registreren
  • Hiermee schakelt u de foutopsporing in voor API's waarvoor identiteit nodig is

Voorbeelden:

# 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

# Create identity for hosted app script
winapp create-debug-identity app.py

manifesteren

Genereer en beheer Package.appxmanifest-bestanden.

manifest genereren

Genereer Package.appxmanifest op basis van sjablonen.

winapp manifest generate [directory] [options]

Argumenten:

  • directory - Map voor het genereren van manifest in (standaard: huidige map)

Opties:

  • --package-name <name> - Pakketnaam (standaard: mapnaam)
  • --publisher-name <name>- Publisher DN-naam (standaard: CN=<huidige gebruiker>). Accepteert elke geldige X.500 DN; Lege namen worden automatisch verpakt als CN=<name>.
  • --version <version> - Versie (standaard: "1.0.0.0")
  • --description <text> - Beschrijving (standaard: "Mijn toepassing")
  • --entrypoint <path> - Uitvoerbare invoerpunt of script
  • --template <type> - Sjabloontype: packaged (standaard) of sparse
  • --logo-path <path> - Pad naar logoafbeeldingsbestand
  • --if-exists <Error|Overwrite|Skip> - Gedrag wanneer het manifestbestand al bestaat op het doelpad (standaard: Error)

Sjablonen:

Plaatsaanduidingen van het manifest

Gegenereerde manifesten gebruiken $placeholder$ tokens (door dollartekens gescheiden) die automatisch worden omgezet tijdens het verpakken:

Plaatsaanduiding Opgelost in Voorbeeld
$targetnametoken$ Uitvoerbare naam zonder extensie Executable="$targetnametoken$.exe"Executable="MyApp.exe"
$targetentrypoint$ Windows.FullTrustApplication Altijd automatisch opgelost

Dit volgt dezelfde conventie die wordt gebruikt door Visual Studio projectsjablonen, zodat manifesten overdraagbaar zijn in verschillende hulpprogramma's.

Hoe tijdelijke aanduidingen worden omgezet:

  • winapp pack — Tijdens het verpakken wordt $targetnametoken$ opgelost met behulp van de --executable optie of door de single .exe in de invoermap automatisch te detecteren. Als er meerdere (of nul) .exe bestanden worden gevonden en --executable niet is opgegeven, wordt er een fout weergegeven.
  • winapp create-debug-identity — Wanneer er een invoerpuntargument wordt opgegeven, $targetnametoken$ wordt dit opgelost. Zonder invoerpunt moet de tijdelijke aanduiding voor uitvoerbare bestanden al in het manifest worden omgezet.
  • winapp manifest generate --executable— Wanneer --executable deze is opgegeven, worden manifestmetagegevens (versie, beschrijving) en pictogrammen geëxtraheerd uit het uitvoerbare bestand, maar het gegenereerde manifest gebruikt nog steeds$targetnametoken$.exe; deze tijdelijke aanduiding wordt later omgezet (bijvoorbeeld winapp pack ).winapp create-debug-identity

PS:$targetnametoken$ in het ingecheckte manifest vermijdt hardcodering uitvoerbare namen en werkt met zowel winapp pack als Visual Studio builds.

Voorbeelden:

# 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 add-alias

Voeg een uitvoeringsalias (uap5:AppExecutionAlias) toe aan een Package.appxmanifest. Hierdoor kan de verpakte app vanaf de opdrachtregel worden gestart door de aliasnaam te typen.

winapp manifest add-alias [options]

Opties:

  • --name <alias> - Aliasnaam (bijvoorbeeld myapp.exe). Standaard: afgeleid van het Executable kenmerk in het manifest.
  • --manifest <path> - Pad naar Package.appxmanifest (standaard: zoeken in huidige map)
  • --app-id <id> - Toepassings-id waaraan de alias moet worden toegevoegd (standaard: eerste toepassingselement)

Wat het doet:

  • Leest het manifest en afgeleid de alias van het Executable kenmerk (met behoud van tijdelijke aanduidingen zoals $targetnametoken$.exe)
  • Voegt de uap5 naamruimtedeclaratie toe als deze nog niet aanwezig is
  • Voegt een <Extensions> blok toe met <uap5:AppExecutionAlias> binnen het doeltoepassingselement
  • Als de alias al bestaat, rapporteert u deze en sluit u deze af

Voorbeelden:

# Add alias inferred from Executable attribute (e.g. $targetnametoken$.exe)
winapp manifest add-alias

# Add alias with explicit name
winapp manifest add-alias --name myapp.exe

# Add alias to specific manifest
winapp manifest add-alias --manifest ./dist/Package.appxmanifest

manifest bijwerken-assets

Genereer alle vereiste MSIX-afbeeldingsbronnen van één bronafbeelding.

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

Argumenten:

  • image-path - Pad naar bronafbeeldingsbestand (PNG, JPG, SVG, ICO, GIF, BMP, enzovoort)

Opties:

  • --manifest <path> - Pad naar package.appxmanifest-bestand (standaard: zoeken in huidige map)
  • --light-image <path> - Pad naar een afzonderlijke bronafbeelding voor lichte themavarianten

Description:

Maakt één broninstallatiekopieën en genereert een uitgebreide set MSIX-installatiekopieën op basis van de assetverwijzingen van het manifest:

Voor elke asset waarnaar wordt verwezen in het manifest:

  • 5 schaalvarianten — grondtal (geen achtervoegsel), .scale-125, , .scale-150.scale-200.scale-400

Voor het app-pictogram (Square44x44Logo/AppList, 44×44 basis):

  • 14 vergulde doelvarianten.targetsize-{16,20,24,30,32,36,40,48,60,64,72,80,96,256}
  • 14 niet-geplated doelen maken varianten.targetsize-{size}_altform-unplated

Additionally:

  • app.ico — ICO-bestand met meerdere resolutie (16, 24, 32, 48, 256) voor shell-integratie. Als een bestaand .ico bestand wordt gevonden in de map assets (bijvoorbeeld AppIcon.ico van een projectsjabloon), wordt het in-place vervangen in plaats van een duplicaat te maken

Met --light-image:

  • Lichte thema's zijn gericht op varianten.targetsize-{size}_altform-lightunplated (app-pictogram)
  • Lichte themaschaalvarianten.scale-{factor}_altform-colorful_theme-light (tegels, winkellogo)

SVG-ondersteuning: SVG-bestanden worden volledig ondersteund als bronafbeeldingen. Ze worden weergegeven als vectoren rechtstreeks bij elke doelgrootte, waardoor pixelperfecte resultaten bij alle resoluties worden geproduceerd.

Met de opdracht worden afbeeldingen proportioneel geschaald terwijl de hoogte-breedteverhouding behouden blijft, waarbij ze worden gecentreerd met transparante achtergronden wanneer dat nodig is. Assets worden opgeslagen in de Assets map relatief aan de manifestlocatie.

Voorbeelden:

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

# Use an SVG source for best quality at all sizes
winapp manifest update-assets mylogo.svg

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

# Generate light theme variants from a separate image
winapp manifest update-assets mylogo.png --light-image mylogo-light.png

# Use the same image for both (generates all MRT light theme qualifiers)
winapp manifest update-assets mylogo.png --light-image mylogo.png

# With verbose output
winapp manifest update-assets mylogo.png --verbose

run

Maak een los indelingspakket op basis van een build-uitvoermap, registreer het bij Windows met behulp van de Windows.Management.Deployment.PackageManager-API en start de toepassing, waarbij een volledige MSIX-installatie voor foutopsporing wordtged. Retourneert de proces-id voor foutopsporingsprogrammabijlage.

Dit is de voorkeursopdracht voor foutopsporing met pakketidentiteit voor de meeste frameworks (.NET, C++, Rust, Flutter, Tauri). In tegenstelling tot create-debug-identity welke een sparse-pakket voor één exe wordt geregistreerd, winapp run registreert u de hele map als een losse indelingspakket, net als een echte MSIX-installatie. Zie de handleiding voor foutopsporing voor veelvoorkomende foutopsporingswerkstromen.

winapp run <input-folder> [options]

Argumenten:

  • input-folder - Map met de app die moet worden uitgevoerd (vereist)

Opties:

  • --manifest <path> - Pad naar Package.appxmanifest (standaard: automatisch detecteren uit invoermap of huidige map)
  • --output-appx-directory <path> - Uitvoermap voor het losse indelingspakket (standaard: AppX in de map invoermap)
  • --args <string> - Opdrachtregelargumenten die moeten worden doorgegeven aan de toepassing. U kunt ook gevolgd door argumenten gebruiken -- om escapen te voorkomen (bijvoorbeeld winapp run . -- --flag value).
  • --no-launch - Maak alleen de foutopsporingsidentiteit en registreer het pakket zonder de toepassing te starten
  • --with-alias - Start de app met behulp van de uitvoeringsalias in plaats van AUMID-activering. De app wordt uitgevoerd in de huidige terminal met overgenomen stdin/stdout/stderr. Vereist een uap5:ExecutionAlias in het manifest (gebruik winapp manifest add-alias om er een toe te voegen). Kan niet worden gecombineerd met --no-launch. Kan niet worden gecombineerd met --json.
  • --debug-output - Leg OutputDebugString berichten en uitzonderingen voor de eerste kans vast van de gestarte toepassing. Frameworkruis (WinUI, COM, DirectX) wordt gefilterd vanuit console-uitvoer; het volledige logboekbestand legt alles vast. Als de app vastloopt, wordt er automatisch een minidump vastgelegd en geanalyseerd om het uitzonderingstype, bericht en stacktracering weer te geven met bronbestand:regelnummers (omgezet vanuit PDBs in de build-uitvoermap). Beheerde (.NET) crashes worden direct geanalyseerd zonder externe hulpprogramma's. Systeemeigen (C++/WinRT) crashes tonen modulenamen en offsets. Wanneer de vastgelopen app een WinUI 3-app is (Microsoft.UI.Xaml.dll wordt geladen), wordt er automatisch een extra triage-uitzonderingspas uitgevoerd om de oorspronkelijke HRESULT, de Bijbehorende ErrorContext-keten en de volledige systeemeigen XAML-verzendstack weer te geven. De vereiste foutopsporingsprogrammaonderdelen worden gedownload bij eerste gebruik (zie Foutopsporing, overschrijfbaar via de WINAPP_DBGTOOLS_DIR omgevingsvariabele). Slechts één foutopsporingsprogramma kan tegelijk worden gekoppeld aan een proces, dus andere foutopsporingsprogramma's (Visual Studio, VS Code) kunnen niet tegelijkertijd worden gebruikt. Gebruik --no-launch in plaats daarvan als u een ander foutopsporingsprogramma moet koppelen. Kan niet worden gecombineerd met --no-launch. Kan niet worden gecombineerd met --json.
  • --symbols : download PDB-symbolen van Microsoft Symboolserver voor uitgebreidere systeemeigen crashanalyse met opgeloste functienamen. Alleen gebruikt met --debug-output. Als u dit weglaat en er een systeemeigen crash optreedt, wordt in de uitvoer voorgesteld deze vlag toe te voegen. Deze vlag verbetert ook de WinUI stowed-exception triage stack voor WinUI 3-apps. Eerst worden symbolen gedownload en lokaal in de cache opgeslagen; volgende uitvoeringen maken gebruik van de cache.
  • --unregister-on-exit - De registratie van het ontwikkelpakket ongedaan maken nadat de toepassing is afgesloten. Verwijdert alleen pakketten die zijn geregistreerd in de ontwikkelingsmodus. Kan niet worden gecombineerd met --no-launch.
  • --detach - Start de toepassing en keer onmiddellijk terug zonder te wachten tot deze is afgesloten. Handig voor CI/automation waar u na het starten met de app moet communiceren. Hiermee drukt u de PID af op stdout (of in JSON met --json). Kan niet worden gecombineerd met --no-launch, --debug-outputof --with-alias--unregister-on-exit.
  • --clean - Verwijder de toepassingsgegevens van het bestaande pakket (LocalState, instellingen, enzovoort) voordat u het opnieuw implementeert. Toepassingsgegevens blijven standaard behouden bij herimplementaties.
  • --json - Uitvoer opmaken als JSON voor programmatisch verbruik (bijvoorbeeld CI/automation). Handig om --detach de PID vast te leggen. Kan niet worden gecombineerd met --with-alias of --debug-output.

Persistentie van toepassingsgegevens:

Behoudt standaard winapp run de gegevens van uw toepassing (LocalState, RoamingState, Settingsenzovoort) bij het opnieuw implementeren. Als uw app gegevens naar ApplicationData.Current.LocalFolder of Environment.GetFolderPath(SpecialFolder.LocalApplicationData) binnen de pakketcontext schrijft, blijven die gegevens behouden tijdens winapp run aanroepen.

Gebruik --clean dit wanneer u een nieuwe start nodig hebt (bijvoorbeeld om beschadigde status opnieuw in te stellen of het gedrag van de eerste uitvoering te testen).

Wat het doet:

  • Zoekt of genereert het Package.appxmanifest
  • Hiermee maakt en registreert u een foutopsporingsidentiteit met behulp van een los indelingspakket
  • Berekent de model-id van de toepassingsgebruiker (AUMID)
  • Start de toepassing met behulp van de geregistreerde identiteit (tenzij --no-launch opgegeven)
  • De proces-id (PID) afdrukken voor foutopsporingsprogrammabijlage

Voorbeelden:

# Register debug identity and launch app from build output
winapp run ./bin/Debug

# Launch with custom manifest and arguments
winapp run ./dist --manifest ./out/Package.appxmanifest --args "--my-flag value"

# Pass arguments after -- to avoid escaping (equivalent to --args)
winapp run ./bin/Debug -- --my-flag value

# Specify output directory for loose layout package
winapp run ./bin/Release --output-appx-directory ./AppXDebug

# Register identity without launching
winapp run ./bin/Debug --no-launch

# Launch via execution alias (console apps run in current terminal)
winapp run ./bin/Debug --with-alias

# Launch and capture OutputDebugString messages and crash diagnostics
winapp run ./bin/Debug --debug-output

# Download native symbols for richer crash analysis (C++/WinRT crashes)
winapp run ./bin/Debug --debug-output --symbols

# Combine with execution alias to debug console apps inline
winapp run ./bin/Debug --with-alias --debug-output

# Run and automatically clean up registration on exit
winapp run ./bin/Debug --with-alias --unregister-on-exit

# Launch and detach immediately (useful for CI/automation)
winapp run ./bin/Debug --detach

# Detach with JSON output (returns PID for scripting)
winapp run ./bin/Debug --detach --json

# Wipe application data (LocalState, settings) and start fresh
winapp run ./bin/Debug --clean

MSBuild-eigenschappen (NuGet-pakket):

Wanneer u het NuGet-pakket Microsoft.Windows.SDK.BuildTools.WinApp gebruikt, roept dotnet run automatisch winapp run aan. De volgende MSBuild-eigenschappen kunnen worden ingesteld in uw .csproj om gedrag te beheren:

Property Verstek Beschrijving
EnableWinAppRunSupport true De functionaliteit van de run-ondersteuning in- of uitschakelen
WinAppLaunchArgs (leeg) Argumenten die moeten worden doorgegeven aan de app bij het starten
WinAppRunUseExecutionAlias false Starten via uitvoeringsalias in plaats van AUMID-activering
WinAppRunNoLaunch false Alleen identiteit registreren zonder te starten
WinAppRunDebugOutput false Berichten en uitzonderingen voor de eerste kans vastleggen OutputDebugString . Er kan slechts één foutopsporingsprogramma tegelijk worden gekoppeld (voorkomt VS/VS Code). Gebruik WinAppRunNoLaunch in plaats daarvan om een ander foutopsporingsprogramma toe te voegen.
<PropertyGroup>
  <WinAppRunUseExecutionAlias>true</WinAppRunUseExecutionAlias>
  <WinAppRunDebugOutput>true</WinAppRunDebugOutput>
</PropertyGroup>

Unregister

Registratie van een sideloaded ontwikkelingspakket ongedaan maken. Verwijdert alleen pakketten die zijn geregistreerd in de ontwikkelingsmodus (bijvoorbeeld via winapp run of create-debug-identity). Op de store geïnstalleerde of MSIX-geïnstalleerde pakketten worden nooit verwijderd.

winapp unregister [options]

Opties:

  • --manifest <path> - Pad naar Package.appxmanifest (standaard: automatisch detecteren vanuit de huidige map)
  • --force - Sla de installatielocatiemapcontrole over en hef de registratie op, zelfs als het pakket is geregistreerd vanuit een andere projectstructuur
  • --json - Uitvoer opmaken als JSON

Wat het doet:

  • Leest de pakketnaam uit het manifest
  • Zoekt naar zowel {name}{name}.debug pakketten als pakketten (de foutopsporingsvariant wordt gemaakt door create-debug-identity)
  • Controleert of elk pakket is geregistreerd in de ontwikkelingsmodus (IsDevelopmentMode == true)
  • Controleert of de installatielocatie van het pakket zich onder de huidige mapstructuur bevindt (tenzij --force)
  • Registratie van overeenkomende pakketten ongedaan maken

Voorbeelden:

# Unregister from current directory (auto-detects manifest)
winapp unregister

# Unregister with explicit manifest
winapp unregister --manifest ./Package.appxmanifest

# Force unregister even if registered from a different project tree
winapp unregister --force

# JSON output for scripting
winapp unregister --json

cert

Ontwikkelingscertificaten genereren, inspecteren en installeren.

certificaat genereren

Ontwikkelcertificaten genereren voor pakketondertekening.

winapp cert generate [options]

Opties:

  • --manifest <Package.appxmanifest> - Uitgeversinformatie extraheren uit Package.appxmanifest
  • --publisher <name>- Publisher voor het certificaat. Accepteert een volledige X.500 DN-naam (bijvoorbeeld CN=Contoso, O=Contoso Ltd, C=US) of een lege naam die automatisch wordt verpakt als CN=<name>
  • --output <path> - Pad naar uitvoercertificaatbestand (ondersteunt absolute en relatieve paden)
  • --password <password> - Certificaatwachtwoord (standaard: 'wachtwoord')
  • --valid-days <valid-days> - Aantal dagen dat het certificaat geldig is (standaard: 365)
  • --install - Het certificaat na het genereren installeren in het lokale computerarchief
  • --if-exists <Error|Overwrite|Skip> - Gedrag instellen als het certificaatbestand al bestaat (standaard: fout)
  • --export-cer - Exporteer een .cer bestand (alleen openbare sleutel) naast de .pfx. Handig voor het afzonderlijk distribueren van het openbare certificaat voor de installatie van vertrouwensrelaties.
  • --json - Uitvoer opmaken als JSON voor programmatisch verbruik. Fouten worden ook geretourneerd als JSON ({"error": "..."}).

certificaatgegevens

Geef certificaatdetails van een PFX-bestand weer. Handig om te controleren of een certificaat overeenkomt met uw manifest voordat u zich ondertekent.

winapp cert info <cert-path> [options]

Argumenten:

  • cert-path - Pad naar het certificaatbestand (PFX)

Opties:

  • --password <password> - Wachtwoord voor het PFX-bestand (standaard: 'wachtwoord')
  • --json - Uitvoer opmaken als JSON

certificaat installeren

Installeer het certificaat in de certificaatopslag van de machine.

winapp cert install <cert-path> [options]

Argumenten:

  • cert-path - Pad naar certificaatbestand dat moet worden geïnstalleerd

Voorbeelden:

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

# Generate certificate and export public key .cer file
winapp cert generate --publisher "CN=My Company" --export-cer

# Generate certificate with JSON output (for scripting)
winapp cert generate --publisher "CN=My Company" --json

# View certificate details
winapp cert info ./mycert.pfx

# View certificate details as JSON
winapp cert info ./mycert.pfx --json

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

teken

Onderteken MSIX-pakketten en uitvoerbare bestanden met certificaten.

winapp sign <file-path> [options]

Argumenten:

  • file-path - Pad naar MSIX-pakket of uitvoerbaar bestand om te ondertekenen

Opties:

  • --cert <path> - Pad naar handtekeningcertificaat
  • --cert-password <password> - Certificaatwachtwoord (standaard: 'wachtwoord')

Voorbeelden:

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

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

create-external-catalog

Genereer een CodeIntegrityExternal.cat catalogusbestand met hashes van uitvoerbare bestanden uit opgegeven mappen. Deze catalogus wordt gebruikt met de vlag TrustedLaunch in MSIX sparse-pakketmanifesten (AllowExternalContent) om uitvoering van externe bestanden toe te staan die niet zijn opgenomen in het pakket zelf.

Dit is vergelijkbaar met hoe signtool.exe er wordt gemaakt AppxMetadata\CodeIntegrity.cat bij het ondertekenen van een MSIX-pakket, maar er wordt een externe catalogus gegenereerd voor gebruik met sparse/externe locatieverpakkingen.

winapp create-external-catalog <input-folder> [options]

Argumenten:

  • input-folder - Een of meer mappen met uitvoerbare bestanden die moeten worden verwerkt. Meerdere mappen scheiden met puntkomma's (bijvoorbeeld "dir1;dir2")

Opties:

  • --recursive, -r - Bestanden uit submappen opnemen
  • --use-page-hashes - Pagina-hashes opnemen bij het genereren van de catalogus (produceert een grotere catalogus met hashgegevens per pagina)
  • --compute-flat-hashes - Platte bestands-hashes opnemen bij het genereren van de catalogus
  • --if-exists <Error|Overwrite|Skip> - Gedrag wanneer het uitvoerbestand al bestaat (standaard: Error)
  • --output, -o - Pad naar uitvoercatalogusbestand. Als dit niet is opgegeven, CodeIntegrityExternal.cat wordt deze gemaakt in de huidige map. Als er een map is opgegeven, wordt de standaardbestandsnaam toegevoegd.

Wat het doet:

  • Scant opgegeven mappen voor uitvoerbare bestanden (BINAIRE PE-bestanden met codesecties)
  • Genereert een CATALOG Definition File (CDF) met hashes van alle gevonden uitvoerbare bestanden
  • Maakt gebruik van Windows CryptoCAT-API's om het .cat-catalogusbestand te produceren
  • Niet-uitvoerbare bestanden (bijvoorbeeld .txt, .dll zonder codesecties) worden automatisch overgeslagen

Voorbeelden:

# Generate catalog for all executables in a directory
winapp create-external-catalog ./bin

# Include files in subdirectories
winapp create-external-catalog ./bin --recursive

# Specify a custom output path
winapp create-external-catalog ./bin --output ./dist/CodeIntegrityExternal.cat

# Overwrite existing catalog
winapp create-external-catalog ./bin --if-exists Overwrite

# Skip generation if catalog already exists
winapp create-external-catalog ./bin --if-exists Skip

# Include page hashes (for stricter code integrity validation)
winapp create-external-catalog ./bin --use-page-hashes

# Process multiple directories
winapp create-external-catalog "./bin;./lib" --recursive

# Combine multiple options
winapp create-external-catalog ./bin --recursive --use-page-hashes --compute-flat-hashes --output ./dist/CodeIntegrityExternal.cat --if-exists Overwrite

Wanneer te gebruiken:

Gebruik deze opdracht bij het bouwen van een sparse MSIX-pakket dat TrustedLaunch gebruikt om externe uitvoerbare bestanden te verifiëren. De gebruikelijke werkstroom is:

  1. winapp manifest generate --template sparse — Een sparse-manifest maken met AllowExternalContent
  2. winapp create-external-catalog ./bin — Genereer de code-integriteitscatalogus voor de uitvoerbare bestanden van uw app
  3. winapp pack — Het manifest, de assets en de catalogus verpakken in een MSIX

werktuig

Toegang tot Windows SDK-hulpprogramma's rechtstreeks. Maakt gebruik van hulpprogramma's die beschikbaar zijn in Microsoft.Windows. SDK. BuildTools

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

Beschikbare hulpprogramma's:

  • makeappx - App-pakketten maken en bewerken
  • signtool - Bestanden ondertekenen en handtekeningen verifiëren
  • mt - Manifesthulpprogramma voor assembly's naast elkaar
  • En andere Windows SDK-hulpprogramma's van Microsoft.Windows. SDK. BuildTools

Voorbeelden:

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

store

Voer een Microsoft Store Developer CLI-opdracht uit. Met deze opdracht wordt de Microsoft Store Developer CLI gedownload als deze nog niet is gedownload. Meer informatie over de Microsoft Store Developer CLI.

winapp store [args...]

Argumenten:

  • args... – Argumenten die rechtstreeks aan de msstore CLI moeten worden doorgegeven. Zie de MSStore CLI-documentatie voor beschikbare opdrachten en opties.

Wat het doet:

  • Zorgt ervoor dat de Microsoft Store Developer CLI (msstore) is gedownload en beschikbaar is op uw systeem.
  • Alle argumenten doorsturen naar de msstore CLI.
  • Hiermee wordt de opdracht uitgevoerd met uitvoer rechtstreeks in uw terminal.

Voorbeelden:

# 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

Paden ophalen naar geïnstalleerde Windows SDK-onderdelen.

winapp get-winapp-path [options]

Wat wordt geretourneerd:

  • Paden naar .winapp werkruimtemap
  • Pakketinstallatiemappen
  • Gegenereerde headerlocaties

knooppunt genereren-bindingen

(Alleen beschikbaar in NPM-pakket) JS-bindingen genereren voor Windows App SDK API's. De bindingen worden gedeclareerd door een "winapp": { "jsBindings": {...} } naamruimte in package.json en geschreven naar .winapp/bindings/.

npx winapp node generate-bindings [options]

Opties:

  • --verbose, -v - Uitgebreide uitvoer per bestand codegen inschakelen
  • --quiet, -q - Voortgang en informatieve uitvoer onderdrukken

Wat het doet:

  • Leest het winapp.jsBindings blok van package.json en de winmds.lock.json geschreven door de laatste winapp restore, en verzendt vervolgens getypte .js + .d.ts bindingen naar .winapp/bindings/
  • Wijzigt nietpackage.json - het is een passieve regenerator. Het toevoegen van het winapp.jsBindings blok en de @microsoft/dynwinrt runtime-afhankelijkheid vindt plaats wanneer winapp init JS-bindingen zijn ingeschakeld. Deze opdracht mislukt snel als het blok afwezig is
  • Waarschuwt (maar schrijft niet) als @microsoft/dynwinrt deze ontbreekt in uw afhankelijkheden. Voer deze uit npm install nadat init deze is toegevoegd

Opmerking

Bindingen zijn alleen npm- ze vereisen aanroepen via npx winapp (het npm-pakket); de @microsoft/winappcli zelfstandige winget CLI maakt ze niet zichtbaar. Voer interactief uit winapp init en meld u aan voordat u deze opdracht gebruikt winapp init . --use-defaults --add-js-bindingsom bindingen opnieuw te genereren. Als u bewerktwinapp.yaml, voert u de opdracht uit npx winapp restore om Windows afhankelijkheden te vernieuwen voordat u opnieuw gaat genereren.

Voorbeelden:

# Regenerate JS bindings in the current project
npx winapp node generate-bindings

# Regenerate after editing winapp.jsBindings, with verbose output
npx winapp node generate-bindings --verbose

Zie de handleiding voor JS-bindingen voor de end-to-end-werkstroom en de winapp.jsBindings configuratieopties.


node uitbreiding-aanmaken

(alleen beschikbaar in NPM-pakket) Systeemeigen C++ of C#-invoegtoepassingssjablonen genereren met Windows SDK en Windows App SDK-integratie.

npx winapp node create-addon [options]

Opties:

  • --name <name> - Naam van invoegtoepassing (standaard: "nativeWindowsAddon")
  • --template - Selecteer het type invoegtoepassing. Opties zijn cs of cpp (standaard: cpp)
  • --verbose - Uitgebreide uitvoer inschakelen

Wat het doet:

  • Maakt een map voor invoegtoepassingen met sjabloonbestanden
  • Genereert binding.gyp en addon.cc met Windows SDK-voorbeelden
  • Installeert vereiste npm-afhankelijkheden (nan, node-addon-api, node-gyp)
  • Hiermee voegt u een buildscript toe aan package.json

Voorbeelden:

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

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

knooppunt add-electron-debug-identity

(Alleen beschikbaar in NPM-pakket) Voeg app-identiteit toe aan het Electron-ontwikkelingsproces met behulp van sparse-pakketten. Vereist een Package.appxmanifest (maak er een met winapp init of winapp manifest generate als u er nog geen hebt).

Belangrijk

Er is een bekend probleem met sparse packaging Electron-toepassingen die ervoor zorgen dat de app vastloopt bij het starten of niet genereren van de webinhoud. Het probleem is opgelost in Windows, maar het is nog niet doorgegeven aan externe Windows apparaten. Als u dit probleem ziet na het aanroepen add-electron-debug-identity, kunt u sandboxing in uw Electron-app uitschakelen voor foutopsporingsdoeleinden met de --no-sandbox vlag. Dit probleem heeft geen invloed op volledige MSIX-pakketten.

Als u de Electron-foutopsporingsidentiteit ongedaan wilt maken, gebruikt u winapp node clear-electron-debug-identity.

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

Opties:

Option Beschrijving
--manifest <path> Pad naar aangepast Package.appxmanifest (standaard: Package.appxmanifest in de huidige map)
--no-install Installeer of wijzig geen afhankelijkheden; alleen de Electron-foutopsporingsidentiteit configureren
--keep-identity Houd de manifestidentiteit zoals het is, zonder .debug toe te voegen aan de pakketnaam en toepassings-ID.
--verbose Uitgebreide uitvoer inschakelen

Wat het doet:

  • Registreert foutopsporingsidentiteit voor electron.exe proces
  • Maakt het testen van identiteits-vereiste API's in Electron-ontwikkeling mogelijk
  • Maakt gebruik van bestaand Package.appxmanifest voor identiteitsconfiguratie

Voorbeelden:

# 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/Package.appxmanifest

knooppunt clear-electron-debug-identity

(Alleen beschikbaar in NPM-pakket) Verwijder pakketidentiteit uit het electron-foutopsporingsproces door de oorspronkelijke electron.exe te herstellen uit de back-up.

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

Opties:

Option Beschrijving
--verbose Uitgebreide uitvoer inschakelen

Wat het doet:

  • Herstelt electron.exe van de back-up die is gemaakt door add-electron-debug-identity
  • Verwijdert de back-upbestanden na herstel
  • Retourneert Electron naar de oorspronkelijke staat zonder pakketidentiteit

Voorbeelden:

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

Algemene opties

Alle opdrachten ondersteunen deze algemene opties:

  • --verbose, -v - Uitgebreide uitvoer inschakelen voor gedetailleerde logboekregistratie
  • --quiet, -q - Voortgangsberichten onderdrukken
  • --help, -h - Help voor opdrachten weergeven

Globale cachemap

Winapp maakt een map voor het opslaan van bestanden die kunnen worden gedeeld tussen meerdere projecten.

Winapp maakt standaard een map op $UserProfile/.winapp als de globale cachemap.

Als u een andere locatie wilt gebruiken, stelt u de WINAPP_CLI_CACHE_DIRECTORY omgevingsvariabele in.

In cmd:

REM Set a custom location for winapp's global cache
set WINAPP_CLI_CACHE_DIRECTORY=d:\temp\.winapp

In PowerShell en pwsh:

# Set a custom location for winapp's global cache
$env:WINAPP_CLI_CACHE_DIRECTORY=d:\temp\.winapp

Winapp maakt deze map automatisch wanneer u opdrachten uitvoert zoals init of restore.

Updatecontroles

De winapp CLI controleert regelmatig op nieuwe versies en geeft een melding van één regel weer wanneer er een update beschikbaar is. Deze controle wordt op de achtergrond uitgevoerd en voegt geen latentie toe aan opdrachten.

Updatecontroles worden automatisch uitgeschakeld in CI-omgevingen (GitHub Actions, Azure-pipelines, enzovoort).

Als u updatecontroles handmatig wilt uitschakelen, stelt u de WINAPP_CLI_UPDATE_CHECK omgevingsvariabele in op 0.

In cmd:

set WINAPP_CLI_UPDATE_CHECK=0

In PowerShell en pwsh:

$env:WINAPP_CLI_UPDATE_CHECK = "0"

Ga als volgt te werk om dit permanent te maken:

[System.Environment]::SetEnvironmentVariable('WINAPP_CLI_UPDATE_CHECK', '0', 'User')

gebruikersinterface

Inspecteer en communiceer met het uitvoeren van Windows app-API's met behulp van UI Automation (UIA).

winapp ui [command] [options]

Opdrachten:

  • status - Verbinding maken met app en informatie weergeven
  • inspect - Elementstructuur weergeven
  • search - Elementen zoeken op selector
  • get-property - Eigenschappen van element lezen
  • get-text / get-value - Waarde/tekst lezen van element (TextPattern, ValuePattern of Name)
  • screenshot - Venster/element vastleggen als PNG (dialoogvensters voor automatisch vastleggen afzonderlijk)
  • record- Neem een venster-/elementregio op naar een H.264 MP4-video (Windows Graphics Capture + Media Foundation)
  • invoke - Element activeren (klik, wisselknop, uitvouwen)
  • click - Klik op element via muissimulatie (voor besturingselementen die geen ondersteuning bieden voor aanroepen)
  • hover - Beweeg de muis naar het element om knopinfo, flyouts en aanwijsstatussen te activeren (standaardbewoner: 800 ms)
  • drag - Sleep de muis van het ene punt naar het andere, op elementkiezer of schermcoördinaten x,y (de volgorde wijzigen, het formaat wijzigen, schuifregelaars, slepen en neerzetten)
  • touch- Synthetische aanraakbewegingen injecteren (tikken, dubbeltikken, lang drukken, swipen, knijpen, uitrekken) op een elementcentrum of schermcoördinaten x,y
  • pen - Injecteer synthetische pen-/stylusinvoer - tikken en pennenstreken met configureerbare druk-, kantelen- en gummodus
  • send-keys - Stuur synthetische toetsenbordinvoer (benoemde toetsen, combinaties, onbewerkt vk=0xNN of letterlijke tekst) naar een venster
  • set-value - Waarde instellen voor bewerkbaar element (tekst, getal); valt terug naar LegacyIAccessible put_accValue voor besturingselementen voor rich-edit van TextPattern
  • focus - Focus van toetsenbord verplaatsen
  • scroll-into-view - Schuifelement zichtbaar
  • wait-for - Wacht op elementstatus
  • list-windows - Alle vensters voor een app weergeven
  • get-focused - Het momenteel gerichte element rapporteren

Opties:

  • -a, --app <app> - Doel-app (naam, titel of PID)
  • -w, --window <hwnd> - Doelvenster door HWND (stabiel)

ui-record

Neem het doelvenster (of de regio van één element) op in een H.264 MP4-video. Frames worden vastgelegd via Windows Graphics Capture (met een PrintWindow-terugval) en incrementeel gecodeerd met Media Foundation, zodat lange opnamen nooit bufferen in het geheugen.

# Record a window for 10 seconds at 15 fps
winapp ui record -a Calculator --duration-sec 10 --fps 15 -o demo.mp4

# Record until Ctrl+C, downscaled so the longest edge is 1280px
winapp ui record -a "My App" --duration-sec 0 --max-edge 1280 -o capture.mp4

# Record just one element's region
winapp ui record -a "My App" btn-save-1234 -o button.mp4

Recordopties:

  • --duration-sec <n> - Opnamelengte in seconden. 0 records tot Ctrl+C (standaard 0).
  • --fps <n> - Frames per seconde om vast te leggen (standaard 15).
  • --max-edge <px> - Omlaag schalen zodat de langste rand maximaal zoveel pixels (0 = geen downscale) is.
  • --capture-screen - Vastleggen vanaf het scherm, zodat overlays/pop-ups zijn opgenomen (kan occluding vensters vastleggen).
  • -o, --output <path> - Uitvoerpad .mp4 (standaard ingesteld recording-<timestamp>-<guid>.mp4op).

Met --json, verzendt een UiRecordResult envelop met inbegrip van de uitvoer path, frames, width, , height, fileSize(codec"h264"), en mode — het opnamepad daadwerkelijk gebruikt (wgc, printwindowof screen).

Bekende beperking: het opnemen van een specifiek element in een pop-up die wordt weergegeven in een eigen venster op het hoogste niveau (WinUI/XAML flyout, onderwijstip, knopinfo) kan in plaats daarvan het onderliggende hoofdvenster vastleggen. Noteer het hele venster of gebruik ui screenshot --capture-screen deze voor pop-up stills. Bijgehouden in #646.

Zie docs/ui-automation.md voor volledige documentatie.