Notatka
Dostęp do tej strony wymaga autoryzacji. Może spróbować zalogować się lub zmienić katalogi.
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować zmienić katalogi.
Uzupełnianie powłoki
Włącz uzupełnianie kart dla poleceń, opcji i wartości. Aby uzyskać instrukcje dotyczące konfiguracji, zobacz Przewodnik po uzupełnianiu powłoki .
# 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
inicjacja
Zainicjuj katalog przy użyciu zestawu Windows SDK, Zestaw SDK do aplikacji systemu Windows i wymaganych zasobów na potrzeby nowoczesnego programowania w systemie Windows.
winapp init [base-directory] [options]
argumenty:
-
base-directory- Katalog podstawowy/główny dla aplikacji/obszaru roboczego (ustawienie domyślne: bieżący katalog)
Opcje:
-
--config-dir <path>- Katalog do odczytu/przechowywania konfiguracji (domyślnie: bieżący katalog) -
--setup-sdks- Tryb instalacji zestawu SDK: "stable" (ustawienie domyślne), "preview", "experimental" lub "none" (pomiń instalację zestawu SDK) -
--ignore-config,--no-config— nie używaj pliku konfiguracji do zarządzania wersjami -
--no-gitignore- Nie aktualizuj pliku .gitignore -
--use-defaults,--no-prompt— nie monituj i użyj wartości domyślnej wszystkich monitów -
--config-only— Obsługa tylko operacji na plikach konfiguracji, pomijanie instalacji pakietu -
--add-js-bindings(tylko narzędzie npm) — dodajwinapp.jsBindingsdo package.json i wygeneruj powiązania JS/TypeScript bez monitowania (niezgodne z--setup-sdks none)
Co to robi:
- Tworzy
winapp.yamlplik konfiguracji (tylko wtedy, gdy pakiety zestawu SDK są zarządzane; pomijane za pomocą polecenia--setup-sdks none) - Pobieranie zestawów Windows SDK i pakietów Zestaw SDK do aplikacji systemu Windows
- Generuje nagłówki i pliki binarne języka C++/WinRT
- Tworzy plik Package.appxmanifest
- Konfiguruje narzędzia kompilacji i włącza tryb dewelopera
- Aktualizuje plik gitignore w celu wykluczenia wygenerowanych plików
- Przechowuje pliki do udostępniania w katalogu globalnej pamięci podręcznej
- Generuje powiązania JS dla interfejsów API Zestaw SDK do aplikacji systemu Windows po włączeniu (tylko narzędzie npm)
Automatyczne wykrywanie projektów:
Po init uruchomieniu bez argumentu katalogu wykonuje wyszukiwanie według zakresu bieżącego drzewa katalogów w celu znalezienia zgodnych projektów (do 10). Obsługiwane typy projektów:
-
Tauri —
tauri.conf.jsonznaleziono jeden poziom poniżej katalogu -
Elektron —
package.jsonz zależnościamielectronlub devDependencies -
Trzecie —
pubspec.yamlw katalogu głównym projektu -
.NET —
.csprojw katalogu głównym projektu -
Rust —
Cargo.tomlw katalogu głównym projektu -
C++ —
CMakeLists.txtw katalogu głównym projektu
Wyszukiwanie pomija często ignorowane katalogi (node_modules, bin, obj, .git itp.). Po znalezieniu zgodnego projektu podkatalogi poniżej nie są przeszukiwane.
- Jeśli zostanie podany argument katalogu (np
winapp init .. lubwinapp init path/to/project), wyszukiwanie zostanie pominięte iinitsprawdza tylko ten katalog dla zgodnego projektu - Jeśli
--use-defaultsparametr (lub--no-prompt) jest ustawiony bez argumentu katalogu,initpomija wyszukiwanie i inicjuje bieżący katalog nieinterakcyjny, najpierw ostrzeżenie, jeśli nie wykryto tam znanego typu projektu (np.winapp init --use-defaults) - W środowiskach nieinterakcyjnych (potokowe stdin, CI, przekierowane dane wejściowe)
initautomatycznie używa--use-defaultszachowania i emituje ostrzeżenie:Non-interactive environment detected. Using default values. - Jeśli bieżący katalog jest zgodnym projektem,
initnastępuje natychmiast - Jeśli dokładnie jeden projekt zostanie znaleziony w innym miejscu, zostanie wyświetlony monit o potwierdzenie
- Jeśli znaleziono wiele projektów, możesz wybrać, który z nich ma być inicjowany — bieżący katalog jest zawsze dostępny jako opcja rezerwowa
- Jeśli nie znaleziono żadnych projektów, zostanie wyświetlone ostrzeżenie i pytanie, czy mimo to kontynuować
- Jeśli wyszukiwanie osiągnie limit 10 projektów, ostrzeżenie sugeruje podanie argumentu katalogu
Przepływ projektu automatycznego .NET:
Gdy plik .csproj zostanie znaleziony w katalogu docelowym, init używa usprawnionego przepływu specyficznego dla .NET:
- Weryfikuje i aktualizuje
TargetFrameworkdo Windows zgodnego z programem TFM (np.net10.0-windows10.0.26100.0) - Dodaje
Microsoft.WindowsAppSDKiMicrosoft.Windows.SDK.BuildToolsjako wpisy NuGet dlaPackageReferencebezpośrednio w obiekcie.csproj. -
Package.appxmanifestGeneruje, zasoby i certyfikat deweloperski - Nie tworzy ani nie pobiera projekcji języka C++ (użyj dla pakietów NuGet)
Przykłady:
# 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
Porada: Instalowanie zestawów SDK po początkowej konfiguracji
Jeśli uruchomiono init--setup-sdks none polecenie (lub pominięto instalację zestawu SDK), a później potrzebne są zestawy SDK:
# Re-run init to install SDKs - preserves existing files (manifest, etc.)
winapp init . --use-defaults --setup-sdks stable
Użyj --setup-sdks preview lub --setup-sdks experimental dla wersji zapoznawczej/eksperymentalnego zestawu SDK.
przywracać
Przywracanie pakietów i ponowne generowanie plików na podstawie istniejącej winapp.yaml konfiguracji.
winapp restore [options]
Opcje:
-
--config-dir <path>- Katalog zawierający winapp.yaml (wartość domyślna: bieżący katalog)
Co to robi:
- Odczytuje istniejącą
winapp.yamlkonfigurację - Pobiera/aktualizuje pakiety zestawu SDK do określonych wersji
- Ponowne generowanie nagłówków i plików binarnych C++/WinRT
- Przechowuje pliki do udostępniania w katalogu globalnej pamięci podręcznej
Uwaga / Notatka
W przypadku projektów .NET zainicjowanych przy użyciu winapp init nie ma winapp.yaml. Użyj polecenia dotnet restore , aby przywrócić pakiety NuGet.
Przykłady:
# Restore from winapp.yaml in current directory
winapp restore
aktualizacja
Zaktualizuj pakiety do najnowszych wersji i zaktualizuj plik konfiguracji.
winapp update [options]
Opcje:
-
--setup-sdks <stable|preview|experimental|none>- Tryb instalacji zestawu SDK:stable(ustawienie domyślne),preview,experimentallubnone(pomiń instalację zestawu SDK)
Co to robi:
- Odczytuje istniejącą
winapp.yamlkonfigurację w bieżącym katalogu - Aktualizuje wszystkie pakiety do najnowszych dostępnych wersji
-
winapp.yamlAktualizuje plik przy użyciu nowych numerów wersji - Ponowne generowanie nagłówków i plików binarnych C++/WinRT
Przykłady:
# Update packages to latest versions
winapp update
# Update including experimental packages
winapp update --setup-sdks experimental
pack
Utwórz pakiety MSIX na podstawie przygotowanych katalogów aplikacji. Wymaga, aby plik manifestu (Package.appxmanifest preferowany, appxmanifest.xml obsługiwany również) był obecny w katalogu docelowym, w bieżącym katalogu lub przekazany z opcją --manifest . (uruchom init polecenie lub manifest generate aby utworzyć manifest)
Przekaż wiele folderów wejściowych, aby utworzyć dla .msixbundle dystrybucji z wieloma architekturami (zobacz pakiety z wieloma architekturami poniżej).
winapp pack <input-folder> [input-folder...] [options]
argumenty:
-
input-folder— Co najmniej jeden katalog zawierający pliki aplikacji do spakowania. Przekaż wiele folderów (np../publish/x64 ./publish/arm64) w celu utworzenia pakietu MSIX.
Opcje:
-
--output <filename>- Nazwa pliku wyjściowego. W przypadku pojedynczych pakietów:<name>_<version>_<arch>.msix(powrót do<name>_<version>.msix,<name>_<arch>.msixlub<name>.msix). W przypadku pakietów:<name>_<version>_<arch1>_<arch2>.msixbundle. -
--name <name>- Nazwa pakietu (wartość domyślna: z manifestu) -
--manifest <path>- Ścieżka do pliku manifestu (Package.appxmanifestpreferowana,appxmanifest.xmlobsługiwana również; domyślna: automatyczne wykrywanie) -
--cert <path>— Ścieżka do certyfikatu podpisywania (umożliwia automatyczne podpisywanie) -
--cert-password <password>- Hasło certyfikatu (domyślne: "hasło") -
--generate-cert— Generowanie nowego certyfikatu programistycznego -
--install-cert- Instalowanie certyfikatu na maszynie -
--publisher <name>- Publisher generowania certyfikatów. Akceptuje pełną nazwę wyróżniającą X.500 lub nagą nazwę (automatycznie opakowaną jakoCN=<name>) -
--self-contained— środowisko uruchomieniowe Zestaw SDK do aplikacji systemu Windows pakietu -
--skip-pri- Pomiń generowanie plików PRI -
--executable <path>- Ścieżka do pliku wykonywalnego względem folderu wejściowego (również--exe). Służy do rozpoznawania$targetnametoken$symboli zastępczych w manifeście.
Co to robi:
- Weryfikuje i przetwarza pliki Package.appxmanifest
- Rozwiązuje tokeny
$placeholder$w manifeście (zobacz symbole zastępcze manifestu poniżej) - Zapewnia prawidłowe zależności struktury
- Aktualizuje manifesty równoczesne z rejestracjami
- Automatycznie odnajduje i dołącza wszystkie pliki inne niż obrazy, do których odwołuje się manifest (np. AppExtension
manifest.json, pliki konfiguracji) z katalogu manifestu lub folderu wejściowego, jeśli brakuje ich w środowisku przejściowym - Automatycznie odnajduje składniki WinRT innych firm i rejestruje ich klasy aktywowalne (zobacz odnajdywanie składników WinRT poniżej)
- Obsługuje samodzielne wdrożenie winAppSDK
- Podpisuje pakiet w przypadku podania certyfikatu
Odnajdywanie składników WinRT
Podczas tworzenia pakietów winapp pack automatycznie skanuje pakiety NuGet zdefiniowane w składnikach winapp.yaml*.csproj WinRT innych firm (np. Win2D).
.winmd Analizuje pliki w celu wyodrębnienia aktywowanych nazw klas i lokalizowania ich bibliotek DLL implementacji. Odnalezione wpisy są rejestrowane w następujący sposób:
-
Zależne od struktury (ustawienie domyślne): klasy możliwe do aktywowania są dodawane jako
<InProcessServer>wpisy w obiekciePackage.appxmanifest -
Self-contained (
--self-contained): Klasy umożliwiające aktywację są osadzone w manifestach równoległych (SxS) w pliku wykonywalnym
Rozpoznawanie symboli zastępczych podczas pakowania:
Jeśli manifest zawiera $targetnametoken$ w atrybucie Executable :
- Jeśli
--executablezostanie podana (ścieżka względem folderu wejściowego), symbol zastępczy zostanie zastąpiony określoną wartością -
winapp packW przeciwnym razie skanuje katalog główny folderu wejściowego dla.exeplików — jeśli zostanie znaleziony dokładnie taki folder, zostanie on użyty automatycznie - Jeśli znaleziono zero lub wiele
.exeplików, zostanie wyświetlony błąd z prośbą o określenie--executable
Przykłady:
# 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
Pakiety z wieloma architekturami
Po przekazaniu winapp pack wielu folderów wejściowych tworzy jeden .msix dla .msixbundle każdej architektury:
# 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
Polecenie automatycznie wykrywa architekturę każdego folderu z nagłówka PE podstawowego pliku wykonywalnego, weryfikuje spójność we fragmentach (tożsamość, możliwości, zależności) i tworzy element <Name>_<Version>_<arch1>_<arch2>.msixbundle.
Rozpoznawanie manifestu dla pakietów:
Każdy wycinek w pakiecie wymaga manifestu. Polecenie rozpoznaje manifesty w następującej kolejności:
--manifest <path>— Jeśli zostanie określony, ten pojedynczy manifest jest używany dla wszystkich wycinków. ElementProcessorArchitecturejest automatycznie aktualizowany według wycinka w celu dopasowania do wykrytej architektury.Manifest dla folderu — jeśli każdy folder wejściowy zawiera
Package.appxmanifestelement (lubappxmanifest.xml), manifest tego folderu jest używany do jego wycinka.Bieżący rezerwowy katalog — jeśli folder nie ma manifestu, polecenie szuka
Package.appxmanifestw bieżącym katalogu roboczym i używa go (z automatycznym sygnaturą architektury).
We wszystkich przypadkach manifest jest automatycznie aktualizowany: symbole zastępcze są rozpoznawane, zależności są wstrzykiwane, a ProcessorArchitecture właściwość jest ustawiana na wykrytą architekturę. Po rozwiązaniu weryfikacja krzyżowa gwarantuje, że tożsamość (nazwa, wersja, Publisher), możliwości i zależności są spójne we wszystkich fragmentach — mogą się różnić.ProcessorArchitecture
Wersja pakietu zdefiniowana w wycinkach jest przypisywana do wersji pakietu MSIX, z wyjątkiem sytuacji, w której jest 0.0.0.0to , w którym przypadku jest automatycznie generowana wersja oparta na znaczniku czasu.
# 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
Utwórz tożsamość aplikacji na potrzeby debugowania przy użyciu rozrzedanych pakietów. Plik exe pozostaje w oryginalnej lokalizacji — Windows kojarzy tożsamość z nim za pośrednictwem Add-AppxPackage -ExternalLocation.
Kiedy używać tego elementu vs
winapp run: Użyjcreate-debug-identitypolecenia , gdy plik exe jest oddzielony od kodu aplikacji (np. aplikacji Electron, gdzieelectron.exeznajduje się wnode_moduleselemecie ), lub podczas testowania zachowania rozrzedzania pakietu. W przypadku większości struktur, w których plik exe znajduje się w folderze danych wyjściowych kompilacji, użyj gowinapp run— rejestruje pełny luźny pakiet układu i uruchamia aplikację. Aby uzyskać pełne porównanie, zobacz Przewodnik debugowania .
winapp create-debug-identity [entrypoint] [options]
argumenty:
-
entrypoint- Ścieżka do pliku wykonywalnego (.exe) lub skrypt, który wymaga tożsamości
Opcje:
-
--manifest <path>— Ścieżka do pliku manifestu aplikacji lubPackage.appxmanifestappxmanifest.xml(ustawienie domyślne: automatyczne wykrywaniePackage.appxmanifestlubappxmanifest.xmlw bieżącym katalogu) -
--no-install— Nie instaluj pakietu po utworzeniu -
--keep-identity— Zachowaj tożsamość manifestu as-is, bez dołączania.debugdo nazwy pakietu i identyfikatora aplikacji
Co to robi:
- Modyfikuje manifest równoległy pliku wykonywalnego
- Rejestruje rozrzedny pakiet dla tożsamości
- Umożliwia debugowanie interfejsów API wymagających tożsamości
Przykłady:
# 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
manifest
Generowanie plików Package.appxmanifest i zarządzanie nimi.
generowanie manifestu
Wygeneruj plik Package.appxmanifest na podstawie szablonów.
winapp manifest generate [directory] [options]
argumenty:
-
directory- Katalog do generowania manifestu w (ustawienie domyślne: bieżący katalog)
Opcje:
-
--package-name <name>- Nazwa pakietu (domyślna: nazwa folderu) -
--publisher-name <name>- Publisher nazwa wyróżniająca (wartość domyślna: CN=<current user>). Akceptuje dowolną prawidłową wartość DN X.500; nazwy bez pasych są automatycznie opakowane jako CN=<name>. -
--version <version>— Wersja (domyślna: "1.0.0.0") -
--description <text>- Opis (wartość domyślna: "Moja aplikacja") -
--entrypoint <path>- Punkt wejścia wykonywalny lub skrypt -
--template <type>- Typ szablonu:packaged(wartość domyślna) lubsparse -
--logo-path <path>- Ścieżka do pliku obrazu logo -
--if-exists <Error|Overwrite|Skip>- Zachowanie, gdy plik manifestu już istnieje w ścieżce docelowej (domyślnie:Error)
Szablony:
-
packaged— Standardowy manifest spakowanej aplikacji -
sparse- Manifest aplikacji przy użyciu pakowania rzadkiego/zewnętrznego
Symbole zastępcze manifestu
Wygenerowane manifesty używają $placeholder$ tokenów (oddzielonych znakiem dolara), które są rozwiązywane automatycznie podczas pakowania.
| Placeholder | Rozwiązano problem | Przykład |
|---|---|---|
$targetnametoken$ |
Nazwa pliku wykonywalnego bez rozszerzenia |
Executable="$targetnametoken$.exe" → Executable="MyApp.exe" |
$targetentrypoint$ |
Windows.FullTrustApplication |
Zawsze rozwiązywane automatycznie |
Jest to zgodne z tą samą konwencją używaną przez szablony projektów Visual Studio, więc manifesty są przenośne między narzędziami.
Jak rozwiązywać pola zastępcze:
-
winapp pack— Podczas tworzenia pakietów$targetnametoken$rozwiązanie jest rozwiązywane przy użyciu--executableopcji lub przez automatyczne wykrywanie pojedynczego.exeelementu w folderze wejściowym. Jeśli znaleziono wiele (lub zero).exeplików i--executablenie zostanie określonych, zostanie wyświetlony błąd. -
winapp create-debug-identity— po podaniu$targetnametoken$argumentu punktu wejścia jest rozpoznawany z niego. Bez punktu wejścia symbol zastępczy pliku wykonywalnego musi być już rozpoznany w manifeście. -
winapp manifest generate --executable— Po--executablepodaniu metadane manifestu (wersja, opis) i ikony są wyodrębniane z pliku wykonywalnego, ale wygenerowany manifest nadal używa$targetnametoken$.exewartości ; ten symbol zastępczy zostanie rozpoznany później (np.winapp packlubwinapp create-debug-identity).
PS: Keeping
$targetnametoken$w manifeście zaewidencjonowany pozwala uniknąć twardych nazw plików wykonywalnych i działa z kompilacjamiwinapp packi Visual Studio.
Przykłady:
# 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
Dodaj alias wykonywania (uap5:AppExecutionAlias) do pliku Package.appxmanifest. Umożliwia to uruchomienie spakowanej aplikacji z wiersza polecenia przez wpisanie nazwy aliasu.
winapp manifest add-alias [options]
Opcje:
-
--name <alias>- Nazwa aliasu (np.myapp.exe). Ustawienie domyślne: wnioskowane z atrybutuExecutablew manifeście. -
--manifest <path>— Ścieżka do pliku Package.appxmanifest (ustawienie domyślne: wyszukaj bieżący katalog) -
--app-id <id>- Identyfikator aplikacji, aby dodać alias do (ustawienie domyślne: pierwszy element aplikacji)
Co to robi:
- Odczytuje manifest i wywnioskuje alias z atrybutu
Executable(zachowując symbole zastępcze, takie jak$targetnametoken$.exe) - Dodaje deklarację
uap5przestrzeni nazw, jeśli jeszcze nie istnieje -
<Extensions>Dodaje blok z<uap5:AppExecutionAlias>elementem aplikacji docelowej - Jeśli alias już istnieje, zgłasza go i kończy pomyślnie
Przykłady:
# 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 aktualizuj-zasoby
Wygeneruj wszystkie wymagane zasoby obrazów MSIX na podstawie pojedynczego obrazu źródłowego.
winapp manifest update-assets <image-path> [options]
argumenty:
-
image-path- Ścieżka do pliku obrazu źródłowego (PNG, JPG, SVG, ICO, GIF, BMP itp.)
Opcje:
-
--manifest <path>- Ścieżka do pliku Package.appxmanifest (domyślnie: wyszukaj bieżący katalog) -
--light-image <path>- Ścieżka do oddzielnego obrazu źródłowego dla wariantów motywu lekkiego
Description:
Pobiera pojedynczy obraz źródłowy i generuje kompleksowy zestaw zasobów obrazów MSIX na podstawie odwołań do zasobów manifestu:
Dla każdego zasobu, do których odwołuje się manifest:
-
5 wariantów skalowania — podstawowy (bez sufiksu),
.scale-125,.scale-150, ,.scale-200.scale-400
Dla ikony aplikacji (Square44x44Logo / AppList, 44×44 base):
-
14 płytowanych wariantów rozmiaru docelowego —
.targetsize-{16,20,24,30,32,36,40,48,60,64,72,80,96,256} -
14 nieplatowanych wariantów rozmiaru docelowego —
.targetsize-{size}_altform-unplated
Additionally:
-
app.ico — plik ICO o wielu rozdzielczościach (16, 24, 32, 48, 256) na potrzeby integracji powłoki. Jeśli istniejący
.icoplik zostanie znaleziony w katalogu zasobów (np.AppIcon.icoz szablonu projektu), zostanie zastąpiony w miejscu zamiast tworzenia duplikatu
Z użyciem --light-image:
-
Warianty rozmiaru docelowego motywu jasnego —
.targetsize-{size}_altform-lightunplated(ikona aplikacji) -
Warianty skalowania motywu lekkiego —
.scale-{factor}_altform-colorful_theme-light(kafelki, logo sklepu)
Obsługa svG: Pliki SVG są w pełni obsługiwane jako obrazy źródłowe. Są one renderowane jako wektory bezpośrednio w każdym rozmiarze docelowym, generując doskonałe wyniki w pikselach we wszystkich rozdzielczościach.
Polecenie skaluje obrazy proporcjonalnie przy zachowaniu współczynnika proporcji, wyśrodkując je z przezroczystymi tłami w razie potrzeby. Zasoby są zapisywane w Assets katalogu w odniesieniu do lokalizacji manifestu.
Przykłady:
# 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
przebieg
Utwórz luźny pakiet układu z folderu wyjściowego kompilacji, zarejestruj go w Windows przy użyciu interfejsu API Windows.Management.Deployment.PackageManager i uruchom aplikację — symulując pełną instalację MSIX na potrzeby debugowania. Zwraca identyfikator procesu dla załącznika debugera.
This jest preferowanym poleceniem debugowania przy użyciu tożsamości pakietu dla większości struktur (.NET, C++, Rust, Flutter, Tauri). W przeciwieństwie do
create-debug-identitytego, który rejestruje rozrzedny pakiet dla pojedynczego pliku exe,winapp runrejestruje cały folder jako luźny pakiet układu, podobnie jak prawdziwa instalacja MSIX. Zobacz Przewodnik debugowania , aby zapoznać się z typowymi przepływami pracy debugowania.
winapp run <input-folder> [options]
argumenty:
-
input-folder— Katalog zawierający aplikację do uruchomienia (wymagane)
Opcje:
-
--manifest <path>— Ścieżka do pliku Package.appxmanifest (ustawienie domyślne: automatyczne wykrywanie z folderu wejściowego lub bieżącego katalogu) -
--output-appx-directory <path>- Katalog wyjściowy dla luźnego pakietu układu (wartość domyślna:AppXwewnątrz katalogu folderów wejściowych) -
--args <string>- Argumenty wiersza polecenia do przekazania do aplikacji. Alternatywnie należy użyć--argumentów, aby uniknąć ucieczki (np.winapp run . -- --flag value). -
--no-launch— Utwórz tożsamość debugowania i zarejestruj pakiet bez uruchamiania aplikacji -
--with-alias— Uruchom aplikację przy użyciu aliasu wykonywania zamiast aktywacji identyfikatora AUMID. Aplikacja działa w bieżącym terminalu z dziedziczony stdin/stdout/stderr.uap5:ExecutionAliasWymaga elementu w manifeście (użyj poleceniawinapp manifest add-alias, aby go dodać). Nie można połączyć z--no-launch. Nie można połączyć z--json. -
--debug-output— PrzechwytywanieOutputDebugStringkomunikatów i wyjątków pierwszej szansy z uruchomionej aplikacji. Szum struktury (WinUI, COM, DirectX) jest filtrowany z danych wyjściowych konsoli; pełny plik dziennika przechwytuje wszystko. Jeśli aplikacja ulegnie awarii, automatycznie przechwytuje minidump i analizuje ją, aby pokazać typ wyjątku, komunikat i ślad stosu za pomocą pliku źródłowego:numery wierszy (rozwiązane z plików PDB w folderze danych wyjściowych kompilacji). Awarie zarządzane (.NET) są analizowane natychmiast bez narzędzi zewnętrznych. Awarie natywne (C++/WinRT) pokazują nazwy modułów i przesunięcia. Gdy aplikacja, która uległa awarii, jest aplikacją WinUI 3 (Microsoft.UI.Xaml.dlljest ładowana), jest automatycznie uruchamiana dodatkowa klasyfikacja wyjątków stowed-exception, aby wyświetlić źródłowy hrESULT, jego łańcuch ErrorContext i pełny natywny stos wysyłania XAML; wymagane składniki debugera są pobierane podczas pierwszego użycia (zobacz Debugowanie, zastępowanie za pośrednictwemWINAPP_DBGTOOLS_DIRzmiennej środowiskowej). Tylko jeden debuger może dołączać do procesu w danym momencie, więc inne debugery (Visual Studio, VS Code) nie mogą być używane jednocześnie. Zamiast tego użyj--no-launchpolecenia , jeśli musisz dołączyć inny debuger. Nie można połączyć z--no-launch. Nie można połączyć z--json. -
--symbols— pobierz symbole PDB z serwera symboli Microsoft, aby uzyskać bogatszą analizę awarii natywnej z rozpoznanymi nazwami funkcji. Używane tylko z--debug-output. Jeśli pominięto i wystąpi awaria natywna, dane wyjściowe będą sugerować dodanie tej flagi. Ta flaga usprawnia również stos klasyfikacji wyjątków winUI dla aplikacji WinUI 3. Najpierw uruchom symbole pobierania i buforuje je lokalnie; kolejne uruchomienia używają pamięci podręcznej. -
--unregister-on-exit— Wyrejestrowywanie pakietu programistycznego po zakończeniu działania aplikacji. Usuwa tylko pakiety zarejestrowane w trybie programowania. Nie można połączyć z--no-launch. -
--detach— Uruchom aplikację i wróć natychmiast bez oczekiwania na jej zakończenie. Przydatne w przypadku ciągłej integracji/automatyzacji, w której należy korzystać z aplikacji po uruchomieniu. Drukuje identyfikator PID na stdout (lub w formacie JSON za pomocą polecenia--json). Nie można połączyć z--no-launch, ,--debug-output--with-aliaslub--unregister-on-exit. -
--clean— Przed ponownym wdrożeniem usuń dane aplikacji istniejącego pakietu (LocalState, ustawienia itp.). Domyślnie dane aplikacji są zachowywane w ramach ponownych wdrożeń. -
--json- Formatuj dane wyjściowe jako dane JSON na potrzeby użycia programowego (np. ciągła integracja/automatyzacja). Przydatne w--detachcelu przechwycenia identyfikatora PID. Nie można połączyć z programem--with-aliaslub--debug-output.
Trwałość danych aplikacji:
Domyślnie winapp run dane aplikacji (LocalState, RoamingState, Settingsitp.) są zachowywane podczas ponownego wdrażania. Jeśli aplikacja zapisuje dane w ApplicationData.Current.LocalFolder kontekście pakietu lub Environment.GetFolderPath(SpecialFolder.LocalApplicationData) w kontekście pakietu, te dane będą przetrwać w winapp run wywołaniach.
Użyj --clean polecenia , gdy potrzebujesz nowego uruchomienia (np. aby zresetować uszkodzony stan lub przetestować zachowanie pierwszego uruchomienia).
Co to robi:
- Lokalizuje lub generuje plik Package.appxmanifest
- Tworzy i rejestruje tożsamość debugowania przy użyciu luźnego pakietu układu
- Oblicza identyfikator modelu użytkownika aplikacji (AUMID)
- Uruchamia aplikację przy użyciu zarejestrowanej tożsamości (chyba że
--no-launchokreślono) - Drukuje identyfikator procesu (PID) dla załącznika debugera
Przykłady:
# 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
Właściwości programu MSBuild (pakiet NuGet):
W przypadku korzystania z pakietu Microsoft.Windows.SDK.BuildTools.WinApp NuGet dotnet run automatycznie wywołuje winapp run. Następujące właściwości programu MSBuild można ustawić w .csproj celu kontrolowania zachowania:
| Majątek | Wartość domyślna | Opis |
|---|---|---|
EnableWinAppRunSupport |
true |
Włączanie/wyłączanie funkcji obsługi przebiegu |
WinAppLaunchArgs |
(puste) | Argumenty przekazywane do aplikacji podczas uruchamiania |
WinAppRunUseExecutionAlias |
false |
Uruchamianie za pośrednictwem aliasu wykonywania zamiast aktywacji identyfikatora AUMID |
WinAppRunNoLaunch |
false |
Zarejestruj tożsamość tylko bez uruchamiania |
WinAppRunDebugOutput |
false |
Przechwytywanie OutputDebugString komunikatów i wyjątków pierwszej szansy. Tylko jeden debuger może dołączać jednocześnie (uniemożliwia programOWI VS/VS Code). Zamiast tego użyj WinAppRunNoLaunch polecenia , aby dołączyć inny debuger. |
<PropertyGroup>
<WinAppRunUseExecutionAlias>true</WinAppRunUseExecutionAlias>
<WinAppRunDebugOutput>true</WinAppRunDebugOutput>
</PropertyGroup>
Wyrejestrować
Wyrejestrowywanie ładowanego bezpośrednio pakietu programistycznego. Usuwa tylko pakiety zarejestrowane w trybie programowania (np. za pośrednictwem winapp run lub create-debug-identity). Pakiety zainstalowane w magazynie lub zainstalowane przez plik MSIX nigdy nie są usuwane.
winapp unregister [options]
Opcje:
-
--manifest <path>— Ścieżka do pliku Package.appxmanifest (ustawienie domyślne: automatyczne wykrywanie z bieżącego katalogu) -
--force— Pomiń sprawdzanie katalogu install-location i wyrejestrowywanie, nawet jeśli pakiet został zarejestrowany z innego drzewa projektu -
--json- Formatuj dane wyjściowe jako dane JSON
Co to robi:
- Odczytuje nazwę pakietu z manifestu
- Wyszukuje zarówno pakiety, jak
{name}i{name}.debug(wariant debugowania jest tworzony przezcreate-debug-identityprogram ) - Sprawdza, czy każdy pakiet został zarejestrowany w trybie programowania (
IsDevelopmentMode == true) - Sprawdza, czy lokalizacja instalacji pakietu znajduje się w bieżącym drzewie katalogu (chyba że
--force) - Wyrejestrowywanie pasujących pakietów
Przykłady:
# 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
Generowanie, sprawdzanie i instalowanie certyfikatów programistycznych.
Generowanie certyfikatu
Generowanie certyfikatów programistycznych na potrzeby podpisywania pakietów.
winapp cert generate [options]
Opcje:
-
--manifest <Package.appxmanifest>— Wyodrębnianie informacji o wydawcy z pliku Package.appxmanifest -
--publisher <name>- Publisher dla certyfikatu. Akceptuje pełną nazwę wyróżniającą X.500 (np.CN=Contoso, O=Contoso Ltd, C=US) lub nagą nazwę, która jest automatycznie opakowana jakoCN=<name> -
--output <path>— Ścieżka pliku certyfikatu wyjściowego (obsługuje ścieżki bezwzględne i względne) -
--password <password>- Hasło certyfikatu (domyślne: "hasło") -
--valid-days <valid-days>- Liczba dni ważności certyfikatu (wartość domyślna: 365) -
--install- Zainstaluj certyfikat w magazynie komputera lokalnego po wygenerowaniu -
--if-exists <Error|Overwrite|Skip>- Ustaw zachowanie, jeśli plik certyfikatu już istnieje (wartość domyślna: Błąd) -
--export-cer— Wyeksportuj.cerplik (tylko klucz publiczny) obok elementu.pfx. Przydatne do dystrybucji certyfikatu publicznego oddzielnie na potrzeby instalacji zaufania. -
--json- Formatuj dane wyjściowe jako dane JSON w celu programowania użycia. Błędy są również zwracane jako dane JSON ({"error": "..."}).
informacje o certyfikatach
Wyświetl szczegóły certyfikatu z pliku PFX. Przydatne do weryfikowania certyfikatu zgodnego z manifestem przed podpisaniem.
winapp cert info <cert-path> [options]
argumenty:
-
cert-path- Ścieżka do pliku certyfikatu (PFX)
Opcje:
-
--password <password>- Hasło do pliku PFX (domyślnie: "hasło") -
--json- Formatuj dane wyjściowe jako dane JSON
Instalacja certyfikatu
Zainstaluj certyfikat w sklepie certyfikatów komputera.
winapp cert install <cert-path> [options]
argumenty:
-
cert-path- Ścieżka do pliku certyfikatu do zainstalowania
Przykłady:
# 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
Podpisywanie pakietów MSIX i plików wykonywalnych przy użyciu certyfikatów.
winapp sign <file-path> [options]
argumenty:
-
file-path- Ścieżka do pakietu MSIX lub pliku wykonywalnego do podpisania
Opcje:
-
--cert <path>— Ścieżka do certyfikatu podpisywania -
--cert-password <password>- Hasło certyfikatu (domyślne: "hasło")
Przykłady:
# 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
Wygeneruj CodeIntegrityExternal.cat plik wykazu zawierający skróty plików wykonywalnych z określonych katalogów. Ten wykaz jest używany z flagą TrustedLaunch w manifestach pakietów rozrzedzanych MSIX (AllowExternalContent), aby umożliwić wykonywanie plików zewnętrznych, które nie są uwzględnione w samym pakiecie.
Jest to podobne do sposobu signtool.exe tworzenia AppxMetadata\CodeIntegrity.cat podczas podpisywania pakietu MSIX, ale generuje wykaz zewnętrzny do użycia z rozrzedniami/zewnętrznymi pakietami lokalizacji.
winapp create-external-catalog <input-folder> [options]
argumenty:
-
input-folder- Co najmniej jeden katalog zawierający pliki wykonywalne do przetworzenia. Rozdziel wiele katalogów średnikami (np."dir1;dir2")
Opcje:
-
--recursive,-r— dołączanie plików z podkatalogów -
--use-page-hashes— Dołączanie skrótów stron podczas generowania wykazu (tworzy większy wykaz z danymi skrótu na stronie) -
--compute-flat-hashes— Dołączanie skrótów plików prostych podczas generowania katalogu -
--if-exists <Error|Overwrite|Skip>- Zachowanie, gdy plik wyjściowy już istnieje (wartość domyślna:Error) -
--output,-o— ścieżka pliku wykazu danych wyjściowych. Jeśli nie zostanie określony,CodeIntegrityExternal.catzostanie utworzony w bieżącym katalogu. Jeśli zostanie określony katalog, zostanie dołączona domyślna nazwa pliku.
Co to robi:
- Skanuje określone katalogi dla plików wykonywalnych (pliki binarne PE z sekcjami kodu)
- Generuje plik definicji katalogu (CDF) z skrótami wszystkich znalezionych plików wykonywalnych
- Używa interfejsów API Windows CryptoCAT do tworzenia pliku katalogu
.cat - Pliki nie
.txtwykonywalne (np. ,.dllbez sekcji kodu) są automatycznie pomijane
Przykłady:
# 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
Kiedy należy użyć:
Użyj tego polecenia podczas kompilowania rozrzedliwego pakietu MSIX, który używa trustedLaunch do weryfikowania zewnętrznych plików wykonywalnych. Typowy przepływ pracy to:
-
winapp manifest generate --template sparse— Tworzenie rozrzednego manifestu za pomocą poleceniaAllowExternalContent -
winapp create-external-catalog ./bin— Generowanie katalogu integralności kodu dla plików wykonywalnych aplikacji -
winapp pack— Pakowanie manifestu, zasobów i wykazu do pliku MSIX
narzędzie
Uzyskaj dostęp do narzędzi Windows SDK bezpośrednio. Używa narzędzi dostępnych w Microsoft.Windows. SDK. BuildTools
winapp tool <tool-name> [tool-arguments]
Dostępne narzędzia:
-
makeappx- Tworzenie pakietów aplikacji i manipulowanie nimi -
signtool- Podpisywanie plików i weryfikowanie podpisów -
mt- Narzędzie do tworzenia manifestów dla zbiorów równoległych - Inne narzędzia zestawu SDK Windows z Microsoft.Windows. SDK. BuildTools
Przykłady:
# Use signtool to verify signature
winapp tool signtool verify /pa MyApp.msix
przechowywać
Uruchom polecenie Microsoft Store Developer CLI. To polecenie spowoduje pobranie interfejsu wiersza polecenia dewelopera Microsoft Store, jeśli nie został jeszcze pobrany. Dowiedz się więcej o interfejsie wiersza polecenia dewelopera Microsoft Store.
winapp store [args...]
argumenty:
-
args...— Argumenty przekazywane bezpośrednio do interfejsumsstorewiersza polecenia. Zobacz dokumentację interfejsu wiersza polecenia programu MSStore , aby uzyskać dostępne polecenia i opcje.
Co to robi:
- Gwarantuje, że interfejs wiersza polecenia dewelopera Microsoft Store (
msstore) jest pobierany i dostępny w systemie. - Przekazuje wszystkie argumenty do interfejsu
msstorewiersza polecenia. - Uruchamia polecenie z danymi wyjściowymi bezpośrednio w terminalu.
Przykłady:
# 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
Pobierz ścieżki do zainstalowanych składników zestawu Windows SDK.
winapp get-winapp-path [options]
Co zwraca:
- Ścieżki do
.winappkatalogu obszaru roboczego - Katalogi instalacji pakietów
- Wygenerowane lokalizacje nagłówków
node generate-bindings (powiązania generowania węzłów)
(Dostępne tylko w pakiecie NPM) Generowanie powiązań JS dla interfejsów API Zestaw SDK do aplikacji systemu Windows. Powiązania są deklarowane przez "winapp": { "jsBindings": {...} } przestrzeń nazw w pliku package.json i zapisywane w pliku .winapp/bindings/.
npx winapp node generate-bindings [options]
Opcje:
-
--verbose,-v— włączanie pełnych danych wyjściowych gen kodu dla pliku -
--quiet,-q— pomijanie postępu i danych wyjściowych informacyjnych
Co to robi:
- Odczytuje
winapp.jsBindingsblok zpackage.jsoniwinmds.lock.jsonzapisany przez ostatniwinapp restoreelement , a następnie emituje wpisane.js+.d.tspowiązania do.winapp/bindings/ -
Nie modyfikuje
package.json— jest to pasywny regenerujący.winapp.jsBindingsDodanie bloku i@microsoft/dynwinrtzależności środowiska uruchomieniowego odbywa się podczaswinapp initwłączania powiązań JS; to polecenie kończy się niepowodzeniem, jeśli blok jest nieobecny - Ostrzega (ale nie zapisuje), jeśli
@microsoft/dynwinrtbrakuje zależności — uruchomnpm installpolecenie poinitdodaniu go
Uwaga / Notatka
Powiązania są tylko narzędziem npm — wymagają wywołania za pośrednictwem npx winapp ( @microsoft/winappcli pakietu npm); autonomiczny interfejs wiersza polecenia zestawu winget nie wyświetla ich. Uruchom winapp init interaktywnie i zrezygnuj z polecenia lub użyj winapp init . --use-defaults --add-js-bindingspolecenia , aby ponownie wygenerować powiązania. Jeśli edytujesz winapp.yamlpolecenie , uruchom polecenie npx winapp restore , aby odświeżyć Windows zależności przed ponownego wygenerowania.
Przykłady:
# 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
Zapoznaj się z przewodnikiem powiązań JS , aby zapoznać się z przepływem pracy kompleksowego
winapp.jsBindingsi opcjami konfiguracji.
node utwórz-dodatek
(Dostępne tylko w pakiecie NPM) Generowanie natywnych szablonów dodatków języka C++ lub C# przy użyciu zestawu SDK Windows i integracji Zestaw SDK do aplikacji systemu Windows.
npx winapp node create-addon [options]
Opcje:
-
--name <name>- Nazwa dodatku (wartość domyślna: "nativeWindowsAddon") -
--template- Wybierz typ dodatku. Opcje tocslubcpp(wartość domyślna:cpp) -
--verbose- Włączanie pełnych danych wyjściowych
Co to robi:
- Tworzy katalog dodatku z plikami szablonów
- Generuje plik binding.gyp i addon.cc przy użyciu przykładów zestawu SDK Windows
- Instaluje wymagane zależności npm (nan, node-addon-api, node-gyp)
- Dodaje skrypt kompilacji do package.json
Przykłady:
# Generate addon with default name
npx winapp node create-addon
# Generate custom named addon
npx winapp node create-addon --name myWindowsAddon
węzeł add-electron-debug-identity
(Dostępne tylko w pakiecie NPM) Dodaj tożsamość aplikacji do procesu opracowywania elektronów przy użyciu rozrzedliwego pakowania. Wymaga pliku Package.appxmanifest (utwórz go z elementem winapp init lub winapp manifest generate jeśli go nie masz).
Ważna
Istnieje znany problem z rozrzednymi aplikacjami Electron, co powoduje awarię aplikacji podczas uruchamiania lub nie renderowania zawartości internetowej. Problem został rozwiązany w Windows, ale nie został jeszcze rozpropagowany na urządzeniach Windows zewnętrznych. Jeśli ten problem występuje po wywołaniu add-electron-debug-identitymetody , możesz wyłączyć piaskownicę w aplikacji Electron na potrzeby debugowania z flagą --no-sandbox . Ten problem nie ma wpływu na pełne pakowanie MSIX.
Aby cofnąć identyfikator debugowania Electron, użyj polecenia winapp node clear-electron-debug-identity.
npx winapp node add-electron-debug-identity [options]
Opcje:
| Option | Opis |
|---|---|
--manifest <path> |
Ścieżka do niestandardowego pliku Package.appxmanifest (ustawienie domyślne: Package.appxmanifest w bieżącym katalogu) |
--no-install |
Nie instaluj ani nie modyfikuj zależności; skonfiguruj tylko tożsamość debugowania Electron. |
--keep-identity |
Zachowaj tożsamość manifestu as-is, bez dołączania .debug do nazwy pakietu i identyfikatora aplikacji |
--verbose |
Włączanie pełnych danych wyjściowych |
Co to robi:
- Rejestruje tożsamość debugowania dla procesu electron.exe
- Umożliwia testowanie interfejsów API wymagających tożsamości w rozwoju elektronów
- Używa istniejącego pliku Package.appxmanifest na potrzeby konfiguracji tożsamości
Przykłady:
# 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
węzeł clear-electron-debug-identity
(Dostępne tylko w pakiecie NPM) Usuń tożsamość pakietu z procesu debugowania Elektron, przywracając oryginalne electron.exe z kopii zapasowej.
npx winapp node clear-electron-debug-identity [options]
Opcje:
| Option | Opis |
|---|---|
--verbose |
Włączanie pełnych danych wyjściowych |
Co to robi:
- Przywraca electron.exe z kopii zapasowej utworzonej przez program
add-electron-debug-identity - Usuwa pliki kopii zapasowej po przywróceniu
- Zwraca elektron do pierwotnego stanu bez tożsamości pakietu
Przykłady:
# Remove identity from Electron development process
npx winapp node clear-electron-debug-identity
Opcje globalne
Wszystkie polecenia obsługują następujące opcje globalne:
-
--verbose,-v— Włączanie pełnych danych wyjściowych na potrzeby szczegółowego rejestrowania -
--quiet,-q— Pomijanie komunikatów o postępie -
--help,-h— Pokaż pomoc polecenia
Katalog globalnej pamięci podręcznej
Aplikacja Winapp tworzy katalog do buforowania plików, które mogą być współużytkowane przez wiele projektów.
Domyślnie aplikacja winapp tworzy katalog jako $UserProfile/.winapp katalog globalnej pamięci podręcznej.
Aby użyć innej lokalizacji, ustaw zmienną WINAPP_CLI_CACHE_DIRECTORY środowiskową.
W cmd:
REM Set a custom location for winapp's global cache
set WINAPP_CLI_CACHE_DIRECTORY=d:\temp\.winapp
W programie PowerShell i programie pwsh:
# Set a custom location for winapp's global cache
$env:WINAPP_CLI_CACHE_DIRECTORY=d:\temp\.winapp
Aplikacja Winapp automatycznie utworzy ten katalog po uruchomieniu poleceń takich jak init lub restore.
Testy aktualizacji
Interfejs wiersza polecenia winapp okresowo sprawdza dostępność nowych wersji i wyświetla jednowierszowe powiadomienie, gdy aktualizacja jest dostępna. To sprawdzanie jest uruchamiane w tle i nie dodaje żadnych opóźnień do poleceń.
Testy aktualizacji są automatycznie wyłączone w środowiskach ciągłej integracji (GitHub Actions, Azure Pipelines itp.).
Aby ręcznie wyłączyć sprawdzanie aktualizacji, ustaw zmienną WINAPP_CLI_UPDATE_CHECK środowiskową na 0wartość .
W cmd:
set WINAPP_CLI_UPDATE_CHECK=0
W programie PowerShell i programie pwsh:
$env:WINAPP_CLI_UPDATE_CHECK = "0"
Aby uczynić to stałym:
[System.Environment]::SetEnvironmentVariable('WINAPP_CLI_UPDATE_CHECK', '0', 'User')
Interfejsu użytkownika
Sprawdzanie i interakcja z uruchomionymi interfejsami użytkownika aplikacji Windows przy użyciu automatyzacja interfejsu użytkownika interfejsu użytkownika (UIA).
winapp ui [command] [options]
Polecenia:
-
status- Nawiązywanie połączenia z aplikacją i wyświetlanie informacji -
inspect- Wyświetlanie drzewa elementów -
search- Znajdowanie elementów według selektora -
get-property- Odczyt właściwości elementu -
get-text/get-value- Odczytaj wartość/tekst z elementu (TextPattern, ValuePattern lub Name) -
screenshot- Przechwyć okno/element jako PNG (automatycznie przechwytuje okna dialogowe oddzielnie) -
record- Rejestrowanie obszaru okna/elementu w wideo H.264 MP4 (Windows Graphics Capture + Media Foundation) -
invoke- Aktywuj element (kliknij, przełącz, rozwiń) -
click- Kliknięcie elementu za pomocą symulacji myszy (w przypadku kontrolek, które nie obsługują wywołania) -
hover- Przenieś wskaźnik myszy do elementu, aby wyzwolić etykietki narzędzi, wysuwane i stany aktywowania (domyślne zamieszkanie: 800 ms) -
drag- Przeciągnij mysz z jednego punktu do innego, wybierając selektor elementów lub współrzędne ekranux,y(zmień kolejność, rozmiar, suwaki, przeciąganie i upuszczanie) -
touch- Wstrzykiwanie syntetycznych gestów dotykowych (naciśnięcie, dwukrotne naciśnięcie, długie naciśnięcie, przesunięcie, szczypnięcie, rozciągnięcie) na środku elementu lub współrzędnych ekranux,y -
pen- Wstrzykiwanie syntetycznych danych wejściowych pióra/rysika — naciśnięcia i pociągnięcia pisma odręcznego z konfigurowalnym ciśnieniem, przechylaniem i gumką -
send-keys- Wysyłanie syntetycznych danych wejściowych klawiatury (nazwanych klawiszy, kombi, nieprzetworzonych vk=0xNN lub tekstu literału) do okna -
set-value- Ustaw wartość na edytowalny element (tekst, liczba); powraca do elementu LegacyIAccessibleput_accValuedla kontrolek edycji sformatowanej tylko dla funkcji TextPattern -
focus- Przenieś fokus klawiatury -
scroll-into-view- Przewijaj element widoczny -
wait-for- Oczekiwanie na stan elementu -
list-windows— Wyświetlanie listy wszystkich okien dla aplikacji -
get-focused— Zgłaszanie aktualnie ukierunkowanego elementu
Opcje:
-
-a, --app <app>- Aplikacja docelowa (nazwa, tytuł lub PID) -
-w, --window <hwnd>- Okno docelowe przez HWND (stabilne)
Rekord interfejsu użytkownika
Zarejestruj okno docelowe — lub region pojedynczego elementu — do wideo H.264 MP4. Ramki są przechwytywane za pośrednictwem funkcji przechwytywania grafiki Windows (z rezerwowym elementem PrintWindow) i kodowane przyrostowo za pomocą programu Media Foundation, więc długie nagrania nigdy nie buforują się w pamięci.
# 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
Opcje rekordu:
-
--duration-sec <n>- Długość nagrywania w sekundach.0rekordy do ctrl+C (wartość domyślna0). -
--fps <n>- Ramki na sekundę do przechwycenia (wartość domyślna15). -
--max-edge <px>- Skalowanie w dół tak, aby najdłuższa krawędź wynosi co najwyżej tyle pikseli (0= brak skalowania w dół). -
--capture-screen- Przechwyć z ekranu tak nakładki/wyskakujące okienka są uwzględnione (może przechwytywać okludium okien). -
-o, --output <path>- Ścieżka wyjściowa.mp4(wartość domyślna torecording-<timestamp>-<guid>.mp4).
Za pomocą --jsonpolecenia emituje kopertęUiRecordResult, w tym dane wyjściowe path, , frames, heightwidth, fileSize, codec ("h264") i mode — ścieżkę przechwytywania faktycznie użytą (wgc, printwindowlub screen).
Znane ograniczenie: rejestrowanie określonego elementu w wyskakującym okienku renderującym we własnym oknie najwyższego poziomu (wysuwane WinUI/XAML, porada dydaktyczna, etykietka narzędzia) może przechwytywać bazowe okno główne. Zarejestruj całe okno lub użyj
ui screenshot --capture-screenpolecenia w celu wyświetlania wyskakujących okienek. Śledzone w 646.
Aby uzyskać pełną dokumentację, zobacz docs/ui-automation.md.