Bagikan melalui


Membuat manifes paket Anda

Jika Anda ingin mengirimkan paket perangkat lunak ke Pengelola Paket Windows Community Repository, mulailah dengan membuat manifes paket. Manifes adalah file YAML yang menjelaskan aplikasi yang akan diinstal.

Anda dapat menggunakan Pengelola Paket Windows Manifest Creator, skrip YAMLCreate PowerShell, atau Anda dapat membuat manifes secara manual mengikuti instruksi di bawah ini.

Catatan

Lihat Faq Manifes di bawah ini untuk informasi tingkat tinggi yang lebih umum yang menjelaskan manifes, paket, dan versi.

Opsi untuk Pembuatan Manifes

Menggunakan WinGetCreate Utility

Anda dapat menginstal wingetcreate utilitas menggunakan perintah di bawah ini.

winget install wingetcreate

Setelah penginstalan, Anda dapat menjalankan wingetcreate new untuk membuat paket baru dan mengisi perintah. Opsi terakhir dalam perintah WinGetCreate adalah mengirimkan manifes ke repositori paket. Jika Anda memilih ya, Anda akan secara otomatis mengirimkan Permintaan Pull (PR) Anda ke Repositori Komunitas Pengelola Paket Windows.

Menggunakan YAMLCreate.ps1

Untuk membantu menulis file manifes, kami telah menyediakan skrip powershell YAMLCreate.ps1 yang terletak di folder Alat di Pengelola Paket Windows Community Repository. Anda dapat menggunakan skrip dengan mengkloning repositori di PC Dan menjalankan skrip langsung dari folder Alat . Skrip akan meminta ANDA untuk URL ke penginstal, kemudian akan meminta Anda untuk mengisi metadata. Mirip dengan menggunakan WinGetCreate, skrip ini akan menawarkan opsi untuk mengirimkan manifes Anda secara otomatis.

Dasar-dasar YAML

Format YAML dipilih untuk manifes paket karena kemudahan relatif keterbacaan dan konsistensi manusia dengan alat pengembangan Microsoft lainnya. Jika Anda tidak terbiasa dengan sintaks YAML, Anda dapat mempelajari dasar-dasar di Learn YAML dalam Y Minutes.

Catatan

Manifes untuk Pengelola Paket Windows saat ini tidak mendukung semua fitur YAML. Fitur YAML yang tidak didukung termasuk jangkar, kunci kompleks, dan set.

Konvensi

