Catatan
Akses ke halaman ini memerlukan otorisasi. Anda dapat mencoba masuk atau mengubah direktori.
Akses ke halaman ini memerlukan otorisasi. Anda dapat mencoba mengubah direktori.
Penyelesaian Shell
Aktifkan penyelesaian tab untuk perintah, opsi, dan nilai. Lihat panduan Penyelesaian Shell untuk instruksi penyiapan.
# 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
inisialisasi
Menginisialisasi direktori dengan Windows SDK, SDK Aplikasi Windows, dan aset yang diperlukan untuk pengembangan Windows modern.
winapp init [base-directory] [options]
Argumen:
-
base-directory- Direktori dasar/akar untuk aplikasi/ruang kerja (default: direktori saat ini)
Opsi:
-
--config-dir <path>- Direktori untuk membaca/menyimpan konfigurasi (default: direktori saat ini) -
--setup-sdks- Mode penginstalan SDK: 'stabil' (default), 'pratinjau', 'eksperimental', atau 'tidak ada' (lewati penginstalan SDK) -
--ignore-config,--no-config- Jangan gunakan file konfigurasi untuk manajemen versi -
--no-gitignore- Jangan perbarui file .gitignore -
--use-defaults,--no-prompt- Jangan meminta, dan menggunakan default semua perintah -
--config-only- Hanya menangani operasi file konfigurasi, lewati penginstalan paket
Apa fungsinya:
-
winapp.yamlMembuat file konfigurasi (hanya ketika paket SDK dikelola; dilewati dengan--setup-sdks none) - Mengunduh paket Windows SDK dan SDK Aplikasi Windows
- Menghasilkan header dan biner C++/WinRT
- Membuat Package.appxmanifest
- Menyiapkan alat build dan mengaktifkan mode pengembang
- Memperbarui .gitignore untuk mengecualikan file yang dihasilkan
- Menyimpan file yang dapat dibagikan di direktori cache global
Deteksi proyek .NET otomatis:
Ketika file .csproj ditemukan di direktori target, init menggunakan alur khusus .NET yang disederhanakan:
- Memvalidasi dan memperbarui
TargetFrameworkke TFM yang kompatibel dengan Windows (misalnya,net10.0-windows10.0.26100.0) - Menambahkan
Microsoft.WindowsAppSDKdanMicrosoft.Windows.SDK.BuildToolssebagai entri NuGetPackageReferencelangsung di.csproj - Menghasilkan
Package.appxmanifest, aset, dan sertifikat pengembangan -
Tidak membuat
winapp.yamlatau mengunduh proyeksi C++ (gunakandotnet restoreuntuk paket NuGet)
Contoh:
# 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
Tips: Menginstal SDK setelah penyiapan awal
Jika Anda menjalankan init dengan --setup-sdks none (atau melewati penginstalan SDK) dan nantinya memerlukan SDK:
# Re-run init to install SDKs - preserves existing files (manifest, etc.)
winapp init --use-defaults --setup-sdks stable
Gunakan --setup-sdks preview atau --setup-sdks experimental untuk versi SDK pratinjau/eksperimental.
memulihkan
Pulihkan paket dan hasilkan ulang berkas berdasarkan konfigurasi yang ada winapp.yaml.
winapp restore [options]
Opsi:
-
--config-dir <path>- Direktori yang berisi winapp.yaml (default: direktori saat ini)
Apa fungsinya:
- Membaca konfigurasi
winapp.yamlyang ada - Mengunduh/memperbarui paket SDK ke versi yang ditentukan
- Meregenerasi header dan biner C++/WinRT
- Menyimpan file yang dapat dibagikan di direktori cache global
Nota
Untuk proyek .NET yang diinisialisasi dengan winapp init, tidak ada winapp.yaml. Gunakan dotnet restore untuk memulihkan paket NuGet sebagai gantinya.
Contoh:
# Restore from winapp.yaml in current directory
winapp restore
perbarui
Perbarui paket ke versi terbarunya dan perbarui file konfigurasi.
winapp update [options]
Opsi:
-
--setup-sdks <stable|preview|experimental|none>- Mode penginstalan SDK:stable(default),preview,experimental, ataunone(lewati penginstalan SDK)
Apa fungsinya:
- Membaca konfigurasi yang
winapp.yamlada di direktori saat ini - Memperbarui semua paket ke versi terbaru yang tersedia
- Memperbarui file
winapp.yamldengan nomor versi baru - Meregenerasi header dan biner C++/WinRT
Contoh:
# Update packages to latest versions
winapp update
# Update including experimental packages
winapp update --setup-sdks experimental
paket
Buat paket MSIX dari direktori aplikasi yang disiapkan. Memerlukan file manifes (Package.appxmanifest lebih disukai, appxmanifest.xml juga didukung) untuk hadir di direktori target, di direktori saat ini, atau diteruskan dengan --manifest opsi . (jalankan init atau manifest generate buat manifes)
winapp pack <input-folder> [options]
Argumen:
-
input-folder- Direktori yang berisi file aplikasi ke paket
Opsi:
-
--output <filename>- Nama file MSIX output (default:<name>_<version>_<arch>.msix, jatuh kembali ke<name>_<version>.msix, ,<name>_<arch>.msixatau<name>.msixketika versi/lengkungan tidak dapat ditentukan) -
--name <name>- Nama paket (default: dari manifes) -
--manifest <path>- Jalur ke file manifes (Package.appxmanifestlebih disukai,appxmanifest.xmljuga didukung; default: deteksi otomatis) -
--cert <path>- Jalur ke sertifikat penandatanganan (memungkinkan penandatanganan otomatis) -
--cert-password <password>- Kata sandi sertifikat (default: "kata sandi") -
--generate-cert- Membuat sertifikat pengembangan baru -
--install-cert- Menginstal sertifikat ke komputer -
--publisher <name>- nama Publisher untuk pembuatan sertifikat -
--self-contained- Runtime SDK Aplikasi Windows bundel -
--skip-pri- Lewati pembuatan file PRI -
--executable <path>- Jalur ke yang dapat dieksekusi relatif terhadap folder input (juga--exe). Digunakan untuk menyelesaikan$targetnametoken$placeholder dalam berkas manifes.
Apa fungsinya:
- Memvalidasi dan memproses file Package.appxmanifest
-
$placeholder$Menyelesaikan token dalam manifes (lihat Tempat penampung manifes di bawah) - Memastikan dependensi kerangka kerja yang tepat
- Memperbarui manifes berdampingan dengan pendaftaran
- Secara otomatis menemukan komponen WinRT pihak ketiga dan mendaftarkan kelas yang dapat diaktifkan (lihat penemuan komponen WinRT di bawah)
- Menangani penyebaran WinAppSDK mandiri
- Menandatangani paket jika sertifikat disediakan
Penemuan komponen WinRT
Saat pengemasan, winapp pack secara otomatis memindai paket NuGet yang ditentukan dalam winapp.yaml atau *.csproj untuk komponen WinRT pihak ketiga (misalnya, Win2D). Ini menguraikan .winmd file untuk mengekstrak nama kelas yang dapat diaktifkan dan menemukan DLL implementasinya. Entri yang ditemukan terdaftar sebagai berikut:
-
Framework-dependent (default): Kelas yang dapat diaktifkan ditambahkan sebagai
<InProcessServer>entri dalamPackage.appxmanifest -
Mandiri (
--self-contained): Kelas yang dapat diaktifkan disematkan dalam manifes berdampingan (SxS) dalam manifes yang dapat dieksekusi
Resolusi tempat penampung selama pengemasan:
Jika manifes berisi $targetnametoken$ dalam Executable atribut :
- Jika
--executabledisediakan (jalur relatif terhadap folder input), tempat penampung diganti dengan nilai yang ditentukan - Jika tidak,
winapp packmemindai akar folder input untuk.exefile — jika tepat satu ditemukan, itu digunakan secara otomatis - Jika nol atau beberapa
.exefile ditemukan, kesalahan ditampilkan yang meminta Anda untuk menentukan--executable
Contoh:
# Package directory with auto-detected manifest
winapp pack ./dist
# Package with custom output name and certificate
winapp pack ./dist --output MyApp.msix --cert ./cert.pfx
# Package with generated and installed certificate and self-contained WinAppSDK runtime
winapp pack ./dist --generate-cert --install-cert --self-contained
# Package with explicit executable (resolves $targetnametoken$ in manifest)
winapp pack ./dist --executable MyApp.exe
create-debug-identity
Buat identitas aplikasi untuk penelusuran kesalahan menggunakan kemasan jarang. Exe tetap berada di lokasi aslinya — Windows mengaitkan identitas dengannya melalui Add-AppxPackage -ExternalLocation.
Kapan menggunakan ini vs
winapp run: Gunakancreate-debug-identitysaat exe terpisah dari kode aplikasi Anda (misalnya, aplikasi Electron tempatelectron.exeberada ),node_modulesatau saat secara khusus menguji perilaku paket jarang. Untuk sebagian besar kerangka kerja di mana exe berada di folder output build Anda, gunakanwinapp runsebagai gantinya - ini mendaftarkan paket tata letak longgar penuh dan meluncurkan aplikasi. Lihat Panduan Penelusuran Kesalahan untuk perbandingan lengkap.
winapp create-debug-identity [entrypoint] [options]
Argumen:
-
entrypoint- Jalur ke executable (.exe) atau skrip yang membutuhkan identitas
Opsi:
-
--manifest <path>- Jalur ke file manifes aplikasi, baikPackage.appxmanifestatauappxmanifest.xml(default: deteksiPackage.appxmanifestotomatis atauappxmanifest.xmldi direktori saat ini) -
--no-install- Jangan instal paket setelah pembuatan -
--keep-identity- Simpan identitas manifes as-is, tanpa menambahkan.debugke nama paket dan ID aplikasi
Apa fungsinya:
- Memodifikasi manifes berdampingan yang dapat dieksekusi
- Mendaftarkan paket terbatas untuk identifikasi
- Mengaktifkan debugging API yang memerlukan identitas
Contoh:
# 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
Mewujudkan
Membuat dan mengelola file Package.appxmanifest.
pembuatan manifest
Hasilkan Package.appxmanifest dari templat.
winapp manifest generate [directory] [options]
Argumen:
-
directory- Direktori untuk menghasilkan manifes di (default: direktori saat ini)
Opsi:
-
--package-name <name>- Nama paket (default: nama folder) -
--publisher-name <name>- CN Publisher (default: CN=<current user>) -
--version <version>- Versi (default: "1.0.0.0") -
--description <text>- Deskripsi (default: "Aplikasi Saya") -
--entrypoint <path>- Titik masuk yang dapat dieksekusi atau skrip -
--template <type>- Jenis templat:packaged(default) atausparse -
--logo-path <path>- Jalur ke file gambar logo -
--if-exists <Error|Overwrite|Skip>- Perilaku ketika file manifes sudah ada di jalur target (default:Error)
Template:
-
packaged- Manifes aplikasi terbungkus standar -
sparse- Manifes aplikasi menggunakan kemasan lokasi sparse/eksternal
Tempat penampung manifes
Manifes yang dihasilkan menggunakan token $placeholder$ (dilingkupi tanda dolar) yang diresolusikan secara otomatis pada waktu pengemasan:
| Placeholder | Diselesaikan menjadi | Example |
|---|---|---|
$targetnametoken$ |
Nama yang dapat dieksekusi tanpa ekstensi |
Executable="$targetnametoken$.exe" → Executable="MyApp.exe" |
$targetentrypoint$ |
Windows.FullTrustApplication |
Selalu diselesaikan secara otomatis |
Ini mengikuti konvensi yang sama yang digunakan oleh templat proyek Visual Studio, sehingga manifes portabel di seluruh alat.
Bagaimana placeholder diidentifikasi:
-
winapp pack— Selama pengemasan,$targetnametoken$diselesaikan menggunakan--executableopsi atau dengan mendeteksi.exetunggal secara otomatis di folder input. Jika beberapa file (atau nol).exeditemukan dan--executabletidak ditentukan, kesalahan akan ditampilkan. -
winapp create-debug-identity— Ketika argumen entrypoint disediakan,$targetnametoken$diselesaikan dari argumen tersebut. Tanpa titik masuk, tempat penampung yang dapat dieksekusi harus sudah diselesaikan dalam manifes. -
winapp manifest generate --executable— Ketika--executabledisediakan, metadata manifes (versi, deskripsi) dan ikon diekstraksi dari yang dapat dieksekusi, tetapi manifes yang dihasilkan masih menggunakan$targetnametoken$.exe; tempat penampung ini diselesaikan nanti (misalnyawinapp packatauwinapp create-debug-identity).
PS: Keeping
$targetnametoken$dalam manifes checked-in Anda menghindari nama yang dapat dieksekusi pengodean keras dan berfungsi dengan buildwinapp packdan Visual Studio.
Contoh:
# 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
add-alias manifes
Tambahkan alias eksekusi (uap5:AppExecutionAlias) ke Package.appxmanifest. Ini memungkinkan peluncuran aplikasi yang dipaketkan dari baris perintah dengan mengetikkan nama alias.
winapp manifest add-alias [options]
Opsi:
-
--name <alias>- Nama alias (misalnyamyapp.exe). Default: disimpulkanExecutabledari atribut dalam manifes. -
--manifest <path>- Jalur ke Package.appxmanifest (default: cari direktori saat ini) -
--app-id <id>- Id Aplikasi untuk menambahkan alias ke (default: elemen Aplikasi pertama)
Apa fungsinya:
- Membaca manifes dan menyimpulkan alias dari
Executableatribut (mempertahankan tempat penampung seperti$targetnametoken$.exe) -
uap5Menambahkan deklarasi namespace jika belum ada -
<Extensions>Menambahkan blok dengan<uap5:AppExecutionAlias>di dalam elemen Aplikasi target - Jika alias sudah ada, laporkan dan keluar dengan sukses
Contoh:
# 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
aset pembaruan manifes
Hasilkan semua aset gambar MSIX yang diperlukan dari satu gambar sumber.
winapp manifest update-assets <image-path> [options]
Argumen:
-
image-path- Jalur ke file gambar sumber (PNG, JPG, SVG, ICO, GIF, BMP, dll.)
Opsi:
-
--manifest <path>- Jalur ke file Package.appxmanifest (default: cari direktori saat ini) -
--light-image <path>- Jalur ke gambar sumber terpisah untuk varian tema terang
Description:
Mengambil satu gambar sumber dan menghasilkan sekumpulan aset gambar MSIX yang komprehensif berdasarkan referensi aset manifes:
Untuk setiap aset yang dirujuk dalam manifes:
-
5 varian skala — dasar (tanpa akhiran),
.scale-125, ,.scale-150.scale-200,.scale-400
Untuk ikon aplikasi (Square44x44Logo / AppList, 44×44 base):
-
14 varian targetsize berlapis —
.targetsize-{16,20,24,30,32,36,40,48,60,64,72,80,96,256} -
14 varian targetsize yang tidak diplika —
.targetsize-{size}_altform-unplated
Additionally:
-
app.ico — File ICO multi-resolusi (16, 24, 32, 48, 256) untuk integrasi shell. Jika file yang ada
.icoditemukan di direktori aset (misalnyaAppIcon.icodari templat proyek), file tersebut diganti di tempat daripada membuat duplikat
Dengan --light-image:
-
Tema ringan menargetkan varian —
.targetsize-{size}_altform-lightunplated(ikon aplikasi) -
Varian skala tema ringan —
.scale-{factor}_altform-colorful_theme-light(petak peta, logo toko)
Dukungan SVG: File SVG didukung penuh sebagai gambar sumber. Mereka dirender sebagai vektor langsung di setiap ukuran target, menghasilkan hasil sempurna piksel di semua resolusi.
Perintah menskalakan gambar secara proporsional sambil mempertahankan rasio aspek, mempusatkannya dengan latar belakang transparan saat diperlukan. Aset disimpan ke Assets direktori berdasarkan lokasi manifes.
Contoh:
# 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
eksekusi
Buat paket tata letak longgar dari folder output build, daftarkan dengan Windows menggunakan API Windows.Management.Deployment.PackageManager, dan luncurkan aplikasi — mensimulasikan penginstalan MSIX lengkap untuk penelusuran kesalahan. Mengembalikan ID proses untuk lampiran debugger.
This adalah perintah pilihan untuk penelusuran kesalahan dengan identitas paket untuk sebagian besar kerangka kerja (.NET, C++, Rust, Flutter, Tauri). Tidak seperti
create-debug-identityyang mendaftarkan paket jarang untuk satu exe,winapp runmendaftarkan seluruh folder sebagai paket tata letak longgar, sama seperti penginstalan MSIX nyata. Lihat Panduan Penelusuran Kesalahan untuk alur kerja penelusuran kesalahan umum.
winapp run <input-folder> [options]
Argumen:
-
input-folder- Direktori yang berisi aplikasi yang akan dijalankan (diperlukan)
Opsi:
-
--manifest <path>- Jalur ke Package.appxmanifest (default: deteksi otomatis dari folder input atau direktori saat ini) -
--output-appx-directory <path>- Direktori output untuk paket tata letak longgar (default:AppXdi dalam direktori folder input) -
--args <string>- Argumen baris perintah untuk diteruskan ke aplikasi. Atau, gunakan--diikuti oleh argumen untuk menghindari pelepasan (misalnya,winapp run . -- --flag value). -
--no-launch- Hanya buat identitas debug dan daftarkan paket tanpa meluncurkan aplikasi -
--with-alias- Luncurkan aplikasi menggunakan alias eksekusinya alih-alih aktivasi AUMID. Aplikasi berjalan di terminal saat ini dengan stdin/stdout/stderr yang diwariskan.uap5:ExecutionAliasMemerlukan dalam manifes (gunakanwinapp manifest add-aliasuntuk menambahkannya). Tidak dapat digabungkan dengan--no-launch. Tidak dapat digabungkan dengan--json. -
--debug-output- MenangkapOutputDebugStringpesan dan pengecualian kesempatan pertama dari aplikasi yang diluncurkan. Kebisingan kerangka kerja (WinUI, COM, DirectX) difilter dari output konsol; file log lengkap menangkap semuanya. Jika aplikasi mengalami crash, secara otomatis mengambil minidump dan menganalisisnya untuk menampilkan jenis pengecualian, pesan, dan pelacakan tumpukan dengan file sumber:nomor baris (diselesaikan dari PDB di folder output build). Crash terkelola (.NET) dianalisis secara instan tanpa alat eksternal. Crash asli (C++/WinRT) menunjukkan nama modul dan offset. Hanya satu debugger yang dapat dilampirkan ke proses pada satu waktu, sehingga debugger lain (Visual Studio, VS Code) tidak dapat digunakan secara bersamaan. Gunakan--no-launchsebagai gantinya jika Anda perlu melampirkan debugger yang berbeda. Tidak dapat digabungkan dengan--no-launch. Tidak dapat digabungkan dengan--json. -
--symbols- Unduh simbol PDB dari Microsoft Symbol Server untuk analisis crash asli yang lebih kaya dengan nama fungsi yang diselesaikan. Hanya digunakan dengan--debug-output. Jika dihilangkan dan crash asli terjadi, output akan menyarankan untuk menambahkan bendera ini. Pertama-tama jalankan simbol unduhan dan cache secara lokal; Eksekusi berikutnya menggunakan cache. -
--unregister-on-exit- Batalkan pendaftaran paket pengembangan setelah aplikasi keluar. Hanya menghapus paket yang terdaftar dalam mode pengembangan. Tidak dapat digabungkan dengan--no-launch. -
--detach- Luncurkan aplikasi dan segera kembali tanpa menunggunya keluar. Berguna untuk CI/automation di mana Anda perlu berinteraksi dengan aplikasi setelah peluncuran. Mencetak PID ke stdout (atau di JSON dengan--json). Tidak dapat dikombinasikan dengan--no-launch,--debug-output,--with-alias, atau--unregister-on-exit. -
--clean- Hapus data aplikasi paket yang ada (LocalState, pengaturan, dll.) sebelum menyebarkan ulang. Secara default, data aplikasi dipertahankan di seluruh penyebaran ulang. -
--json- Format output sebagai JSON untuk konsumsi terprogram (misalnya CI/automation). Berguna dengan--detachuntuk menangkap PID. Tidak dapat digabungkan dengan--with-aliasatau--debug-output.
Persistensi data aplikasi:
Secara default, winapp run pertahankan data aplikasi Anda (LocalState, , RoamingState, Settingsdll.) saat menyebarkan ulang. Jika aplikasi Anda menulis data ke ApplicationData.Current.LocalFolder atau Environment.GetFolderPath(SpecialFolder.LocalApplicationData) dalam konteks paket, data tersebut akan bertahan di seluruh winapp run pemanggilan.
Gunakan --clean saat Anda memerlukan awal baru (misalnya, untuk mengatur ulang status rusak atau menguji perilaku eksekusi pertama).
Apa fungsinya:
- Menemukan atau menghasilkan Package.appxmanifest
- Membuat dan mendaftarkan identitas debug menggunakan paket tata letak longgar
- Menghitung ID Model Pengguna Aplikasi (AUMID)
- Meluncurkan aplikasi menggunakan identitas terdaftar (kecuali
--no-launchditentukan) - Mencetak ID proses (PID) untuk lampiran debugger
Contoh:
# 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
Properti MSBuild (paket NuGet):
Saat menggunakan paket NuGet Microsoft.Windows.SDK.BuildTools.WinApp, dotnet run secara otomatis memanggil winapp run. Properti MSBuild berikut ini dapat diatur dalam perilaku kontrol Anda .csproj :
| Harta benda | Default | Deskripsi |
|---|---|---|
EnableWinAppRunSupport |
true |
Mengaktifkan/menonaktifkan fungsionalitas dukungan eksekusi |
WinAppLaunchArgs |
(kosong) | Argumen untuk diteruskan ke aplikasi saat diluncurkan |
WinAppRunUseExecutionAlias |
false |
Luncurkan melalui alias eksekusi alih-alih aktivasi AUMID |
WinAppRunNoLaunch |
false |
Hanya daftarkan identitas tanpa meluncurkan |
WinAppRunDebugOutput |
false |
Menangkap OutputDebugString pesan dan pengecualian kesempatan pertama. Hanya satu debugger yang dapat melampirkan pada satu waktu (mencegah VS/VS Code). Gunakan WinAppRunNoLaunch sebagai gantinya untuk melampirkan debugger yang berbeda. |
<PropertyGroup>
<WinAppRunUseExecutionAlias>true</WinAppRunUseExecutionAlias>
<WinAppRunDebugOutput>true</WinAppRunDebugOutput>
</PropertyGroup>
batalkan pendaftaran
Batalkan pendaftaran paket pengembangan yang dimuat samping. Hanya menghapus paket yang terdaftar dalam mode pengembangan (misalnya, melalui winapp run atau create-debug-identity). Paket yang diinstal penyimpanan atau MSIX tidak pernah dihapus.
winapp unregister [options]
Opsi:
-
--manifest <path>- Jalur ke Package.appxmanifest (default: deteksi otomatis dari direktori saat ini) -
--force- Lewati pemeriksaan direktori lokasi penginstalan dan batalkan pendaftaran meskipun paket terdaftar dari pohon proyek yang berbeda -
--json- Format output sebagai JSON
Apa fungsinya:
- Membaca nama paket dari manifes
- Mencari kedua
{name}paket dan{name}.debug(varian debug dibuat olehcreate-debug-identity) - Memverifikasi setiap paket terdaftar dalam mode pengembangan (
IsDevelopmentMode == true) - Memverifikasi lokasi penginstalan paket berada di bawah pohon direktori saat ini (kecuali
--force) - Membatalkan pendaftaran paket yang cocok
Contoh:
# 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
Membuat, memeriksa, dan menginstal sertifikat pengembangan.
menghasilkan sertifikat
Hasilkan sertifikat pengembangan untuk penandatanganan paket.
winapp cert generate [options]
Opsi:
-
--manifest <Package.appxmanifest>- Mengekstrak informasi penerbit dari Package.appxmanifest -
--publisher <name>- nama Publisher untuk sertifikat -
--output <path>- Jalur file sertifikat output (mendukung jalur absolut dan relatif) -
--password <password>- Kata sandi sertifikat (default: "kata sandi") -
--valid-days <valid-days>- Jumlah hari sertifikat valid (default: 365) -
--install- Instal sertifikat ke penyimpanan komputer lokal setelah pembuatan -
--if-exists <Error|Overwrite|Skip>- Atur perilaku jika file sertifikat sudah ada (default: Kesalahan) -
--export-cer- Ekspor.cerfile (hanya kunci publik) bersama.pfxdengan . Berguna untuk mendistribusikan sertifikat publik secara terpisah untuk penginstalan kepercayaan. -
--json- Format output sebagai JSON untuk konsumsi terprogram. Kesalahan juga dikembalikan sebagai JSON ({"error": "..."}).
info sertifikasi
Tampilkan detail sertifikat dari file PFX. Berguna untuk memverifikasi sertifikat yang cocok dengan manifes Anda sebelum menandatangani.
winapp cert info <cert-path> [options]
Argumen:
-
cert-path- Jalur ke file sertifikat (PFX)
Opsi:
-
--password <password>- Kata sandi untuk file PFX (default: "kata sandi") -
--json- Format output sebagai JSON
instalasi sertifikat
Instal sertifikat ke penyimpanan sertifikat komputer.
winapp cert install <cert-path> [options]
Argumen:
-
cert-path- Jalur ke file sertifikat untuk diinstal
Contoh:
# 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
tanda
Tanda tangani paket MSIX dan executable dengan sertifikat.
winapp sign <file-path> [options]
Argumen:
-
file-path- Jalur ke paket MSIX atau dapat dieksekusi untuk ditandatangani
Opsi:
-
--cert <path>- Jalur ke sertifikat penandatanganan -
--cert-password <password>- Kata sandi sertifikat (default: "kata sandi")
Contoh:
# 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
Buat file katalog yang CodeIntegrityExternal.cat berisi hash file yang dapat dieksekusi dari direktori tertentu. Katalog ini digunakan dengan bendera TrustedLaunch dalam manifes paket jarang MSIX (AllowExternalContent) untuk memungkinkan eksekusi file eksternal tidak termasuk dalam paket itu sendiri.
Ini mirip dengan cara signtool.exe membuat saat menandatangani paket MSIX, tetapi menghasilkan katalog eksternal untuk digunakan dengan kemasan lokasi sparse/eksternalAppxMetadata\CodeIntegrity.cat.
winapp create-external-catalog <input-folder> [options]
Argumen:
-
input-folder- Satu atau beberapa direktori yang berisi file yang dapat dieksekusi untuk diproses. Pisahkan beberapa direktori dengan titik koma (misalnya,"dir1;dir2")
Opsi:
-
--recursive,-r- Sertakan file dari subdirektori -
--use-page-hashes- Sertakan hash halaman saat membuat katalog (menghasilkan katalog yang lebih besar dengan data hash per halaman) -
--compute-flat-hashes- Sertakan hash file datar saat membuat katalog -
--if-exists <Error|Overwrite|Skip>- Perilaku ketika file output sudah ada (default:Error) -
--output,-o- Jalur file katalog output. Jika tidak ditentukan,CodeIntegrityExternal.catdibuat di direktori saat ini. Jika direktori ditentukan, nama file default ditambahkan.
Apa fungsinya:
- Memindai direktori tertentu untuk file yang dapat dieksekusi (biner PE dengan bagian kode)
- Menghasilkan File Definisi Katalog (CDF) dengan hash dari semua executable yang ditemukan
- Menggunakan API CryptoCAT Windows untuk menghasilkan file katalog
.cat - File yang tidak dapat dieksekusi (misalnya,
.txt,.dlltanpa bagian kode) secara otomatis dilewati
Contoh:
# 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
Kapan menggunakan:
Gunakan perintah ini saat membuat paket MSIX jarang yang menggunakan TrustedLaunch untuk memverifikasi executable eksternal. Alur kerja umumnya adalah:
-
winapp manifest generate --template sparse— Membuat manifes jarang denganAllowExternalContent -
winapp create-external-catalog ./bin— Hasilkan katalog integritas kode untuk executable aplikasi Anda -
winapp pack— Mengemas manifes, aset, dan katalog ke dalam MSIX
perangkat
Akses alat Windows SDK langsung. Menggunakan alat yang tersedia di Microsoft.Windows. SDK. BuildTools
winapp tool <tool-name> [tool-arguments]
Alat yang tersedia:
-
makeappx- Membuat dan memanipulasi paket aplikasi -
signtool- Menandatangani file dan memverifikasi tanda tangan -
mt- Alat manifes untuk rakitan berdampingan - Dan alat SDK Windows lainnya dari Microsoft.Windows. SDK. BuildTools
Contoh:
# Use signtool to verify signature
winapp tool signtool verify /pa MyApp.msix
simpan
Jalankan perintah Microsoft Store Developer CLI. Perintah ini akan mengunduh Microsoft Store Developer CLI jika belum diunduh. Pelajari selengkapnya tentang Microsoft Store Developer CLI.
winapp store [args...]
Argumen:
-
args...– Argumen untuk diteruskan langsung kemsstoreCLI. Lihat dokumentasi MSStore CLI untuk perintah dan opsi yang tersedia.
Apa fungsinya:
- Memastikan Microsoft Store Developer CLI (
msstore) diunduh dan tersedia di sistem Anda. - Meneruskan semua argumen ke
msstoreCLI. - Menjalankan perintah yang menunjukkan output langsung di terminal Anda.
Contoh:
# 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>
Dapatkan Jalur Aplikasi Windows
Dapatkan jalur untuk menginstal komponen Windows SDK.
winapp get-winapp-path [options]
Apa yang dikembalikannya:
- Jalur ke
.winappdirektori ruang kerja - Direktori penginstalan paket
- Lokasi header yang dihasilkan
node membuat-addon
(Hanya tersedia dalam paket NPM) Menghasilkan templat addon C++ atau C# asli dengan Windows SDK dan integrasi SDK Aplikasi Windows.
npx winapp node create-addon [options]
Opsi:
-
--name <name>- Nama addon (default: "nativeWindowsAddon") -
--template- Pilih jenis addon. Opsi adalahcsataucpp(default:cpp) -
--verbose- Aktifkan output verbose
Apa fungsinya:
- Membuat direktori addon dengan file templat
- Menghasilkan binding.gyp dan addon.cc dengan contoh SDK Windows
- Menginstal dependensi npm yang diperlukan (nan, node-addon-api, node-gyp)
- Menambahkan skrip build ke package.json
Contoh:
# Generate addon with default name
npx winapp node create-addon
# Generate custom named addon
npx winapp node create-addon --name myWindowsAddon
node add-electron-debug-identity
(Hanya tersedia dalam paket NPM) Tambahkan identitas aplikasi ke proses pengembangan Electron dengan menggunakan kemasan jarang. Memerlukan Package.appxmanifest (buat dengan winapp init atau winapp manifest generate jika Anda tidak memilikinya).
Penting
Ada masalah yang diketahui dengan aplikasi Electron kemasan jarang yang menyebabkan aplikasi crash pada awal atau tidak merender konten web. Masalah ini telah diperbaiki di Windows tetapi belum menyebar ke perangkat Windows eksternal. Jika Anda melihat masalah ini setelah memanggil add-electron-debug-identity, Anda dapat menonaktifkan kotak pasir di aplikasi Electron untuk tujuan debug dengan --no-sandbox bendera. Masalah ini tidak memengaruhi kemasan MSIX penuh.
Untuk menghapus identitas debug Electron, gunakan winapp node clear-electron-debug-identity.
npx winapp node add-electron-debug-identity [options]
Opsi:
| Option | Deskripsi |
|---|---|
--manifest <path> |
Jalur ke Package.appxmanifest kustom (default: Package.appxmanifest di direktori saat ini) |
--no-install |
Jangan memasang atau memodifikasi dependensi; hanya mengonfigurasi identitas debug Electron. |
--keep-identity |
Pertahankan identitas manifes as-is, tanpa menambahkan .debug ke nama paket dan ID aplikasi |
--verbose |
Mengaktifkan output verbose |
Apa fungsinya:
- Mendaftarkan identitas debug untuk proses electron.exe
- Memungkinkan pengujian API yang memerlukan identitas dalam pengembangan Electron
- Menggunakan Package.appxmanifest yang ada untuk konfigurasi identitas
Contoh:
# 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-electron-debug-identity
(Hanya tersedia dalam paket NPM) Hapus identitas paket dari proses debug Electron dengan memulihkan electron.exe asli dari cadangan.
npx winapp node clear-electron-debug-identity [options]
Opsi:
| Option | Deskripsi |
|---|---|
--verbose |
Mengaktifkan output verbose |
Apa fungsinya:
- Memulihkan electron.exe dari cadangan yang dibuat oleh
add-electron-debug-identity - Menghapus file cadangan setelah pemulihan
- Mengembalikan Electron ke status aslinya tanpa identitas paket
Contoh:
# Remove identity from Electron development process
npx winapp node clear-electron-debug-identity
Opsi Global
Semua perintah mendukung opsi global ini:
-
--verbose,-v- Aktifkan output verbose untuk pengelogan terperinci -
--quiet,-q- Menyembunyikan pesan kemajuan -
--help,-h- Tampilkan bantuan perintah
Direktori Singgahan Global
Winapp membuat direktori untuk menyimpan file yang dapat dibagikan di antara beberapa proyek.
Secara default, winapp membuat direktori di $UserProfile/.winapp sebagai direktori cache global.
Untuk menggunakan lokasi yang berbeda, atur WINAPP_CLI_CACHE_DIRECTORY variabel lingkungan.
Dalam cmd:
REM Set a custom location for winapp's global cache
set WINAPP_CLI_CACHE_DIRECTORY=d:\temp\.winapp
Di PowerShell dan pwsh:
# Set a custom location for winapp's global cache
$env:WINAPP_CLI_CACHE_DIRECTORY=d:\temp\.winapp
Winapp akan membuat direktori ini secara otomatis ketika Anda menjalankan perintah seperti init atau restore.
ui
Periksa dan berinteraksi dengan menjalankan UI aplikasi Windows menggunakan UI Automation (UIA).
winapp ui [command] [options]
Perintah:
-
status- Sambungkan ke aplikasi dan tampilkan info -
inspect- Lihat pohon elemen -
search- Temukan elemen menurut pemilih -
get-property- Membaca properti elemen -
get-text/get-value- Membaca nilai/teks dari elemen (TextPattern, ValuePattern, atau Name) -
screenshot- Ambil jendela/elemen sebagai PNG (dialog pengambilan otomatis secara terpisah) -
invoke- Aktifkan elemen (klik, alihkan, perluas) -
click- Klik elemen melalui simulasi mouse (untuk kontrol yang tidak mendukung pemanggilan) -
set-value- Tetapkan nilai pada elemen yang dapat diedit (teks, angka) -
focus- Pindahkan fokus keyboard -
scroll-into-view- Elemen gulir terlihat -
wait-for- Tunggu status elemen -
list-windows- Mencantumkan semua jendela untuk aplikasi -
get-focused- Laporkan elemen yang saat ini difokuskan
Opsi:
-
-a, --app <app>- Aplikasi target (nama, judul, atau PID) -
-w, --window <hwnd>- Jendela target menurut HWND (stabil)
Untuk dokumentasi lengkap, lihat docs/ui-automation.md.
Windows developer