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
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
Automatische .NET-projectdetectie:
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 --setup-sdks none SDK hebt uitgevoerd init (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)
winapp pack <input-folder> [options]
Argumenten:
-
input-folder- Map met de toepassingsbestanden die moeten worden verpakt
Opties:
-
--output <filename>- Uitvoer MSIX-bestandsnaam (standaard:<name>_<version>_<arch>.msix, terugvallen op<name>_<version>.msix,<name>_<arch>.msixof<name>.msixwanneer versie/boog niet kan worden bepaald) -
--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 naam voor het genereren van certificaten -
--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 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 Executable kenmerk bevat$targetnametoken$:
- 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
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 CN (standaard: CN=<current user>) -
--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-200.scale-150.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. 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. 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 naam voor certificaat -
--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
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.
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) -
invoke- Element activeren (klik, wisselknop, uitvouwen) -
click- Klik op element via muissimulatie (voor besturingselementen die geen ondersteuning bieden voor aanroepen) -
set-value- Waarde instellen voor bewerkbaar element (tekst, getal) -
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)
Zie docs/ui-automation.md voor volledige documentatie.
Windows developer