Konvensi ini digunakan dalam artikel ini:

  • Di sebelah kiri : adalah kata kunci harfiah yang digunakan dalam definisi manifes.
  • Di sebelah kanan : adalah jenis data. Jenis data dapat menjadi jenis primitif seperti string atau referensi ke struktur kaya yang ditentukan di tempat lain dalam artikel ini.
  • Jenis data] notasi [menunjukkan array dari jenis data yang disebutkan. Misalnya, [ string ] adalah array string.
  • Jenis data} jenis data:notasi {menunjukkan pemetaan satu jenis data ke jenis data lainnya. Misalnya, { string: string } adalah pemetaan string ke string.

Isi manifes

Manifes paket terdiri dari item yang diperlukan dan item opsional yang dapat membantu meningkatkan pengalaman pelanggan menginstal perangkat lunak Anda. Bagian ini menyediakan ringkasan singkat dari skema manifes yang diperlukan dan skema manifes lengkap dengan contoh masing-masing.

Setiap bidang dalam file manifes harus pascal-cased dan tidak dapat diduplikasi.

Untuk daftar lengkap dan deskripsi item dalam manifes, lihat spesifikasi manifes di Repositori Komunitas Pengelola Paket Windows.

Skema minimal yang diperlukan

Seperti yang ditentukan dalam skema JSON singleton, hanya bidang tertentu yang diperlukan. File YAML minimal yang didukung akan terlihat seperti contoh di bawah ini. Format singleton hanya berlaku untuk paket yang berisi satu alat penginstal dan satu lokal. Jika lebih dari satu alat penginstal atau lokal disediakan, beberapa format dan skema file YAML harus digunakan.

Skema partisi ditambahkan untuk membantu UX GitHub. Folder dengan ribuan anak tidak dirender dengan baik di browser.

PackageIdentifier:  # Publisher.package format.
PackageVersion:     # Version numbering format.
PackageLocale:      # BCP 47 format (e.g. en-US)
Publisher:          # The name of the publisher.
PackageName:        # The name of the application.
License:            # The license of the application.
ShortDescription:   # The description of the application.
Installers: 
 - Architecture:    # Enumeration of supported architectures.
   InstallerType:   # Enumeration of supported installer types (exe, msi, msix, inno, wix, nullsoft, appx).
   InstallerUrl:    # Path to download installation file.
   InstallerSha256: # SHA256 calculated from installer.
ManifestType:       # The manifest file type
ManifestVersion: 1.6.0

Beberapa file manifes

Untuk memberikan pengalaman pengguna terbaik, manifes harus berisi meta-data sebanyak mungkin. Untuk memisahkan masalah untuk memvalidasi penginstal dan menyediakan metadata yang dilokalkan, manifes harus dibagi menjadi beberapa file. Jumlah minimum file YAML untuk manifes semacam ini adalah tiga. Lokal tambahan juga harus disediakan.

Contoh di bawah ini menunjukkan banyak bidang metadata opsional dan beberapa lokal. Perhatikan bahwa lokal default memiliki lebih banyak persyaratan daripada lokal tambahan. Dalam perintah perlihatkan, bidang yang diperlukan yang tidak disediakan untuk lokal tambahan akan menampilkan bidang dari lokal default.

Jalur: manifests / m / Microsoft / WindowsTerminal / 1.6.10571.0 / Microsoft.WindowsTerminal.yaml

PackageIdentifier: "Microsoft.WindowsTerminal"
PackageVersion: "1.6.10571.0"
DefaultLocale: "en-US"
ManifestType: "version"
ManifestVersion: "1.6.0"

Catatan

Jika alat penginstal Anda adalah .exe dan dibuat menggunakan Nullsoft atau Inno, Anda dapat menentukan nilai tersebut sebagai gantinya. Ketika Nullsoft atau Inno ditentukan, klien akan secara otomatis mengatur diam dan diam dengan perilaku penginstalan kemajuan untuk penginstal.

Sakelar alat penginstal

Anda sering dapat mencari tahu apa yang tersedia diam Switches untuk alat penginstal dengan meneruskan -? ke alat penginstal dari baris perintah. Berikut adalah beberapa senyap Switches umum yang dapat digunakan untuk berbagai jenis alat penginstal.

Installer Perintah Dokumentasi
MSI /q Opsi Baris Perintah MSI
InstallShield /s Parameter Baris Perintah InstallShield
Penyetelan Inno /SILENT or /VERYSILENT Dokumentasi Penyiapan Inno
Nullsoft /S Penginstal/Pembongkar Senyap Nullsoft

Tips dan praktik terbaik

  • Pengidentifikasi paket harus unik. Anda tidak dapat memiliki beberapa pengiriman dengan pengidentifikasi paket yang sama. Hanya satu permintaan pull per versi paket yang diizinkan.
  • Hindari membuat beberapa folder penerbit. Misalnya, jangan membuat "Contoso Ltd." jika sudah ada folder "Contoso".
  • Semua alat harus mendukung penginstalan senyap. Jika Anda memiliki executable yang tidak mendukung instalasi senyap, maka kami tidak dapat menyediakan alat tersebut saat ini.
  • Sediakan bidang sebanyak mungkin. Semakin banyak meta-data yang Anda berikan semakin baik pengalaman pengguna. Dalam beberapa kasus, bidang mungkin belum didukung oleh klien Pengelola Paket Windows (winget.exe). Misalnya, AppMoniker bidang bersifat opsional. Namun, jika Anda menyertakan bidang ini, pelanggan akan melihat hasil yang Moniker terkait dengan nilai saat melakukan perintah pencarian (misalnya, vscode untuk Visual Studio Code). Jika hanya ada satu aplikasi dengan nilai yang ditentukan Moniker , pelanggan dapat menginstal aplikasi Anda dengan menentukan moniker daripada pengidentifikasi paket yang sepenuhnya memenuhi syarat.
  • Panjang string dalam spesifikasi ini harus dibatasi hingga 100 karakter sebelum pemisah baris.
  • PackageName harus cocok dengan entri yang dibuat di Tambahkan / Hapus Program untuk membantu korelasi dengan manifes untuk mendukung ekspor, dan peningkatan.
  • Publisher harus cocok dengan entri yang dibuat di Tambahkan / Hapus Program untuk membantu korelasi dengan manifes untuk mendukung ekspor, dan peningkatan.
  • Penginstal paket dalam format MSI menggunakan kode produk untuk mengidentifikasi aplikasi secara unik. Kode produk untuk versi paket tertentu harus disertakan dalam manifes untuk membantu memastikan pengalaman peningkatan terbaik.
  • Ketika ada lebih dari satu jenis penginstal untuk versi paket yang ditentukan, instans InstallerType dapat ditempatkan di bawah masing-masing Installers.

Tanya Jawab Umum Manifes

Apa itu manifes?

Manifes adalah file YAML yang berisi metadata yang digunakan oleh Pengelola Paket Windows untuk menginstal dan meningkatkan perangkat lunak pada sistem operasi Windows. Ada ribuan file ini yang dipartisi di bawah direktori manifes di repositori winget-pkgs di GitHub. Struktur direktori Pengelola Paket Windows harus dipartisi sehingga Anda tidak perlu menggulir sebanyak di situs saat mencari manifes.

Apa yang dimaksud dengan paket?

Anggap paket sebagai aplikasi atau program perangkat lunak. Pengelola Paket Windows menggunakan "PackageIdentifier" untuk mewakili paket unik. Ini umumnya dalam bentuk Publisher.Package. Terkadang Anda mungkin melihat nilai tambahan yang dipisahkan oleh periode kedua.

Apa itu versi?

Versi paket dikaitkan dengan rilis tertentu. Dalam beberapa kasus, Anda akan melihat nomor versi semantik yang terbentuk dengan sempurna dan dalam kasus lain Anda mungkin melihat sesuatu yang berbeda. Ini mungkin didorong tanggal atau mungkin memiliki karakter lain dengan beberapa arti khusus paket. Kunci YAML untuk versi paket adalah "PackageVersion".

Untuk informasi selengkapnya tentang memahami struktur direktori dan membuat manifes pertama Anda, lihat Manifes Penulisan dalam repositori winget-pkgs di GitHub.