referensi CLI Pengembangan Aplikasi Windows

Penting

Windows App Development CLI saat ini dalam pratinjau umum. Fitur dan perintah dapat berubah sebelum rilis akhir.

Halaman ini mendokumen semua perintah yang tersedia untuk winapp CLI.

Opsi global

Semua perintah mendukung opsi global ini:

Option Deskripsi
--verbose, -v Aktifkan output verbose untuk pencatatan terperinci
--quiet, -q Menyembunyikan pesan kemajuan
--help, -h Perlihatkan bantuan perintah

Direktori cache global

WinApp membuat direktori untuk menyimpan file yang dapat dibagikan di antara beberapa proyek. Secara default, ini adalah $UserProfile/.winapp.

Untuk menggunakan lokasi yang berbeda, atur WINAPP_CLI_CACHE_DIRECTORY variabel lingkungan:

$env:WINAPP_CLI_CACHE_DIRECTORY = "d:\temp\.winapp"

Perintah penyiapan

inisialisasi

Menginisialisasi direktori dengan Windows SDK, Windows App SDK, dan aset yang diperlukan untuk pengembangan Windows modern.

winapp init [base-directory] [options]

Argumen:

Argumen Deskripsi
base-directory Direktori dasar/akar untuk aplikasi/ruang kerja (default: direktori saat ini)

Opsi:

Option Deskripsi
--config-dir <path> Direktori untuk membaca/menyimpan konfigurasi (default: direktori saat ini)
--setup-sdks Mode penginstalan SDK: stable (default), preview, experimental, atau none
--ignore-config, --no-config Jangan gunakan file konfigurasi untuk manajemen versi
--no-gitignore Jangan perbarui file .gitignore
--use-defaults, --no-prompt Jangan tampilkan prompt, dan gunakan pengaturan default untuk semua isian
--config-only Hanya tangani operasi file konfigurasi, lewati penginstalan paket

Apa fungsinya:

  • Membuat file konfigurasi winapp.yaml
  • Mengunduh paket Windows SDK dan Windows App SDK
  • Menghasilkan header dan biner C++/WinRT
  • Membuat AppxManifest.xml
  • Menyiapkan alat build dan mengaktifkan mode pengembang
  • Memperbarui .gitignore untuk mengecualikan file yang dihasilkan

Deteksi proyek .NET otomatis:

