Poznámka:
Přístup k této stránce vyžaduje autorizaci. Můžete se zkusit přihlásit nebo změnit adresáře.
Přístup k této stránce vyžaduje autorizaci. Můžete zkusit změnit adresáře.
Dokončování prostředí
Povolte dokončování tabulátoru pro příkazy, možnosti a hodnoty. Pokyny k nastavení najdete v průvodci dokončováním prostředí .
# 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
inicializace
Inicializace adresáře pomocí sady Windows SDK, Windows App SDK a požadovaných prostředků pro moderní vývoj pro Windows
winapp init [base-directory] [options]
argumenty :
-
base-directory– Základní/kořenový adresář pro aplikaci nebo pracovní prostor (výchozí: aktuální adresář)
Možnosti:
-
--config-dir <path>- Konfigurace pro čtení a ukládání adresáře (výchozí: aktuální adresář) -
--setup-sdks– Režim instalace sady SDK: stabilní (výchozí), Preview, experimentální nebo none (přeskočení instalace sady SDK) -
--ignore-config,--no-config– Nepoužívejte konfigurační soubor pro správu verzí -
--no-gitignore– Neaktualizovat soubor .gitignore -
--use-defaults,--no-prompt– Nevybídejte výzvu a použijte výchozí nastavení všech výzev. -
--config-only- Zpracování pouze operací konfiguračního souboru, přeskočení instalace balíčku -
--exe <path>– Cesta ke spustitelnému souboru aplikace. Vyžaduje--sparse. Vygeneruje pouze řídký manifest identity pro exe místo úplného nastavení balíčku nebo sady SDK. -
--sparse- Vygenerujte manifest řídké identity (appxmanifest.xml) pro existující desktopový exe. Přeskočí instalaci sady SDK nebo balíčku. Používejte s--exe. -
--name <name>- Přepsat název balíčku (pouze řídký; výchozí: odvozeno z exe) -
--publisher <CN>- Přepsat CN vydavatele (pouze zhuštěné; výchozí: odvozeno z názvu společnosti exe) -
--output-dir <path>- Adresář pro zápis řídké manifestu aAssets/(pouze řídký; výchozí:sparse/složka v aktuálním adresáři) -
--force- Přepište existujícíappxmanifest.xmlv cílovém adresáři (pouze řídké). Bez něj se inicializaci nepodaří nahradit stávající manifest nebo prostředky. -
--add-js-bindings(pouze npm) – Přidejtewinapp.jsBindingsdo package.json a vygenerujte vazby JS/TypeScript bez výzvy (nekompatibilní s--setup-sdks none)
Co to dělá:
- Vytvoří
winapp.yamlkonfigurační soubor (pouze v případech, kdy jsou spravované balíčky SDK, přeskočeno--setup-sdks nonepomocí ) - Stáhne balíčky Windows SDK a Windows App SDK.
- Generuje hlavičky a binární soubory C++/WinRT.
- Vytvoří Package.appxmanifest.
- Nastaví nástroje sestavení a povolí vývojářský režim.
- Aktualizuje soubor .gitignore, aby se vygenerované soubory vyloučily.
- Ukládá sdílené soubory v adresáři globální mezipaměti.
- Generuje vazby JS pro rozhraní API Windows App SDK, pokud je tato možnost povolená (pouze npm).
Automatická detekce projektů:
Při init spuštění bez argumentu adresáře provede první hledání aktuálního stromu adresáře a vyhledá kompatibilní projekty (až 10). Podporované typy projektů:
-
Tauri –
tauri.conf.jsonnašel jednu úroveň pod adresářem. -
Elektron —
package.jsonseelectronzávislostmi nebo devDependencies -
Flutter –
pubspec.yamlv kořenovém adresáři projektu -
.NET –
.csprojv kořenovém adresáři projektu -
Rust –
Cargo.tomlv kořenovém adresáři projektu -
C++ –
CMakeLists.txtv kořenovém adresáři projektu
Hledání přeskočí běžně ignorované adresáře (node_modules, bin, obj, .git atd.). Pokud je nalezen kompatibilní projekt, podadresáře pod ním nejsou prohledána.
- Pokud je zadaný argument adresáře (např.
winapp init .nebowinapp init path/to/project), vyhledávání se přeskočí ainitzkontroluje pouze tento adresář pro kompatibilní projekt. - Pokud
--use-defaultsje (nebo--no-prompt) nastavena bez argumentu adresáře,initpřeskočí vyhledávání a inicializuje aktuální adresář neinteraktivně, upozornění nejprve, pokud tam není zjištěn žádný známý typ projektu (např.winapp init --use-defaults) - V neinteraktivních prostředích (piped stdin, CI, přesměrovaný vstup)
initautomaticky používá--use-defaultschování a vygeneruje upozornění:Non-interactive environment detected. Using default values. - Pokud je aktuální adresář kompatibilním projektem,
initokamžitě pokračuje - Pokud se přesně jeden projekt najde jinde, zobrazí se výzva k potvrzení.
- Pokud se najde více projektů, můžete vybrat, který z nich se má inicializovat – aktuální adresář je vždy k dispozici jako záložní možnost.
- Pokud se nenašly žádné projekty, zobrazí se upozornění a zobrazí se dotaz, jestli chcete přesto pokračovat.
- Pokud hledání dosáhne limitu 10 projektů, upozornění navrhne zadání argumentu adresáře.
Automatický tok projektu .NET:
Když se v cílovém adresáři nachází soubor .csproj, init používá zjednodušený tok specifický pro .NET:
- Ověří a aktualizuje
TargetFrameworkna TFM kompatibilní s Windows (např.net10.0-windows10.0.26100.0). - Přidá
Microsoft.WindowsAppSDKaMicrosoft.Windows.SDK.BuildToolsjako položky NuGetPackageReferencepřímo v.csproj - Generuje
Package.appxmanifest, prostředky a vývojový certifikát. -
Nevytváří ani nestahuje projekce jazyka C++ (pro balíčky NuGet použijte
winapp.yaml).
Režim řídké identity (--exe + --sparse):
Vygeneruje manifest balíčku jen pro řídký balíček identity pro existující spustitelný soubor plochy – první krok pracovního postupu řídkých balíčků. Na rozdíl od úplného init toku se tím přeskočí všechna instalace sady SDK/balíčku (řídké balíčky identit nemají žádné závislosti sady SDK) a vygeneruje pouze manifest a zástupné prostředky.
- Odvodí název balíčku, vydavatele, popis a verzi z exe prostřednictvím
FileVersionInfo(přepsání pomocí--name,--publishernebo interaktivně) - Zapisuje
appxmanifest.xml(s názvem exe nahrazeným doExecutable) aAssets/složku dosparse/složky v aktuálním adresáři (nebo--output-dir) - Používá
--use-defaults/--no-promptse k přeskočení interaktivních výzev k přepsání (popisné pro CI). -
--exebez--sparsechyby
Prostředky jsou externí. Řídké
.msixje pouze identita: vygenerované jsou vyřešenyAssets/z instalačního adresáře aplikace (umístění externího obsahu) za běhu, nikoli z balíčku ..msixNasaďte je společně s vaší aplikací.
Další kroky po winapp init --exe <exe> --sparse: winapp pack <appxmanifest.xml> sestavení identity .msix, pak winapp embed-identity <exe>. Úplný návod najdete v průvodci řídkým balením .
Příklady:
# 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
# Generate a sparse identity manifest for an existing exe (no SDK install)
winapp init --exe ./bin/Release/net8.0-windows/MyApp.exe --sparse --use-defaults
Tip: Instalace sad SDK po počáteční instalaci
Pokud jste spustili init--setup-sdks none (nebo přeskočili instalaci sady SDK) a později budete potřebovat sady SDK:
# Re-run init to install SDKs - preserves existing files (manifest, etc.)
winapp init . --use-defaults --setup-sdks stable
Použijte --setup-sdks preview nebo --setup-sdks experimental pro verze Preview nebo experimentální sady SDK.
Nové…
Vytvořte novou aplikaci WinUI z oficiální šablony Windows App SDKdotnet new. Interaktivní ve výchozím nastavení; automaticky používá výchozí hodnoty v neinteraktivních prostředích.
winapp new [options]
Možnosti:
-
-t, --template <short-name>- Krátký název šablony (např.winui,winui-navviewwinui-mvvm,winui-lib, , ).winui-unittestOvěřeno proti nainstalované sadě za běhu; Spuštěním příkazuwinapp new --listzobrazíte vše. Výchozí hodnota:winui(prázdná aplikace). -
-n, --name <name>- Název nové aplikace nebo projektu (výchozí hodnota: odvozená od--output, elseWinUIApp) -
-o, --output <path>- Adresář pro vytvoření aplikace v (výchozí:./<name>) -
--use-defaults,--no-prompt– Nevybídejte výzvu; používejte výchozí hodnoty (prázdná šablona, název od--output/--namea ponechejte nainstalovanou sadu šablon namísto aktualizace). -
--force– Generování uživatelského rozhraní i v případě, že výstupní adresář již obsahuje soubory -
--template-version <latest|installed|version>- Verze sady šablon WinUI:latestnainstaluje nejnovější publikovanou sadu,installedzachová, co už je staženo (bez sítě), nebo připne explicitní verzi, například1.2.3. Výchozí nastavení: Nainstalujte nejnovější, pokud není k dispozici žádný balíček, jinak se zobrazí výzva k aktualizaci zastaralého balíčku (ponechte as-is pod--use-defaults). -
--list– Vypsat dostupné šablony WinUI a ukončit (nejprve nainstaluje nejnovější balíček, pokud není nainstalován žádný) -
--json– Formátování výstupu ve formátu JSON
Šablony:
Seznam šablon je přečtený živě z nainstalované sady, takže vždy odráží verzi, kterou máte – spuštěním zobrazíte winapp new --list aktuální sadu. Běžné šablony:
| Krátký název | Description |
|---|---|
winui |
Minimální prázdná aplikace WinUI 3 (balení MSIX) |
winui-navview |
Úvodní aplikace NavigationView |
winui-tabview |
Úvodní aplikace TabView |
winui-mvvm |
Aplikace MVVM (CommunityToolkit.Mvvm) |
winui-lib |
Knihovna tříd WinUI 3 |
winui-unittest |
Zabalená aplikace MSTest; testy se spustí při spuštění |
Kanonický krátký název každé šablony je prvním seznamem aliasů dotnet new . Všechny uvedené aliasy (např. winui3, wasdk-single) jsou také přijímány. Při spuštění uvnitř existujícího projektu dotnet new WinUI se také zobrazí šablony položek (např. prázdná stránka), které winapp new se přidají do aktuálního projektu, a ne do nového projektu.
Správa verzí sady šablon:
winapp new už nepřipne konkrétní verzi sady šablon. Pokud není nainstalována žádná sada, nainstaluje se nejnovější verze. Pokud už je starší sada nainstalovaná, zkontroluje informační kanál a pokud existuje novější, zobrazí výzvu k aktualizaci – s výjimkou neinteraktivních nebo--use-defaults spuštění, které udržují nainstalovanou sadu. Používejte --template-version latest vždy nejnovější verzi bez výzvy nebo --template-version installed vždy používejte staženou sadu bez kontroly sítě. Předání explicitní verze (např. --template-version 1.2.3) vždy nainstaluje přesně tuto verzi – přeinstalace i v případě, že je již k dispozici novější balíček – takže generování uživatelského rozhraní je reprodukovatelné napříč počítači.
Co to dělá:
- Ověří, že je nainstalovaná sada .NET SDK (pokud chybí, selže rychle s pokyny –
winappnenainstaluje sady nástrojů). - Nainstaluje nebo aktualizuje oficiální sadu šablon WinUI (
Microsoft.WindowsAppSDK.WinUI.CSharp.Templates) na vyžádání. - Vytvoří výčet dostupných šablon z nainstalované sady a deleguje generování na
dotnet new <short-name>
Šablony aplikací WinUI už obsahují Windows balení a identity (Package.appxmanifest), takže není potřeba žádný samostatný winapp init krok. Šablony aplikací slouží winapp run k sestavení a spuštění aplikace. Šablona winui-lib vytvoří knihovnu tříd pro odkaz z projektu aplikace (neobsahuje manifest aplikace). Šablona winui-unittest je zabalená aplikace MSTest, jejíž testy se spustí při spuštění aplikace (winapp run) – ne prostřednictvím dotnet test.
winapp newGenerování uživatelského rozhraní pro vaši nainstalovanou cílovou architekturu sady .NET SDK a vytiskne příslušný další krok pro zvolenou šablonu.
Pomocí globálního --verbose příznaku (-v) můžete každou základní dotnet vyvolání (dotaz balíčku, kontrolu aktualizací, instalaci, dotnet new listgenerování uživatelského rozhraní) předat spolu s úplným výstupem – užitečné při diagnostice problémů se šablonou nebo generováním uživatelského rozhraní.
Příklady:
# Interactive: pick a template, then a name (output defaults to ./<name>)
winapp new
# List the available templates without scaffolding
winapp new --list
# One-shot with a specific template
winapp new --name MyApp --template winui-navview
# Always use the newest template pack, no prompts
winapp new --name MyApp --template-version latest --use-defaults
# Show the underlying dotnet commands and their output
winapp new --name MyApp --verbose
# Non-interactive (agent) with machine-readable output
winapp new --use-defaults --name MyApp --json
obnovení
Obnovte balíčky a znovu vygenerujte soubory na základě stávající winapp.yaml konfigurace.
winapp restore [options]
Možnosti:
-
--config-dir <path>– Adresář obsahující winapp.yaml (výchozí: aktuální adresář)
Co to dělá:
- Přečte existující
winapp.yamlkonfiguraci. - Stahuje/aktualizuje balíčky SDK na zadané verze
- Znovu vygeneruje hlavičky a binární soubory C++/WinRT.
- Ukládá sdílené soubory v adresáři globální mezipaměti.
Poznámka:
U projektů .NET inicializovaných pomocí winapp init neexistuje winapp.yaml. Použijte dotnet restore k obnovení balíčků NuGet.
Příklady:
# Restore from winapp.yaml in current directory
winapp restore
aktualizace
Aktualizujte balíčky na nejnovější verze a aktualizujte konfigurační soubor.
winapp update [options]
Možnosti:
-
--setup-sdks <stable|preview|experimental|none>– Režim instalace sady SDK:stable(výchozí),preview,experimentalnebonone(přeskočit instalaci sady SDK)
Co to dělá:
- Přečte existující
winapp.yamlkonfiguraci v aktuálním adresáři. - Aktualizuje všechny balíčky na nejnovější dostupné verze.
- Aktualizuje soubor
winapp.yamls novými čísly verzí. - Znovu vygeneruje hlavičky a binární soubory C++/WinRT.
Příklady:
# Update packages to latest versions
winapp update
# Update including experimental packages
winapp update --setup-sdks experimental
pack
Vytvořte balíčky MSIX z připravených adresářů aplikací. Vyžaduje, aby se soubor manifestu (Package.appxmanifest upřednostňovaný, appxmanifest.xml podporovaný) vyskytoval v cílovém adresáři, v aktuálním adresáři nebo předal s --manifest možností. (spuštění init nebo manifest generate vytvoření manifestu)
Předáním více vstupních složek vytvořte .msixbundle distribuci s více architekturami (viz balíčky s více architekturami níže).
winapp pack <input-folder> [input-folder...] [options]
argumenty :
-
input-folder- Jeden nebo více adresářů obsahujících soubory aplikace, které se mají zabalit. Předáním více složek (např./publish/x64 ./publish/arm64. ) vytvořte sadu MSIX. Pro řídké balíčky identit předejte řídkýappxmanifest.xmlsoubor přímo místo složky (viz balíčky s řídkými identitami níže).
Možnosti:
-
--output <filename>– Název výstupního souboru. Pro jednotlivé balíčky:<name>_<version>_<arch>.msix(vrácení zpět ,<name>_<version>.msix<name>_<arch>.msixnebo<name>.msix). Pro svazky:<name>_<version>_<arch1>_<arch2>.msixbundle. -
--name <name>– Název balíčku (výchozí hodnota: z manifestu) -
--manifest <path>- Cesta k souboru manifestu (Package.appxmanifestupřednostňovaný,appxmanifest.xmltaké podporovaný; výchozí: auto-detect) -
--cert <path>– Cesta k podpisovým certifikátům (umožňuje automatické podepisování) -
--cert-password <password>- Heslo certifikátu (výchozí: "heslo") -
--generate-cert– Vygenerování nového vývojového certifikátu -
--install-cert– Instalace certifikátu do počítače -
--publisher <name>– Publisher pro generování certifikátů. Přijímá úplný rozlišující název X.500 nebo úplný název (automaticky zabalený jakoCN=<name>). -
--self-contained– modul runtime Windows App SDK sady prostředků -
--skip-pri- Přeskočit generování souborů PRI -
--executable <path>- Cesta ke spustitelnému souboru vzhledem ke vstupní složce (také--exe). Slouží k vyřešení$targetnametoken$zástupných symbolů v manifestu.
Co to dělá:
- Ověřuje a zpracovává soubory Package.appxmanifest.
-
$placeholder$Řeší tokeny v manifestu (viz zástupné symboly manifestu níže). - Zajišťuje správné rámcové závislosti.
- Aktualizace paralelních manifestů s registracemi
- Automaticky zjistí a sváže všechny soubory, na které se v manifestu odkazuje (např. AppExtension
manifest.json, konfigurační soubory), z adresáře manifestu nebo vstupní složky, pokud chybí v přípravném prostředí. - Automaticky zjistí komponenty WinRT třetích stran a zaregistruje jejich aktivační třídy (viz níže zjišťování komponent WinRT ).
- Zpracovává samostatné nasazení WinAppSDK.
- Podepíše balíček, pokud je zadaný certifikát.
Řídké balíčky identit
Pokud je vstup řídkým appxmanifest.xml souborem (jeden deklarující <uap10:AllowExternalContent>true</uap10:AllowExternalContent> pod <Properties>) místo složky, winapp pack sestaví pouze identitu – zabalí pouze .msix manifest bez binárních souborů nebo prostředků aplikace. Toto je krok 2 pracovního postupu zhuštěného balení.
# Build a signed identity package from a sparse manifest
winapp pack ./sparse/appxmanifest.xml --cert ./devcert.pfx
- Výchozí výstup je
<PackageName>.identity.msixv aktuálním adresáři (přepsán pomocí--output). - Podepisování probíhá pouze v případě, že
--certje k dispozici (nebo--generate-cert). - Pokud místo toho předáte složku, jejíž manifest deklaruje
AllowExternalContent, použije se stávající chování při balení složek, alewinapp packupozorní, pokud najde prostředky (/.ico.png/.jpg) nebo binární soubory (.exe.dll//.so) – pro řídké balíčky, které patří do externího umístění, nikoli uvnitř ..msix
Po zabalení spusťte winapp embed-identity <exe> a zaregistrujte balíček v instalačním programu s Add-AppxPackage -Path <msix> -ExternalLocation <install-dir>. Podívejte se na průvodce řídkým balením.
Zjišťování komponent WinRT
Při balení winapp pack automaticky prohledá balíčky NuGet definované v komponentách winapp.yaml WinRT nebo *.csproj jiných výrobců (např. Win2D). Analyzuje .winmd soubory, aby extrahovali aktivovatelné názvy tříd a vyhledali jejich implementace knihovny DLL. Zjištěné položky jsou registrovány takto:
-
Závislé na rozhraní (výchozí): Aktivační třídy jsou přidány jako
<InProcessServer>položky vPackage.appxmanifest -
Samostatné (
--self-contained): Aktivační třídy jsou vloženy do souběžných manifestů (SxS) v rámci spustitelného souboru.
Rozlišení zástupného symbolu během balení:
Pokud manifest obsahuje $targetnametoken$ v atributu Executable :
- Pokud
--executableje zadána (cesta vzhledem ke vstupní složce), zástupný symbol se nahradí zadanou hodnotou. -
winapp packJinak prohledá kořenový adresář vstupní složky pro.exesoubory – pokud je nalezena přesně jedna, použije se automaticky. - Pokud se najde nula nebo více
.exesouborů, zobrazí se chyba s výzvou k zadání.--executable
Příklady:
# 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
Balíčky s více architekturami
Pokud je předáno více vstupních složek, winapp pack vytvoří se pro každou architekturu .msixbundle jeden .msix obsahující:
# 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
Příkaz automaticky rozpozná architekturu jednotlivých složek z hlavičky PE primárního spustitelného souboru, ověří konzistenci napříč řezy (identita, schopnosti, závislosti) a vytvoří <Name>_<Version>_<arch1>_<arch2>.msixbundle.
Řešení manifestu pro balíčky:
Každý řez v sadě potřebuje manifest. Příkaz vyřeší manifesty v tomto pořadí:
--manifest <path>— Je-li zadán, použije se tento jediný manifest pro všechny řezy. AutomatickyProcessorArchitecturese aktualizuje na řez tak, aby odpovídal zjištěné architektuře.Manifest pro jednotlivé složky – Pokud každá vstupní složka obsahuje
Package.appxmanifest(neboappxmanifest.xml) manifest této složky se používá pro jeho řez.Záložní adresář aktuálního adresáře – Pokud složka nemá žádný manifest, příkaz vyhledá
Package.appxmanifestv aktuálním pracovním adresáři a použije ho (s automatickým razítkem architektury).
Ve všech případech se manifest automaticky aktualizuje: zástupné symboly se přeloží, vloží se závislosti a ProcessorArchitecture nastaví se na rozpoznanou architekturu. Po vyřešení ověření křížového řezu zajistí, že identita (název, verze, Publisher), schopnosti a závislosti jsou konzistentní ve všech řezech – může se lišit.ProcessorArchitecture
Verze balíčku definovaná vřezchm souborech (MSIX) je atributem verze balíčku MSIX s výjimkou případů, kdy se 0.0.0.0v takovém případě automaticky vygeneruje verze založená na časovém razítku.
# 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
Vytvořte identitu aplikace pro ladění pomocí řídkého balení. Exe zůstane v původním umístění – Windows k němu přidruží identitu prostřednictvím Add-AppxPackage -ExternalLocation.
Kdy použít tento vs
winapp run: Použijtecreate-debug-identity, když je exe oddělený od kódu vaší aplikace (např. Elektron aplikace, kdeelectron.exejenode_modules) nebo při konkrétně testování řídké chování balíčku. Pro většinu architektur, kde exe je ve výstupní složce sestavení, použijtewinapp runmísto toho – zaregistruje úplný volný balíček rozložení a spustí aplikaci. Úplné porovnání najdete v průvodci laděním .
winapp create-debug-identity [entrypoint] [options]
argumenty :
-
entrypoint– Cesta ke spustitelnému souboru (.exe) nebo skriptu, který potřebuje identitu
Možnosti:
-
--manifest <path>– Cesta k souboru manifestu aplikace neboPackage.appxmanifestappxmanifest.xml(výchozí nastavení: automatické rozpoznáníPackage.appxmanifestneboappxmanifest.xmlv aktuálním adresáři) -
--no-install– Po vytvoření balíček neinstalujte. -
--keep-identity– Ponechte as-isidentity manifestu bez připojení.debugk názvu balíčku a ID aplikace.
Co to dělá:
- Upraví souběžný manifest spustitelného souboru.
- Zaregistruje balíček s řídkou strukturou pro digitální identitu.
- Umožňuje ladění rozhraní API vyžadujících identitu.
Příklady:
# 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
embed-identity
Připojte desktopovou aplikaci ke svému řídkému balíčku identity vložením elementu <msix> do manifestu aplikace vedle sebe (fúzní). Toto je krok 3 pracovního postupu zhuštěného balení – informuje Windows, ke kterému balíčku identity patří spuštěný exe.
winapp embed-identity <target> [options]
argumenty :
-
target- Soubor, který chcete aktualizovat. Automaticky zjištěno rozšířením:-
.exe(EXE mode) – vloží<msix>prvek přímo do manifestu exe vedle sebe pomocímt.exe. -
.xml/.manifest(režim XML) – vloží nebo nahradí prvek v externím souboru manifestu<msix>SxS (vytvořený v případě, že neexistuje). Potom znovu sestavte aplikaci, aby se aktualizovaný manifest v binárním souboru vnořel.
-
Možnosti:
-
--manifest <path>– Cesta ke řídkéappxmanifest.xmlcestě ke čtení identity (packageName, publisher, applicationId) z. Pokud tento parametr vynecháte, nejprve vyhledásparse/složku vedle cíle, pak v aktuálním adresáři, pak v adresáři cíle a aktuálním adresáři.appxmanifest.xml
Příklady:
# EXE mode — embed identity straight into the built exe
winapp embed-identity ./bin/Release/net8.0-windows/MyApp.exe
# XML mode — update a checked-in side-by-side manifest, then rebuild
winapp embed-identity ./app.manifest --manifest ./appxmanifest.xml
Tento příkaz je idempotentní: opětovným spuštěním nahradí všechny existující
<msix>elementy místo duplikování.
manifest
Generování a správa souborů Package.appxmanifest
generování manifestu
Vygenerujte Package.appxmanifest ze šablon.
winapp manifest generate [directory] [options]
argumenty :
-
directory- Adresář pro generování manifestu (výchozí: aktuální adresář)
Možnosti:
-
--package-name <name>– Název balíčku (výchozí: název složky) -
--publisher-name <name>- Publisher rozlišující název (výchozí hodnota: CN=<current user>). Přijímá všechny platné X.500 DN; Úplné názvy jsou automaticky zabalené jako CN=<name>. -
--version <version>– Verze (výchozí hodnota: 1.0.0.0) -
--description <text>- Popis (výchozí hodnota: Moje aplikace) -
--entrypoint <path>– Spustitelný soubor vstupního bodu nebo skript -
--template <type>- Typ šablony:packaged(výchozí) nebosparse -
--logo-path <path>- Cesta k souboru obrázku loga -
--if-exists <Error|Overwrite|Skip>- Chování, pokud soubor manifestu již existuje v cílové cestě (výchozí:Error)
Šablony:
-
packaged– Manifest balené aplikace úrovně Standard -
sparse– Manifest aplikace využívající řídké nebo externí umístění balení
Zástupné symboly manifestu
Vygenerované manifesty používají $placeholder$ tokeny (ohraničené znakem dolaru), které se automaticky vyřeší během balení.
| Zástupný symbol | Vyřešeno na | Příklad |
|---|---|---|
$targetnametoken$ |
Název spustitelného souboru bez přípony |
Executable="$targetnametoken$.exe" → Executable="MyApp.exe" |
$targetentrypoint$ |
Windows.FullTrustApplication |
Vždy vyřešeno automaticky |
To se řídí stejnou konvencí používanou Visual Studio šablonami projektů, takže manifesty jsou přenositelné napříč nástroji.
Způsob řešení zástupných symbolů:
-
winapp pack— Při balení$targetnametoken$se přeloží pomocí--executablemožnosti nebo automatického rozpoznání jediné.exesložky ve vstupní složce. Pokud se najde více (nebo nula).exesouborů a--executablenení zadáno, zobrazí se chyba. -
winapp create-debug-identity— Pokud je zadaný argument vstupního bodu,$targetnametoken$je z něj vyřešen. Bez vstupního bodu musí být zástupný symbol spustitelného souboru již vyřešen v manifestu. -
winapp manifest generate --executable— Pokud--executableje k dispozici, metadata manifestu (verze, popis) a ikony se extrahují ze spustitelného souboru, ale vygenerovaný manifest se stále používá$targetnametoken$.exe; tento zástupný symbol se přeloží později (např.winapp packnebowinapp create-debug-identity).
PS: Udržování
$targetnametoken$v manifestu vrácení se změnami zabraňuje pevnému kódování spustitelných názvů a funguje s sestavenímiwinapp packi Visual Studio.
Příklady:
# 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
alias doplňku manifestu
Přidejte alias spuštění (uap5:AppExecutionAlias) do Package.appxmanifest. To umožňuje spuštění zabalené aplikace z příkazového řádku zadáním názvu aliasu.
winapp manifest add-alias [options]
Možnosti:
-
--name <alias>- Název aliasu (např.myapp.exe). Výchozí hodnota: Odvozeno z atributuExecutablev manifestu. -
--manifest <path>- Cesta k Package.appxmanifest (výchozí: prohledávat aktuální adresář) -
--app-id <id>– ID aplikace pro přidání aliasu (výchozí: první prvek aplikace)
Co to dělá:
- Přečte manifest a odvodí alias z atributu
Executable(zachová zástupné symboly jako$targetnametoken$.exe). -
uap5Přidá deklaraci oboru názvů, pokud ještě není k dispozici. -
<Extensions>Přidá blok s<uap5:AppExecutionAlias>uvnitř cílového elementu aplikace. - Pokud už alias existuje, nahlásí ho a úspěšně se ukončí.
Příklady:
# 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 aktualizace-aktiv
Vygenerujte všechny požadované soubory MSIX z jednoho zdrojového obrazu.
winapp manifest update-assets <image-path> [options]
argumenty :
-
image-path- Cesta ke zdrojovému souboru obrázku (PNG, JPG, SVG, ICO, GIF, BMP atd.)
Možnosti:
-
--manifest <path>– Cesta k souboru Package.appxmanifest (výchozí: prohledávat aktuální adresář) -
--light-image <path>- Cesta k samostatnému zdrojovému obrázku pro světlé varianty motivu
Description:
Vezme jednu zdrojovou image a vygeneruje komplexní sadu prostředků image MSIX na základě odkazů na prostředky manifestu:
Pro každý prostředek odkazovaný v manifestu:
-
5 variant škálování – základ (bez přípony),
.scale-125,.scale-150, ,.scale-200.scale-400
Ikona aplikace (Square44x44Logo / AppList, 44×44 base):
-
14 lícených cílových variant —
.targetsize-{16,20,24,30,32,36,40,48,60,64,72,80,96,256} -
14 neplatifikovaných cílových variant –
.targetsize-{size}_altform-unplated
Additionally:
-
app.ico – soubor ICO s více rozlišením (16, 24, 32, 48, 256) pro integraci prostředí. Pokud se existující
.icosoubor nachází v adresáři prostředků (např.AppIcon.icoze šablony projektu), nahradí se místo vytvoření duplicitního souboru.
Pomocí --light-image:
-
Světlý motiv cílí na varianty –
.targetsize-{size}_altform-lightunplated(ikona aplikace) -
Světlé varianty měřítka motivu –
.scale-{factor}_altform-colorful_theme-light(dlaždice, logo obchodu)
Podpora SVG: Soubory SVG jsou plně podporované jako zdrojové image. Jsou vykresleny jako vektory přímo v každé cílové velikosti, což vytváří výsledky perfektních pixelů ve všech rozlišeních.
Příkaz škáluje obrázky úměrně při zachování poměru stran a v případě potřeby je zacentruje s průhlednými pozadími. Prostředky se ukládají do Assets adresáře vzhledem k umístění manifestu.
Příklady:
# 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
provozovat
Vytvořte volný balíček rozložení z výstupní složky sestavení, zaregistrujte ho v Windows pomocí rozhraní API Windows.Management.Deployment.PackageManager a spusťte aplikaci – simuluje úplnou instalaci MSIX pro ladění. Vrátí ID procesu pro přílohu ladicího programu.
winapp run funguje v jednom ze dvou režimů, které se automaticky vyberou ze vstupu:
-
Režim složky – vstup je složka build-output (obsahuje
Package.appxmanifest/AppxManifest.xml). -
Project režim – vstup je
.csproj,.sln/.slnxřešení nebo adresář obsahující jeden.winapp runsestaví projekt a spustí ho a podporuje zabalené i rozbalené aplikace WinUI. Viz Project režim níže.
Tip
Ve výchozím nastavení je výběr režimu bezobslužný. Pokud byl adresář považovaný za výstupní složku sestavení, když jste očekávali, že se sestaví jako projekt, spusťte ho znovu --verbose – režim složky hlásí, proč byl vybrán (No .csproj/.sln/.slnx with a runnable app found in '<path>' — running it as a build-output folder.). Adresář je sestavený pouze jako projekt, pokud .csproj/.slnx/.slnje spuštěná aplikace umístěná na nejvyšší úrovni. Neprohledává se rekurzivně.
This je upřednostňovaným příkazem pro ladění s identitou balíčku pro většinu architektur (.NET, C++, Rust, Flutter, Tauri). Na rozdíl od
create-debug-identitytoho, který registruje řídký balíček pro jeden exe,winapp runzaregistruje celou složku jako volný balíček rozložení, stejně jako skutečná instalace MSIX. Běžné pracovní postupy ladění najdete v průvodci laděním .
winapp run [<input>] [options]
argumenty :
-
input– Aplikace, která se má spustit: výstupní složka sestavení (režim složky),.csprojprojekt,.sln/.slnxřešení nebo adresář obsahující jeden z těch na nejvyšší úrovni (režim projektu; adresář se nehledají rekurzivně). Slouží.k sestavení nebo spuštění projektu v aktuálním adresáři. Volitelné – výchozí hodnota aktuálního adresáře, pokud je vynechán (odpovídádotnet run).
Možnosti:
-
--manifest <path>- Cesta k Package.appxmanifest (výchozí: autodetekce ze vstupní složky nebo aktuálního adresáře) -
--output-appx-directory <path>- Výstupní adresář pro volný balíček rozložení (výchozí:AppXuvnitř adresáře vstupní složky) -
--args <string>– Argumenty příkazového řádku, které se předávají aplikaci. Případně použijte--argumenty následované argumenty, abyste se vyhnuli escapingu (napřwinapp run . -- --flag value. ). -
--no-launch– Vytvořte pouze identitu ladění a zaregistrujte balíček bez spuštění aplikace. -
--with-alias– Spusťte aplikaci pomocí svého aliasu spuštění místo aktivace AUMID. Aplikace běží v aktuálním terminálu s zděděným stdin/stdout/stderr.uap5:ExecutionAliasVyžaduje v manifestu (použijtewinapp manifest add-aliasho k přidání). Nelze kombinovat s--no-launch. Nelze kombinovat s--json. -
--debug-output- ZachyťteOutputDebugStringzprávy a výjimky první šance ze spuštěné aplikace. Šum rozhraní (WinUI, COM, DirectX) je filtrován z výstupu konzoly; celý soubor protokolu zachytí všechno. Pokud dojde k chybovému ukončení aplikace, automaticky zachytí minidump a analyzuje ho, aby zobrazil typ výjimky, zprávu a trasování zásobníku se zdrojovým souborem:řádkovými čísly (vyřešenými z souborů PDB ve výstupní složce sestavení). Spravované (.NET) se analyzují okamžitě bez externích nástrojů. V nativních chybových ukončeních (C++/WinRT) se zobrazují názvy modulů a posuny. Když je aplikace s chybovým ukončením aplikace WinUI 3 (Microsoft.UI.Xaml.dllnačtená), automaticky se spustí extra stowed-exception triage passing, aby se zobrazil původní hrESULT, jeho řetězec ErrorContext a kompletní nativní zásobník odesílání XAML; požadované komponenty ladicího programu se stáhnou při prvním použití (viz Ladění, přepisovatelné prostřednictvímWINAPP_DBGTOOLS_DIRproměnné prostředí). Současně se k procesu může připojit jenom jeden ladicí program, takže ostatní ladicí programy (Visual Studio, VS Code) se nedají používat současně. Místo toho použijte--no-launch, pokud potřebujete připojit jiný ladicí program. Nelze kombinovat s--no-launch. Nelze kombinovat s--json. -
--symbols– Stáhněte si symboly PDB ze serveru symbolů Microsoft pro bohatší nativní analýzu chybových ukončení s vyřešenými názvy funkcí. Používá se pouze s--debug-output. Pokud se vynechá a dojde k nativnímu chybovému ukončení, výstup navrhne přidání tohoto příznaku. Tento příznak také zlepšuje zásobník třídění výjimek winUI pro aplikace WinUI 3. Nejprve spusťte symboly stahování a místně je ukládá do mezipaměti; následující spuštění používají mezipaměť. -
--unregister-on-exit- Zrušení registrace vývojového balíčku po ukončení aplikace. Odebere pouze balíčky zaregistrované ve vývojovém režimu. Nelze kombinovat s--no-launch. -
--detach- Spusťte aplikaci a vraťte se okamžitě, aniž byste čekali na jeho ukončení. Užitečné pro CI/automatizaci, kde potřebujete po spuštění pracovat s aplikací. Vytiskne PID do stdoutu (nebo ve formátu JSON pomocí--json). Nelze kombinovat s--no-launch,--debug-output,--with-aliasnebo--unregister-on-exit. -
--clean– Před opětovným nasazením odeberte data aplikace existujícího balíčku (LocalState, settings atd.). Ve výchozím nastavení se data aplikací zachovají napříč opětovným nasazením. -
--json– Formátovat výstup jako JSON pro programovou spotřebu (např. CI/automation). Užitečné při--detachzachycení PID. Nelze kombinovat s--with-aliasnebo--debug-output.
Trvalost dat aplikace:
Ve výchozím nastavení winapp run zachová data vaší aplikace (LocalState, RoamingStateSettings, atd.) při opětovném nasazení. Pokud vaše aplikace zapisuje data do ApplicationData.Current.LocalFolder kontextu balíčku nebo Environment.GetFolderPath(SpecialFolder.LocalApplicationData) v rámci balíčku, přežijí se napříč winapp run vyvoláním.
Použijte --clean , když potřebujete nové spuštění (např. k resetování poškozeného stavu nebo testování chování při prvním spuštění).
Co to dělá:
- Vyhledá nebo vygeneruje Package.appxmanifest.
- Vytvoří a zaregistruje identitu ladění pomocí volného balíčku rozložení.
- Vypočítá ID modelu uživatele aplikace (AUMID).
- Spustí aplikaci pomocí registrované identity (pokud
--no-launchnení zadána). - Vytiskne ID procesu (PID) pro přílohu ladicího programu.
Příklady:
# 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
režim Project (projekty sady .NET SDK)
Pokud je vstupem .csprojřešení.slnx/.sln nebo adresář obsahující jeden (včetně.),winapp run sestaví projekt a dotnet build spustí ho. Podporuje zabalené i rozbalené aplikace WinUI a před spuštěním nainstaluje odpovídající architekturu aplikace pro Windows Runtime.
Vstup řešení: bod winapp run na .sln.slnx/(nebo adresář obsahující jeden – řešení je upřednostňované před volnými .csproj soubory) a přeloží spustitelný projekt aplikace a pak ho sestaví s definovanými vlastnostmi $(SolutionDir) na stejné Solution* úrovni, takže projekty, které na nich závisejí, jak to dělají v Visual Studio. Pravidla řešení:
-
Projekty testů se při automatickém výběru přeskočí , takže řešení obsahující aplikaci a jeho testy se přeloží na aplikaci bez
--projectnutnosti. (Testovací projekt WinUI je sám zabalená aplikace, takže samotný typ výstupu ho nedokáže odlišit.) - Pokud je jediným spustitelným projektem testovací projekt, spustí se.
-
Pokud existuje více než jeden spustitelný projekt aplikace,
winapp runneuhodne spouštěný projekt – při výpisu kandidátů dojde k chybám. Slouží--project <name>k výběru, který je vždy dodržen, včetně výběru testovacího projektu.
Zabalené vs. rozbalené je rozpoznáno automaticky z efektivní WindowsPackageType vlastnosti MSBuild projektu (nikdy z přítomnosti manifestu):
-
Zabaleno (
WindowsPackageType=MSIXvýchozí nastavení balíčku WinUI) – sestavení a pak zaregistruje výstup sestavení jako balíček volného rozložení a spustí se přes AUMID (stejný kanál jako režim složek). -
Rozbalení (
WindowsPackageType=None) – sestavení, zajišťuje instalaci aplikace pro Windows runtime závislé na rozhraní a následném spuštění sestavené.exepřímo. Vynuťte to pro zabalený projekt s-p WindowsPackageType=None.
Project režim vyžaduje .NET SDK 8.0.100 nebo novější (pro MSBuild--getProperty).
možnosti Project režimu (ignorovány v režimu složek):
-
-c, --configuration <name>– Konfigurace sestavení. Výchozí hodnota:Debug. -
--arch <x64|arm64|x86>- Cílová architektura. Výchozí hodnota: aktuální architektura procesu. Určuje identifikátor RID sestavení i architekturu modulu aplikace pro Windows Runtime, který se nainstaluje. -
-r, --runtime <rid>- Cílový identifikátor modulu runtime .NET (např.win-x64). Project režim používá pouze architekturu identifikátorů RID, vždy sestaví kanonickýwin-<arch>identifikátor a odmítne identifikátory RID bez Windows (např.linux-x64). Jeho architektura přepisuje--arch. -
-f, --framework <tfm>- Cílový rámec moniker pro projekty s více cíli (např.net10.0-windows10.0.26100.0). -
--project <name-or-path>– Pokud je vstup řešením (.sln/.slnx) nebo adresářem s více spouštěnými projekty aplikací, vybere, který projekt se má spustit (podle názvu projektu nebo cesty). -
--no-build- Přeskočte sestavení a spusťte existující výstup sestavení (stále vyhodnocuje výstupní vlastnosti). -
--no-restore- Před sestavením projekt přeskočte. -
-p, --property <Name=Value>- VLASTNOST MSBuild, přeposlaná do sestavení i vyhodnocení vlastnosti. Opakovatelné (např.-p WindowsPackageType=None).
Vytvoření výstupu a podrobností: projekt je sestavený ve dvou krocích – dotnet build výstupní streamy živě do konzoly , následované rychlým průchodem vyhodnocení vlastností. Winapp vytiskne přesné dotnet build … vyvolání před výstupem a streamuje upozornění i při úspěšném sestavení. Úroveň podrobností:
| Flag | dotnet verbosity | Přidá |
|---|---|---|
| (výchozí) | minimal |
— |
--verbose |
minimal |
Trasování rozhodnutí o sestavení winappu |
--quiet |
quiet |
— |
Pod --json voláním nebo --quiet výstupem sestavení přejděte na stderr, takže stdout zůstane čistý JSON / čistý.
Použitelnost možností: možnosti identity/volného rozložení (--manifest, --output-appx-directory, --no-launch--with-alias, --unregister-on-exit, , --clean) --executablese vztahují pouze na zabalené aplikace. Jsou odmítnuty s jasnou chybou pro rozbalené aplikace (které nemají žádný balíček MSIX). Možnosti spuštění/ladění (--args/--, --detach, --debug-output--symbols, , --json) fungují v obou.
příklady Project režimu:
# Build and run the project in the current directory (input defaults to ".")
winapp run
# Run a specific project
winapp run ./src/MyApp/MyApp.csproj
# Build and run from a solution (resolves the runnable app project, defines $(SolutionDir))
winapp run ./MyApp.sln
# Pick a startup project when the solution has more than one runnable app
winapp run ./MyApp.sln --project MyApp
# Release build for arm64
winapp run . -c Release --arch arm64
# Force an unpackaged run of a packaged project
winapp run . -p WindowsPackageType=None
# Run the existing build output without rebuilding, and capture crash diagnostics
winapp run . --no-build --debug-output
# Show winapp's build decision traces (dotnet build stays at minimal verbosity)
winapp run . --verbose
# Launch and detach (prints PID), forwarding args to the app
winapp run . --detach -- --my-flag value
Vlastnosti NÁSTROJE MSBuild (balíček NuGet):
Při použití balíčku NuGet Microsoft.Windows.SDK.BuildTools.WinAppdotnet run automaticky vyvolá winapp run. Následující vlastnosti nástroje MSBuild lze nastavit v .csproj řízení chování:
| Vlastnictví | Výchozí | Description |
|---|---|---|
EnableWinAppRunSupport |
true |
Povolení nebo zakázání funkce podpory spuštění |
WinAppLaunchArgs |
(prázdné) | Argumenty, které se mají předat aplikaci při spuštění |
WinAppRunUseExecutionAlias |
false |
Spuštění prostřednictvím aliasu spuštění místo aktivace AUMID |
WinAppRunNoLaunch |
false |
Registrace identity pouze bez spuštění |
WinAppRunDebugOutput |
false |
Zachytávání OutputDebugString zpráv a výjimek s první šancí Současně se může připojit pouze jeden ladicí program (zabraňuje VS/VS Code). Místo toho slouží WinAppRunNoLaunch k připojení jiného ladicího programu. |
WinAppRunDetach |
false |
Okamžitě po spuštění se vraťte místo čekání na ukončení aplikace. Vytiskne PID. |
WinAppRunUnregisterOnExit |
false |
Zrušení registrace vývojového balíčku po ukončení aplikace |
WinAppRunClean |
false |
Před opětovným nasazením odeberte data aplikace existujícího balíčku (LocalState, settings). |
WinAppRunSymbols |
false |
Stáhněte si symboly ze serveru symbolů Microsoft pro bohatší nativní analýzu chybových ukončení. Má účinek pouze s WinAppRunDebugOutput. |
WinAppRunExecutable |
(prázdné) | Spustitelná cesta vzhledem ke složce build-output. Použijte, pokud manifest obsahuje $targetnametoken$ a výstupní složka má více než jednu .exe. |
WinAppRunArgs |
(prázdné) | Nezpracované argumenty připojené k příkazovému winapp run řádku pro možnosti bez vyhrazené vlastnosti (například --verbose). Připojeno za každou výše uvedenou vlastnost. |
Vzájemně se vylučují nastavení.
WinAppRunNoLaunch a WinAppRunDetach každý popisuje jiné chování při spuštění, takže jsou v konfliktu s ostatními vlastnostmi spuštění a s ostatními. Nastavení konfliktní dvojice selže při spuštění s --X and --Y cannot be used together:
| Vlastnictví | Nelze kombinovat s |
|---|---|
WinAppRunNoLaunch |
WinAppRunDetach, WinAppRunUseExecutionAlias, , WinAppRunDebugOutputWinAppRunUnregisterOnExit |
WinAppRunDetach |
WinAppRunNoLaunch, WinAppRunUseExecutionAlias, , WinAppRunDebugOutputWinAppRunUnregisterOnExit |
WinAppRunUseExecutionAlias, WinAppRunDebugOutputa WinAppRunUnregisterOnExit lze je kombinovat s sebou.
WinAppRunClean, WinAppRunSymbols, WinAppRunExecutablea WinAppLaunchArgs nemají žádná omezení.
WinAppRunArgs nepřidá žádné omezení svého vlastního, ale přepínač, který prochází, je kontrolován jako jakýkoli jiný, takže WinAppRunArgs="--detach" stále v konfliktu s WinAppRunNoLaunch.
<PropertyGroup>
<WinAppRunUseExecutionAlias>true</WinAppRunUseExecutionAlias>
<WinAppRunDebugOutput>true</WinAppRunDebugOutput>
</PropertyGroup>
Zrušit registraci
Zrušení registrace zkušebního vývojového balíčku Odebere pouze balíčky zaregistrované ve vývojovém režimu (např. prostřednictvím winapp run nebo create-debug-identity). Balíčky nainstalované v úložišti nebo nainstalované MSIX se nikdy neodeberou.
winapp unregister [options]
Možnosti:
-
--manifest <path>– Cesta k Package.appxmanifest (výchozí: autodetekce z aktuálního adresáře) -
--force- Přeskočte kontrolu adresáře umístění instalace a zrušte registraci i v případě, že byl balíček zaregistrován z jiného stromu projektu. -
--json– Formátování výstupu ve formátu JSON
Co to dělá:
- Přečte název balíčku z manifestu.
- Vyhledá jak balíčky,
{name}tak{name}.debugbalíčky (varianta ladění je vytvořená pomocícreate-debug-identity) - Ověřuje, jestli byl každý balíček zaregistrovaný ve vývojovém režimu (
IsDevelopmentMode == true). - Ověří umístění instalace balíčku v aktuálním adresářovém stromu (pokud
--force) - Zrušení registrace odpovídajících balíčků
Příklady:
# 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
Generování, kontrola a instalace vývojových certifikátů
Generování certifikátu
Generování vývojových certifikátů pro podepisování balíčků
winapp cert generate [options]
Možnosti:
-
--manifest <Package.appxmanifest>– Extrahování informací o vydavateli z Package.appxmanifest -
--publisher <name>- Publisher pro certifikát. Přijímá úplný rozlišující název X.500 (napřCN=Contoso, O=Contoso Ltd, C=US. ) nebo úplný název, který se automaticky zabalí jakoCN=<name> -
--output <path>– Výstupní cesta k souboru certifikátu (podporuje absolutní a relativní cesty) -
--password <password>- Heslo certifikátu (výchozí: "heslo") -
--valid-days <valid-days>– Počet dnů platnosti certifikátu (výchozí hodnota: 365) -
--install– Nainstalujte certifikát do úložiště místního počítače po generování. -
--if-exists <Error|Overwrite|Skip>– Nastavení chování, pokud soubor certifikátu již existuje (výchozí: Chyba) -
--export-cer- Exportujte.cersoubor (pouze veřejný klíč) vedle.pfxsouboru . Užitečné pro distribuci veřejného certifikátu samostatně pro instalaci důvěryhodnosti. -
--json– Formátovat výstup jako JSON pro programovou spotřebu. Chyby se vrátí také jako JSON ({"error": "..."}).
Informace o certifikátu
Zobrazí podrobnosti certifikátu ze souboru PFX. Užitečné pro ověření, že certifikát odpovídá vašemu manifestu před podepsáním.
winapp cert info <cert-path> [options]
argumenty :
-
cert-path– Cesta k souboru certifikátu (PFX)
Možnosti:
-
--password <password>- Heslo pro soubor PFX (výchozí: "heslo") -
--json– Formátování výstupu ve formátu JSON
Instalace certifikátu
Nainstalujte certifikát do úložiště certifikátů počítače.
winapp cert install <cert-path> [options]
argumenty :
-
cert-path– Cesta k souboru certifikátu k instalaci
Příklady:
# 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
znak
Podepište balíčky MSIX a spustitelné soubory pomocí certifikátů.
winapp sign <file-path> [options]
argumenty :
-
file-path– Cesta k balíčku MSIX nebo spustitelnému souboru pro podepsání
Možnosti:
-
--cert <path>- Cesta k podpisovým certifikátům -
--cert-password <password>- Heslo certifikátu (výchozí: "heslo")
Příklady:
# Sign MSIX package
winapp sign MyApp.msix --cert ./mycert.pfx
# Sign executable
winapp sign ./bin/MyApp.exe --cert ./mycert.pfx --cert-password mypassword
az-sign
Podepsání kódu souboru (exe, MSIX nebo msiX bundle) pomocí Důvěryhodné podepisování Azure – podpisové identity spravované v cloudu, takže na místním počítači nikdy nedochází k žádnému privátnímu klíči (PFX).
winapp az-sign <file-path> [options]
argumenty :
-
file-path– Cesta k souboru pro podepsání (exe, msix nebo msixbundle)
Možnosti:
-
--subscription,-s– Azure ID předplatného, které se má použít. Pokud není k dispozici a existuje více předplatných, zobrazí se výzva. -
--resource-group,-r– Skupina prostředků pro zúžení podpisových účtů -
--account- Podpisový název účtu. Musí se používat s--resource-group -
--profile,-p– Název profilu certifikátu. Musí se používat s--account -
--metadata-file,-m- Cesta k existujícímumetadata.json. Přeskočí výzvy ke zjišťování prostředků a výběru účtu nebo profilu a podepíše se přímo. Neinteraktivní Azure přihlašovací údaje by už měly být dostupné. Rozhraní příkazového řádku se jinak může vrátit k interaktivní výzvě tenanta neboaz login, ale programové rozhraní API npm je vždy neinteraktivní a místo výzvy se nezdaří.
Authentication (Ověřování):
az-signpoužívá standardní řetězec přihlašovacích údajů Azure (DefaultAzureCredential). Pro CI/CD, set AZURE_TENANT_ID, AZURE_CLIENT_IDa AZURE_CLIENT_SECRET (nebo použijte GitHub Actions OIDC / spravovaná identita). Existující relace Azure CLI (az loginvčetně azure/login akce GitHub) je také dodržena v jakémkoli prostředí. Jenom když se nenajde žádné přihlašovací údaje a relace je interaktivní, spustí az-signaz login se za vás.
Požadavky:
- Účet pro podepisování kódu Azure a profil certifikátu (vytvořený na portálu Azure po ověření identity) a role podepisujícího profilu certifikátu pro podpis kódu přiřazená vaší identitě. Další pokyny najdete v dokumentaci k rychlému startu k podepisování artefaktů Azure.
- Nainstalovaný modul runtime x64 x64 .NET 8 (nebo novější). Podpisová klientská knihovna Azure je spravované sestavení, které
signtool.exese načte v samostatném procesu. Vlastní modul runtime winapp ho nesplňuje. Pokud podepisování selže s chybou načítání za běhu, nainstalujte ji https://dotnet.microsoft.com/download z ní. -
Microsoft Visual C++ Redistributable (x64). Podpisová klientská knihovna Azure závisí na modulu runtime VC++ a protože winapp stáhne nezpracovaný balíček NuGet místo oficiálního instalačního programu klientských nástrojů, tato závislost se nenainstaluje automaticky. Čistý počítač může selhat i s .NET a signTool. Nainstalujte nejnovější distribuovatelné součásti x64, pokud https://aka.ms/vs/17/release/vc_redist.x64.exe podepisování selže s chybou
0xc000007b" Aplikace se nepodařilo spustit správně" nebo chyba chybějící knihovny DLL z knihovny dlib.
CI s nejnižšími oprávněními: Automatické zjišťování (výpis předplatných, skupin prostředků, účtů a profilů) vyžaduje přístup pro čtení v nadřazené oblasti. Aby se zabránilo každému volání výpisu kolekce, předejte všechny čtyři z
--subscription--resource-group,--accounta--profile: pakaz-signověří účet a profil s přímými čtením prostředků (GET pro každý pojmenovaný prostředek) místo vytvoření výčtu nadřazené kolekce, takže objekt zabezpečení vymezený pouze na tento účet a profil je dostačující. Vynechání některého z nich znovu zavádí volání výpisu – například vynechání seznamu--subscriptionaz-signpředplatných, ke kterým má vaše identita přístup – což nemusí být povolený úzce vymezený objekt zabezpečení. Objekt zabezpečení vymezený pouze na jeden profil certifikátu může zcela přeskočit ověření předáním předem generovaného--metadata-fileprofilu (který určuje koncový bod účtu a profil přímo).
Příklady:
# Interactive — discover/select subscription, account, and profile
winapp az-sign ./app.msix
# Fully specified — no prompting (ideal for CI/CD)
winapp az-sign ./app.msix --subscription <sub-id> --resource-group <rg> --account <account> --profile <profile>
# Reuse an existing metadata.json (skips resource discovery and selection; authentication may still prompt)
winapp az-sign ./app.msix --metadata-file ./metadata.json
create-external-catalog
CodeIntegrityExternal.cat Vygenerujte soubor katalogu obsahující hodnoty hash spustitelných souborů ze zadaných adresářů. Tento katalog se používá s příznakem TrustedLaunch v manifestech balíčku MSIX (AllowExternalContent), aby bylo možné provádět externí soubory, které nejsou zahrnuty v samotném balíčku.
Podobá se tomu, jak signtool.exe se vytvoří AppxMetadata\CodeIntegrity.cat při podepisování balíčku MSIX, ale vygeneruje externí katalog pro použití s řídkým nebo externím umístěním.
winapp create-external-catalog <input-folder> [options]
argumenty :
-
input-folder– Jeden nebo více adresářů obsahujících spustitelné soubory ke zpracování. Oddělte více adresářů středníky (např."dir1;dir2")
Možnosti:
-
--recursive,-r– Zahrnutí souborů z podadresářů -
--use-page-hashes- Zahrnout hodnoty hash stránek při generování katalogu (vytvoří větší katalog s daty hash jednotlivých stránek) -
--compute-flat-hashes- Při generování katalogu zahrňte hodnoty hash plochých souborů. -
--if-exists <Error|Overwrite|Skip>- Chování, pokud výstupní soubor již existuje (výchozí:Error) -
--output,-o– Cesta k souboru výstupního katalogu. Pokud není zadaný,CodeIntegrityExternal.catvytvoří se v aktuálním adresáři. Pokud je zadaný adresář, připojí se výchozí název souboru.
Co to dělá:
- Prohledá zadané adresáře pro spustitelné soubory (binární soubory PE s oddíly kódu).
- Vygeneruje soubor definice katalogu (CDF) s hodnotami hash všech nalezených spustitelných souborů.
- Používá rozhraní API Windows CryptoCAT k vytvoření souboru katalogu
.cat. - Nespustitelné soubory (např
.txt. bez.dlloddílů kódu) se automaticky přeskočí.
Příklady:
# 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
Kdy použít:
Tento příkaz použijte při vytváření řídkého balíčku MSIX, který k ověření externích spustitelných souborů používá TrustedLaunch. Typický pracovní postup je:
-
winapp manifest generate --template sparse— Vytvoření řídké manifestu pomocíAllowExternalContent -
winapp create-external-catalog ./bin— Generování katalogu integrity kódu pro spustitelné soubory vaší aplikace -
winapp pack— Zabalte manifest, prostředky a katalog do MSIX.
nástroj
Přistupujte k nástrojům sady Windows SDK přímo. Používá nástroje dostupné v Microsoft.Windows. SDK. BuildTools
winapp tool <tool-name> [tool-arguments]
Dostupné nástroje:
-
makeappx– Vytváření a manipulace s balíčky aplikací -
signtool- Podepisovat soubory a ověřovat podpisy -
mt- Nástroj manifestu pro souběžná sestavení - A další nástroje sady Windows SDK z Microsoft.Windows. SDK. BuildTools
Příklady:
# Use signtool to verify signature
winapp tool signtool verify /pa MyApp.msix
uložit
Spusťte příkaz rozhraní příkazového řádku pro vývojáře v Microsoft Storu. Tento příkaz stáhne rozhraní příkazového řádku pro vývojáře Microsoft Store, pokud ještě není staženo. Přečtěte si další informace o rozhraní příkazového řádku pro vývojáře Microsoft Store.
winapp store [args...]
argumenty :
-
args...– Argumenty, které se mají předat přímo do rozhraní příkazovéhomsstoreřádku. Dostupné příkazy a možnosti najdete v dokumentaci k rozhraní příkazového řádku MSStore .
Co to dělá:
- Zajišťuje, že se rozhraní příkazového řádku pro vývojáře Microsoft Store (
msstore) stáhne a zpřístupní ve vašem systému. - Přepošla všechny argumenty do rozhraní příkazového
msstoreřádku. - Spustí příkaz zobrazující výstup přímo v terminálu.
Příklady:
# 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
Získejte cesty k nainstalovaným komponentám sady Windows SDK.
winapp get-winapp-path [options]
Co vrátí:
- Cesty k
.winappadresáři pracovního prostoru - Instalační adresáře balíčků
- Generovaná umístění hlaviček
find-ui
Vyhledejte funkční příklad kódu pro vyhledávání ovládacích prvků a ukázek WinUI . Pouze WinUI: korpus je Galerie WinUI 3 a sada Windows Community Toolkit (plus několik kurátorovaných základních vzorů) – nevztahuje se na WPF (Windows Presentation Foundation), WinForms ani jiné architektury uživatelského rozhraní. Třetí zdroj, microsoft-ui-reactor ReactorGallery, je opt-in: je vyloučen z normálního vyhledávání a prohledán pouze při průchodu --source reactor (jeho deklarativní vzorky jazyka C#-only nevkládat do standardní aplikace XAML, takže se k němu dostanete pouze při vytváření projektu Reactor/MVU).
winapp find-ui "<query>" [options]
Korpus se načte z GitHub při prvním použití a ukládání do mezipaměti pro jednotlivé uživatele<global .winapp>/cache/find-ui, takže první spuštění vyžaduje přístup k síti. Následné spuštění se obsluhují z místní mezipaměti (aktualizují se maximálně každých 7 dnů nebo na vyžádání pomocí --refresh).
Možnosti:
-
--id <id>– Načtení kódu (Galerie/Sada nástrojů vrací XAML a/nebo C#; Reactor je jen C#-only) plus poznámky k předpokladům pro jedno nebo více ID scénářů z předchozího vyhledávání (např.gallery-tabview-1). Opakovatelný. Id nerozlišují malá a velká písmena –GALLERY-TABVIEW-1řeší se stejně jakogallery-tabview-1. -
--list- Vypište všechny zjistitelné ID kontroly nebo vzorku místo vyhledávání (Galerie + sada nástrojů + jádro; je vyloučen zdroj opt-in Reactor). -
--source <gallery|toolkit|reactor|core>– Omezit výsledky hledání na jeden zdroj. (Pouze vyhledávání – není platné s--list/--id.) Reactor je výslovný souhlas – je vyloučen z normálního hledání, takže--source reactorje jediným způsobem, jak ho vyhledat. -
--max <N>- Maximální počet odpovídajících ovládacích prvků, které se mají vrátit (výchozí hodnota: 3). Platí pouze pro vyhledávání; ignorováno s--list/--id. -
--refresh- Obejití místní mezipaměti a opětovné načtení korpusu WinUI z GitHub. -
--json– Generování strukturovaného FORMÁTU JSON (přívětivé pro agenty) Pro hledání každá shoda nesesource, ,controlscore,descriptionascenariospole, jehož položky obsahují jednotlivé scénářeidaheader; pro--id, celý kód. Při--jsonkaždém selhání ( včetně chyb argumentu nebo analyzátoru, jako je například celé číslo--max), se vygeneruje jako plochý{"error": "..."}objekt v režimu stdout s nenulovým ukončovacím kódem, takže výstup zůstane strojově čitelný.
Pracovní postup: Kompaktně vyhledejte správný ovládací prvek a jeho ID scénáře a pak načtěte celý kód pro nejlepší shodu s --id.
Příklady:
# Find a control by intent (compact results with scenario ids)
winapp find-ui "tabbed layout"
# Restrict to the Windows Community Toolkit
winapp find-ui "settings card" --source toolkit
# Restrict to Reactor (opt-in; C#-only declarative WinUI — Reactor projects only)
winapp find-ui "flex layout" --source reactor
# Fetch the full XAML + C# for a specific scenario
winapp find-ui --id gallery-tabview-1
# Agent-friendly structured output
winapp find-ui "color picker" --json
# Browse everything, or force a corpus refresh
winapp find-ui --list
winapp find-ui "navigation view" --refresh
generované vazby uzlu
(K dispozici pouze v balíčku NPM) Generování vazeb JS pro rozhraní API Windows App SDK Vazby jsou deklarovány oborem "winapp": { "jsBindings": {...} } názvů a package.json zapsány do .winapp/bindings/.
npx winapp node generate-bindings [options]
Možnosti:
-
--verbose,-v– Povolení podrobného výstupu kódu pro jednotlivé soubory -
--quiet,-q– Potlačení průběhu a informačního výstupu
Co to dělá:
- Přečte blok od posledního zápisu
winapp.jsBindingspackage.jsonwinmds.lock.jsona pak vygeneruje typovéwinapp restore.js+ vazby do.d.ts.winapp/bindings/ -
Neupravuje
package.json– jedná se o pasivní regenerátor.winapp.jsBindingsPřidání bloku a@microsoft/dynwinrtzávislosti modulu runtime probíhá přiwinapp initpovolení vazeb JS. Tento příkaz selže rychle, pokud blok chybí. - Varuje (ale nezapisuje), pokud
@microsoft/dynwinrtv závislostech chybí – spustínpm installse poinitpřidání
Poznámka:
Vazby jsou pouze npm – vyžadují vyvolání prostřednictvím npx winapp ( @microsoft/winappcli balíček npm), samostatné rozhraní příkazového řádku winget je nezpřístupňuje. Před winapp init použitím tohoto příkazu znovu vygenerujte vazby interaktivním spuštěním a výslovným souhlasem nebo použití winapp init . --use-defaults --add-js-bindings. Pokud upravítewinapp.yaml, spusťte npx winapp restore aktualizaci Windows závislostí před opětovném vygenerováním.
Příklady:
# 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
Informace o kompletním pracovním postupu a možnostech konfigurace najdete v
winapp.jsBindings.
node create-addon
(k dispozici pouze v balíčku NPM) Generování nativních šablon doplňků C++ nebo C# se sadou Windows SDK a integrací Windows App SDK.
npx winapp node create-addon [options]
Možnosti:
-
--name <name>– Název doplňku (výchozí hodnota: nativeWindowsAddon) -
--template- Vyberte typ doplňku. Možnosti jsoucsnebocpp(výchozí:cpp) -
--verbose– Povolení podrobného výstupu
Co to dělá:
- Vytvoří adresář doplňků se soubory šablon.
- Generuje binding.gyp a addon.cc s příklady sady Windows SDK.
- Nainstaluje požadované závislosti npm (nan, node-addon-api, node-gyp).
- Přidá skript sestavení do package.json
Příklady:
# Generate addon with default name
npx winapp node create-addon
# Generate custom named addon
npx winapp node create-addon --name myWindowsAddon
node add-elektron-debug-identity
(K dispozici pouze v balíčku NPM) Přidání identity aplikace do vývojového procesu Elektron pomocí zhuštěné balení Vyžaduje Package.appxmanifest (vytvořte ho nebo winapp initwinapp manifest generate pokud ho nemáte).
Důležité
Existuje známý problém s řídkým balením aplikací Elektron, které způsobí chybové ukončení aplikace při spuštění nebo nevykreslení webového obsahu. Tento problém je opravený v Windows, ale zatím se nešířel na externí Windows zařízení. Pokud se tento problém zobrazuje po volání add-electron-debug-identity, můžete zakázat sandboxing v aplikaci Electron pro účely ladění příznakem --no-sandbox . Tento problém nemá vliv na úplné balení MSIX.
Chcete-li zrušit ladicí identitu Electron, použijte winapp node clear-electron-debug-identity.
npx winapp node add-electron-debug-identity [options]
Možnosti:
| Možnost | Description |
|---|---|
--manifest <path> |
Cesta k vlastnímu souboru Package.appxmanifest (výchozí hodnota: Package.appxmanifest v aktuálním adresáři) |
--no-install |
Neinstalujte ani neupravujte závislosti; konfigurovat pouze ladicí identitu v Electronu |
--keep-identity |
Ponechte identitu manifestu beze změn, bez připojení .debug k názvu balíčku a ID aplikace. |
--verbose |
Povolení podrobného výstupu |
Co to dělá:
- Zaregistruje identitu ladění pro proces electron.exe.
- Umožňuje testování rozhraní API vyžadujících identitu ve vývoji elektronů.
- Používá existující Package.appxmanifest pro konfiguraci identity.
Příklady:
# 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
node clear-elektron-debug-identity
(K dispozici pouze v balíčku NPM) Odeberte identitu balíčku z procesu ladění Elektron obnovením původního electron.exe ze zálohy.
npx winapp node clear-electron-debug-identity [options]
Možnosti:
| Možnost | Description |
|---|---|
--verbose |
Povolení podrobného výstupu |
Co to dělá:
- Obnoví electron.exe ze zálohy vytvořené pomocí
add-electron-debug-identity - Odebere záložní soubory po obnovení.
- Vrátí elektron do původního stavu bez identity balíčku.
Příklady:
# Remove identity from Electron development process
npx winapp node clear-electron-debug-identity
Globální možnosti
Všechny příkazy podporují tyto globální možnosti:
-
--verbose,-v– Povolení podrobného výstupu pro podrobné protokolování -
--quiet,-q– Potlačení zpráv o průběhu -
--help,-h– Zobrazit nápovědu k příkazu
Adresář globální mezipaměti
Winapp vytvoří adresář pro ukládání souborů do mezipaměti, které se dají sdílet mezi více projekty.
Ve výchozím nastavení winapp vytvoří adresář $UserProfile/.winapp jako globální adresář mezipaměti.
Pokud chcete použít jiné umístění, nastavte proměnnou WINAPP_CLI_CACHE_DIRECTORY prostředí.
V cmd:
REM Set a custom location for winapp's global cache
set WINAPP_CLI_CACHE_DIRECTORY=d:\temp\.winapp
V PowerShellu a pwsh:
# Set a custom location for winapp's global cache
$env:WINAPP_CLI_CACHE_DIRECTORY=d:\temp\.winapp
Winapp vytvoří tento adresář automaticky, když spustíte příkazy jako init nebo restore.
Kontroly aktualizací
Rozhraní příkazového řádku winapp pravidelně kontroluje nové verze a zobrazuje jednořádkový oznámení, když je k dispozici aktualizace. Tato kontrola se spustí na pozadí a nepřidá k příkazům žádnou latenci.
Kontroly aktualizací se automaticky deaktivují v prostředích CI (GitHub Actions, Azure Pipelines atd.).
Chcete-li ručně zakázat kontroly aktualizací, nastavte proměnnou WINAPP_CLI_UPDATE_CHECK prostředí na 0.
V cmd:
set WINAPP_CLI_UPDATE_CHECK=0
V PowerShellu a pwsh:
$env:WINAPP_CLI_UPDATE_CHECK = "0"
Chcete-li nastavit tuto trvalou:
[System.Environment]::SetEnvironmentVariable('WINAPP_CLI_UPDATE_CHECK', '0', 'User')
Ui
Kontrola a interakce se spuštěnými uživatelskými rozhraními aplikace Windows pomocí model UI Automation (UIA).
winapp ui [command] [options]
Příkazy:
-
status– Připojení k aplikaci a zobrazení informací -
inspect– Strom prvků zobrazení -
search- Najít prvky podle selektoru -
get-property– Čtení vlastností elementu -
get-text/get-value– Čtení hodnoty a textu z elementu (TextPattern, ValuePattern nebo Name) -
screenshot– Zachytávání okna nebo elementu ve formátu PNG (automaticky zachytává dialogy samostatně) -
record- Záznam okna nebo oblasti elementu do videa H.264 MP4 (Windows Graphics Capture + Media Foundation) -
invoke- Aktivovat prvek (kliknutí, přepínač, rozbalení) -
click- Klikněte na prvek prostřednictvím simulace myši (pro ovládací prvky, které nepodporují vyvolání) -
hover– Přesunutím myši na prvek aktivujte popisy tlačítek, kontextové rámečky a najetí myší (výchozí umístění: 800 ms) -
drag- Přetáhněte myš z jednoho bodu do druhého, podle selektoru prvků nebo souřadnic obrazovkyx,y(změna pořadí, změna velikosti, posuvníky, přetažení) -
touch- Vkládání syntetických dotykových gest (klepnutí, poklepání, dlouhé stisknutí, potáhnutí, stažení, roztažení) na střed prvku nebo souřadnice obrazovkyx,y -
pen- Vkládání syntetického pera / pera vstup — klepnutí a tahy rukopisu s konfigurovatelným tlakem, nakloněním a režimem gumy -
send-keys- Odeslání syntetického vstupu klávesnice (pojmenované klávesy, komba, nezpracovaný vk=0xNN nebo text literálu) do okna -
set-value- Nastavit hodnotu u upravitelného prvku (text, číslo); vrátí zpět na LegacyIAccessibleput_accValuefor TextPattern-only rich-edit controls -
focus- Přesunutí fokusu klávesnice -
scroll-into-view– Viditelný prvek posuvníku -
wait-for– Čekání na stav elementu -
list-windows– Vypsat všechna okna pro aplikaci -
get-focused– Sestava aktuálně prioritního prvku
Možnosti:
-
-a, --app <app>– Cílová aplikace (název, název nebo PID) -
-w, --window <hwnd>- Cílové okno podle HWND (stabilní)
Záznam uživatelského rozhraní
Zaznamenejte okno nebo oblast elementu do souboru H.264 MP4.
# 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
# Keep an agent-readable timeline alongside the MP4
winapp ui record -a Calculator --frames --duration-sec 10 --fps 10 -o demo.mp4
Možnosti záznamu:
-
--duration-sec <n>- Délka záznamu v sekundách.0zaznamenává, dokud Ctrl+C (výchozí0). -
--fps <n>- Snímky za sekundu pro zachycení (výchozí15). -
--max-edge <px>- Snížení měřítka tak, aby nejdelší okraj byl maximálně tento počet pixelů (0= bez snížení měřítka). -
--capture-screen- Zachytávání z obrazovky tak, aby byly zahrnuty překryvné nebo automaticky otevírané okno (mohou zachytit okna occluding). -
-o, --output <path>- Výstupní.mp4cesta (výchozí hodnotarecording-<timestamp>-<guid>.mp4je ). -
--frames- Psát časové razítko JPEG,frames.ndjsonamanifest.jsondo<output-name>.frames. Podporuje 1-30 fps a--max-edge64-4096 (výchozí 1280) s 1 GiB rám-dat cap.
Konečný --jsonvýsledek zahrnuje výstupní cestu, rozměry, kodek, režim zachycení, četnost, důvod zastavení, volitelné frameArtifactsa upozornění.
Známé omezení: Záznam konkrétního prvku uvnitř automaticky otevíraných oken, které se vykreslí ve vlastním okně nejvyšší úrovně (informační panel WinUI/XAML, tip výuky, popisek), může místo toho zachytit základní hlavní okno. Zaznamenejte celé okno nebo použijte
ui screenshot --capture-screenpro překryvné okno. Sledované v č. 646.
Úplnou dokumentaci najdete v dokumentaci/ui-automation.md.
Windows developer