Notitie
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen u aan te melden of de directory te wijzigen.
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen de mappen te wijzigen.
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) - Toevoegenwinapp.jsBindingsaan package.json en JS-/TypeScript-bindingen genereren, zonder te vragen (niet compatibel met--setup-sdks none)
Wat het doet:
- Hiermee maakt u
winapp.yamleen 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.jsonmetelectronin afhankelijkheden of devDependencies -
Flutter -
pubspec.yamlin de hoofdmap van het project -
.NET -
.csprojin de hoofdmap van het project -
Rust —
Cargo.tomlin de hoofdmap van het project -
C++ -
CMakeLists.txtin 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 .ofwinapp init path/to/project), wordt de zoekopdracht overgeslagen eninitwordt alleen die map voor een compatibel project gecontroleerd - Als
--use-defaults(of--no-prompt) is ingesteld zonder een mapargument,initslaat u de zoekopdracht over en initialiseert u de huidige map niet-interactief, waarschuwing eerst als er geen bekend projecttype wordt gedetecteerd (bijvoorbeeldwinapp init --use-defaults) - In niet-interactieve omgevingen (piped stdin, CI, omgeleide invoer),
initwordt automatisch gebruikgemaakt--use-defaultsvan gedrag en wordt een waarschuwing verzonden:Non-interactive environment detected. Using default values. - Als de huidige map een compatibel project is,
initgaat 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
TargetFrameworkbij naar een Windows compatibele TFM (bijvoorbeeldnet10.0-windows10.0.26100.0) - Voegt
Microsoft.WindowsAppSDKenMicrosoft.Windows.SDK.BuildToolsals NuGet-vermeldingenPackageReferencerechtstreeks toe in de.csproj - Genereert
Package.appxmanifest, assets en een ontwikkelingscertificaat - Maakt geen C++-projecties aan
winapp.yamlof downloadt ze (gebruikdotnet restorevoor 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.yamlconfiguratie - 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,experimentalofnone(sdk-installatie overslaan)
Wat het doet:
- Leest de bestaande
winapp.yamlconfiguratie in de huidige map - Alle pakketten bijwerken naar de nieuwste beschikbare versies
-
winapp.yamlHet 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.appxmanifestaanbevolen,appxmanifest.xmlook 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 alsCN=<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 dePackage.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:
- Als
--executabledit is opgegeven (pad ten opzichte van de invoermap), wordt de tijdelijke aanduiding vervangen door de opgegeven waarde -
winapp packAnders scant u de hoofdmap van de invoermap voor.exebestanden, als er precies één wordt gevonden, wordt deze automatisch gebruikt - Als er nul of meerdere
.exebestanden 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:
--manifest <path>— Indien opgegeven, wordt dit enkele manifest gebruikt voor alle segmenten. DeProcessorArchitecturefunctie wordt automatisch per segment bijgewerkt zodat deze overeenkomt met de gedetecteerde architectuur.Manifest per map : als elke invoermap een
Package.appxmanifest(ofappxmanifest.xml) bevat, wordt het manifest van die map gebruikt voor het segment.Huidige mapterugval : als een map geen manifest heeft, zoekt de opdracht naar
Package.appxmanifestin 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: Gebruikcreate-debug-identitywanneer de exe losstaat van uw app-code (bijvoorbeeld Electron-apps waarinelectron.exezich bevindtnode_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, gebruiktwinapp runu 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 ofPackage.appxmanifestappxmanifest.xml(standaard: automatisch detecterenPackage.appxmanifestofappxmanifest.xmlin 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) ofsparse -
--logo-path <path>- Pad naar logoafbeeldingsbestand -
--if-exists <Error|Overwrite|Skip>- Gedrag wanneer het manifestbestand al bestaat op het doelpad (standaard:Error)
Sjablonen:
-
packaged- Standaard verpakte app-manifest -
sparse- Appmanifest met behulp van spaarzame/externe locatieverpakking
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--executableoptie of door de single.exein de invoermap automatisch te detecteren. Als er meerdere (of nul).exebestanden worden gevonden en--executableniet 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--executabledeze 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 (bijvoorbeeldwinapp pack).winapp create-debug-identity
PS:
$targetnametoken$in het ingecheckte manifest vermijdt hardcodering uitvoerbare namen en werkt met zowelwinapp packals 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 (bijvoorbeeldmyapp.exe). Standaard: afgeleid van hetExecutablekenmerk 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
Executablekenmerk (met behoud van tijdelijke aanduidingen zoals$targetnametoken$.exe) - Voegt de
uap5naamruimtedeclaratie 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
.icobestand wordt gevonden in de map assets (bijvoorbeeldAppIcon.icovan 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-identitywelke een sparse-pakket voor één exe wordt geregistreerd,winapp runregistreert 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:AppXin de map invoermap) -
--args <string>- Opdrachtregelargumenten die moeten worden doorgegeven aan de toepassing. U kunt ook gevolgd door argumenten gebruiken--om escapen te voorkomen (bijvoorbeeldwinapp 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 eenuap5:ExecutionAliasin het manifest (gebruikwinapp manifest add-aliasom er een toe te voegen). Kan niet worden gecombineerd met--no-launch. Kan niet worden gecombineerd met--json. -
--debug-output- LegOutputDebugStringberichten 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.dllwordt 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 deWINAPP_DBGTOOLS_DIRomgevingsvariabele). 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-launchin 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--detachde PID vast te leggen. Kan niet worden gecombineerd met--with-aliasof--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-launchopgegeven) - 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}.debugpakketten als pakketten (de foutopsporingsvariant wordt gemaakt doorcreate-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 (bijvoorbeeldCN=Contoso, O=Contoso Ltd, C=US) of een lege naam die automatisch wordt verpakt alsCN=<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.cerbestand (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.catwordt 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,.dllzonder 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:
-
winapp manifest generate --template sparse— Een sparse-manifest maken metAllowExternalContent -
winapp create-external-catalog ./bin— Genereer de code-integriteitscatalogus voor de uitvoerbare bestanden van uw app -
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 demsstoreCLI 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
msstoreCLI. - 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
.winappwerkruimtemap - 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.jsBindingsblok vanpackage.jsonen dewinmds.lock.jsongeschreven door de laatstewinapp restore, en verzendt vervolgens getypte.js+.d.tsbindingen naar.winapp/bindings/ - Wijzigt niet
package.json- het is een passieve regenerator. Het toevoegen van hetwinapp.jsBindingsblok en de@microsoft/dynwinrtruntime-afhankelijkheid vindt plaats wanneerwinapp initJS-bindingen zijn ingeschakeld. Deze opdracht mislukt snel als het blok afwezig is - Waarschuwt (maar schrijft niet) als
@microsoft/dynwinrtdeze ontbreekt in uw afhankelijkheden. Voer deze uitnpm installnadatinitdeze 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.jsBindingsconfiguratieopties.
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 zijncsofcpp(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ördinatenx,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ördinatenx,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 LegacyIAccessibleput_accValuevoor 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.0records tot Ctrl+C (standaard0). -
--fps <n>- Frames per seconde om vast te leggen (standaard15). -
--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 ingesteldrecording-<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-screendeze voor pop-up stills. Bijgehouden in #646.
Zie docs/ui-automation.md voor volledige documentatie.
Windows developer