Ketika file .csproj ditemukan di direktori target, init menggunakan alur khusus .NET yang disederhanakan:

  • Memvalidasi dan memperbarui TargetFramework ke TFM yang kompatibel dengan Windows (misalnya, net10.0-windows10.0.26100.0)
  • Menambahkan Microsoft.WindowsAppSDK dan Microsoft.Windows.SDK.BuildTools sebagai entri NuGet PackageReference langsung di .csproj
  • Menghasilkan appxmanifest.xml, aset, dan sertifikat pengembangan
  • Tidak membuat winapp.yaml atau mengunduh proyeksi C++ (gunakan dotnet restore untuk 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

Tip

Jika Anda menjalankan init dengan --setup-sdks none dan nantinya memerlukan SDK, jalankan kembali winapp init --use-defaults --setup-sdks stable. Ini mempertahankan file yang ada (manifes, dll.).

memulihkan

Pulihkan paket dan hasilkan ulang berkas berdasarkan konfigurasi yang ada winapp.yaml.

winapp restore [options]

Opsi:

Option Deskripsi
--config-dir <path> Direktori yang berisi winapp.yaml (default: direktori saat ini)

Apa fungsinya:

  • Membaca konfigurasi winapp.yaml yang ada
  • Mengunduh/memperbarui paket SDK ke versi yang ditentukan
  • Meregenerasi header dan biner C++/WinRT

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:

Option Deskripsi
--config-dir <path> Direktori yang berisi winapp.yaml (default: direktori saat ini)
--setup-sdks Mode penginstalan SDK: stable (default), preview, experimental, atau none

Apa fungsinya:

  • Membaca konfigurasi winapp.yaml yang sudah ada
  • Memperbarui semua paket ke versi terbaru yang tersedia
  • Memperbarui file winapp.yaml dengan 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

Perintah pengemasan

paket

Buat paket MSIX dari direktori aplikasi yang disiapkan. Mengharuskan file appxmanifest.xml ada di direktori target, di direktori saat ini, atau diteruskan dengan opsi --manifest.

winapp pack <input-folder> [options]

Argumen:

Argumen Deskripsi
input-folder Direktori yang berisi berkas aplikasi untuk dikemas

Opsi:

Option Deskripsi
--output <filename> Nama berkas keluaran MSIX (default: <name>.msix)
--name <name> Nama paket (default: dari manifest)
--manifest <path> Jalur ke AppxManifest.xml (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 Bundel Windows App SDK runtime
--skip-pri Lewati pembuatan file PRI
--executable <path> Jalur ke executable relatif terhadap folder input. Digunakan untuk menyelesaikan $targetnametoken$ placeholder dalam berkas manifes.

Apa fungsinya:

  • Memvalidasi dan memproses file AppxManifest.xml
  • Menyelesaikan token $placeholder$ dalam manifes (lihat Placeholder manifes)
  • Memastikan dependensi kerangka kerja yang tepat
  • Memperbarui manifes berdampingan dengan pendaftaran
  • Menangani penyebaran Windows App SDK mandiri
  • Menandatangani paket jika sertifikat disediakan

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 runtime
winapp pack ./dist --generate-cert --install-cert --self-contained

# Package with explicit executable
winapp pack ./dist --executable MyApp.exe

create-debug-identity

Buat identitas aplikasi untuk penelusuran kesalahan tanpa kemasan MSIX penuh menggunakan lokasi eksternal/kemasan jarang.

winapp create-debug-identity [entrypoint] [options]

Argumen:

Argumen Deskripsi
entrypoint Jalur ke executable (.exe) atau skrip yang membutuhkan identitas

Opsi:

Option Deskripsi
--manifest <path> Jalur ke AppxManifest.xml (default: ./appxmanifest.xml)
--no-install Jangan instal paket setelah pembuatan
--keep-identity Pertahankan identitas manifes as-is, tanpa menambahkan .debug ke 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

Perintah manifes

pembuatan manifest

Buat AppxManifest.xml dari templat.

winapp manifest generate [directory] [options]

Argumen:

Argumen Deskripsi
directory Direktori untuk menghasilkan manifes di (default: direktori saat ini)

Opsi:

Option Deskripsi
--package-name <name> Nama paket (default: nama folder)
--publisher-name <name> Publisher CN (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) atau sparse
--logo-path <path> Jalur ke file gambar logo
--if-exists <Error\|Overwrite\|Skip> Perilaku jika file sudah ada (default: Kesalahan)

Template:

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" menjadi Executable="MyApp.exe"
$targetentrypoint$ Windows.FullTrustApplication Selalu diselesaikan secara otomatis

Bagaimana placeholder diidentifikasi:

  • winapp pack memecahkan masalah $targetnametoken$ dengan menggunakan pilihan --executable atau dengan mendeteksi secara otomatis satu .exe di folder input.
  • winapp create-debug-identity menentukan $targetnametoken$ dari argumen titik masuk saat disediakan.
  • winapp manifest generate --executable mengekstrak metadata dari executable tetapi menyimpan $targetnametoken$.exe dalam manifes untuk resolusi nanti.

Tip

Menyimpan $targetnametoken$ dalam manifes check-in Anda menghindari pencantuman nama eksekutabel secara statis dan berfungsi baik dengan build winapp pack maupun 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

aset pembaruan manifes

Hasilkan semua aset gambar MSIX yang diperlukan dari satu gambar sumber.

winapp manifest update-assets <image-path> [options]

Argumen:

Argumen Deskripsi
image-path Jalur ke file gambar sumber (PNG, JPG, GIF, dll.)

Opsi:

Option Deskripsi
--manifest <path> Jalur ke file AppxManifest.xml (default: cari direktori saat ini)

Mengambil satu gambar sumber dan secara otomatis menghasilkan semua 12 aset gambar MSIX yang diperlukan pada dimensi yang benar. Aset disimpan ke Assets direktori berdasarkan lokasi manifes.

Contoh:

# Generate assets with auto-detected manifest
winapp manifest update-assets mylogo.png

# Specify manifest location explicitly
winapp manifest update-assets mylogo.png --manifest ./dist/appxmanifest.xml

Perintah sertifikat dan penandatanganan

menghasilkan sertifikat

Hasilkan sertifikat pengembangan untuk penandatanganan paket.

winapp cert generate [options]

Opsi:

Option Deskripsi
--manifest <appxmanifest.xml> Ekstrak informasi publisher dari appxmanifest.xml
--publisher <name> nama Publisher untuk sertifikat
--output <path> Jalur output file sertifikat
--password <password> Kata sandi sertifikat (default: "kata sandi")
--valid-days <days> Jumlah hari sertifikat valid (default: 365)
--install Menginstal sertifikat ke penyimpanan komputer lokal setelah pembuatan
--if-exists <Error\|Overwrite\|Skip> Perilaku jika file sertifikat sudah ada (default: Kesalahan)

instalasi sertifikat

Instal sertifikat ke penyimpanan sertifikat komputer.

winapp cert install <cert-path>

Argumen:

Argumen Deskripsi
cert-path Jalur ke file sertifikat untuk diinstal

Contoh:

# Generate certificate for specific publisher
winapp cert generate --publisher "CN=My Company" --output ./mycert.pfx

# Install certificate to machine
winapp cert install ./mycert.pfx

tanda

Tanda tangani paket MSIX dan executable dengan sertifikat.

winapp sign <file-path> [options]

Argumen:

Argumen Deskripsi
file-path Lokasi jalur ke paket MSIX atau file yang dapat dieksekusi untuk ditandatangani secara digital

Opsi:

Option Deskripsi
--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

Perintah utilitas

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 Windows SDK 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 mengunduh CLI Pengembang Microsoft Store jika belum diunduh. Pelajari selengkapnya di Microsoft Store Developer CLI.

winapp store [args...]

Argumen:

Argumen Deskripsi
args... Argumen untuk diteruskan langsung ke msstore CLI

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]

Mengembalikan jalur ke .winapp direktori ruang kerja, direktori penginstalan paket, dan lokasi header yang dihasilkan.


perintah Node.js/Electron

Perintah ini hanya tersedia dalam paket NPM.

node membuat-addon

Hasilkan templat addon C++ atau C# asli dengan Windows SDK dan integrasi Windows App SDK.

npx winapp node create-addon [options]

Opsi:

Option Deskripsi
--name <name> Nama Tambahan (default: "nativeWindowsAddon")
--template Pilih jenis addon: cs atau cpp (default: cpp)
--verbose Mengaktifkan output verbose

Apa fungsinya:

  • Membuat direktori addon dengan file templat
  • Menghasilkan file binding.gyp dan addon dengan contoh Windows SDK
  • Menginstal dependensi npm yang diperlukan
  • Menambahkan skrip build ke package.json

Contoh:

# Generate addon with default name
npx winapp node create-addon

# Generate custom named C# addon
npx winapp node create-addon --name myWindowsAddon --template cs

node add-electron-debug-identity

Tambahkan identitas aplikasi dalam proses pengembangan Electron dengan menggunakan pengemasan parsial. Memerlukan appxmanifest.xml (buat dengan winapp init atau winapp manifest generate).

Penting

Ada masalah yang diketahui dengan pengemasan yang jarang digunakan pada aplikasi Electron, yang menyebabkan aplikasi mengalami crash pada saat mulai atau tidak dapat merender konten web. Masalah ini telah diperbaiki di Windows tetapi belum disebarluaskan ke semua perangkat. Anda dapat menonaktifkan sandboxing di aplikasi Electron dengan --no-sandbox flag sebagai solusi sementara. 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 appxmanifest.xml kustom (default: appxmanifest.xml di direktori saat ini)
--no-install Jangan memasang atau memodifikasi dependensi; hanya mengonfigurasi identitas debug Electron.
--keep-identity Pertahankan identitas manifes seperti adanya, tanpa menambahkan .debug
--verbose Mengaktifkan output verbose

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/appxmanifest.xml

node clear-electron-debug-identity

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

Contoh:

# Remove identity from Electron development process
npx winapp node clear-electron-debug-identity