Aplikasi Windows: pengemasan, penyebaran, dan proses

Catatan

Beberapa informasi berkaitan dengan produk yang telah dirilis sebelumnya, yang mungkin dimodifikasi secara substansial sebelum dirilis secara komersial. Microsoft tidak memberikan jaminan, tersirat maupun tersurat, sehubungan dengan informasi yang diberikan di sini.

Topik ini membahas opsi Anda mengenai:

  • Apakah aplikasi Anda akan dipaketkan atau tidak.
  • Cara Menyebarkan/mendistribusikan aplikasi, dan cara menginstalnya.
  • Proses run-time aplikasi Anda—seberapa terisolasi; dan API apa yang akan tersedia untuknya.

Anda dapat membuat keputusan tersebut untuk aplikasi baru dan yang sudah ada. Tetapi jika Anda masih dalam tahap perencanaan untuk aplikasi baru, maka sebelum Anda mulai memikirkan pertimbangan di atas, pertama-tama putuskan platform pengembangan dan kerangka kerja antarmuka pengguna (UI) apa yang akan Anda gunakan untuk aplikasi Anda. Dan untuk keputusan tersebut, lihat Gambaran umum opsi pengembangan Windows.

Dikemas atau tidak dikemas

Keputusan untuk membuat aplikasi Anda dikemas atau tidak dikemas terlebih dahulu ditentukan oleh konsep yang dikenal sebagai identitas paket, yang akan kami jelaskan di bagian ini. Jika Anda tidak membutuhkannya, maka keputusan turun ke pengalaman alat penginstal yang diinginkan untuk diri Sendiri dan untuk pengguna Anda. Mari kita telusuri detail hal-hal tersebut.

Banyak fitur ekstensibilitas Windows—termasuk tugas latar belakang, pemberitahuan, petak peta langsung, ekstensi menu konteks kustom, dan target berbagi—dapat digunakan oleh aplikasi hanya jika aplikasi tersebut memiliki identitas paket saat runtime. Itu karena sistem operasi (OS) harus dapat mengidentifikasi pemanggil API yang sesuai. Lihat Fitur yang memerlukan identitas paket.

  • Jika Anda perlu menggunakan salah satu fitur tersebut, aplikasi Anda memerlukan identitas paket. Dan oleh karena itu perlu menjadi aplikasi paket (aplikasi paket adalah satu-satunya jenis yang memiliki identitas paket). Aplikasi paket dipaketkan dengan menggunakan teknologi MSIX (lihat Apa itu MSIX?).
    • Untuk aplikasi baru, proses pengemasan bersifat langsung (dan di akhir bagian ini ada info tentang cara melakukannya).
    • Untuk beberapa aplikasi yang ada, Anda dapat mengikuti proses pengemasan yang sama seperti untuk aplikasi baru. Tetapi karena beberapa aplikasi yang ada belum siap untuk semua kontennya ada di dalam paket MSIX, ada opsi agar aplikasi Anda dipaketkan dengan lokasi eksternal. Itu memungkinkan aplikasi Anda untuk memiliki identitas paket; sehingga dapat menggunakan fitur-fitur yang memerlukannya. Untuk informasi selengkapnya, lihat Memberikan identitas paket dengan mengemas dengan lokasi eksternal.
  • Bahkan jika Anda tidak perlu menggunakan salah satu fitur tersebut, maka membuat aplikasi paket masih merupakan ide yang baik. Ini memberi pengguna Anda cara term mudah untuk menginstal, menghapus instalan, dan memperbarui aplikasi Anda. Untuk informasi selengkapnya, lihat Penyebaran/distribusi/penginstalan dalam topik ini.
  • Tetapi membuat aplikasi yang tidak dikemas adalah opsi.

Takeaway adalah bahwa aplikasi paket adalah satu-satunya jenis yang memiliki identitas paket (dan mereka memiliki pengalaman penginstalan terbaik). Aplikasi yang tidak dikemas tidak memiliki identitas paket; sehingga tidak dapat menggunakan API/fitur yang disebutkan di atas.

Untuk detail selengkapnya tentang paket versus yang tidak dikemas, lihat Gambaran umum penyebaran; khususnya, Keuntungan dan kekurangan kemasan bagian aplikasi Anda dalam topik tersebut. Topik itu juga menyebutkan opsi lokasi eksternal yang dibungkus.

Untuk informasi tentang cara mengonfigurasi aplikasi Anda sebagai dikemas atau tidak dikemas:

  • Aplikasi WinUI 3 (SDK Aplikasi Windows). AppxPackage Lihat properti proyek Visual Studio di properti Project; dan lihat Membuat proyek WinUI 3 (SDK Aplikasi Windows) pertama Anda.
  • Aplikasi desktop. Lihat Menyiapkan aplikasi desktop Anda untuk kemasan MSIX.
  • aplikasi Platform Windows Universal (UWP). Aplikasi UWP sudah dikonfigurasi sebagai paket; dan konfigurasi tersebut tidak dapat diubah.

Lihat juga Pengelola Paket Windows dan bagian klien WinGet dalam topik ini.

Penyebaran/distribusi/penginstalan

  • Aplikasi paket dipaketkan dengan menggunakan teknologi MSIX.
    • Aplikasi paket juga diinstal dengan menggunakan MSIX. Tetapi jika Anda memilih untuk mengemas dengan lokasi eksternal, maka Anda dapat menganggapnya sebagai model "bring-your-own-installer". Jadi akan ada beberapa pekerjaan alat penginstal untuk Anda lakukan dengan opsi itu. Untuk informasi selengkapnya, lihat Memberikan identitas paket dengan mengemas dengan lokasi eksternal.
  • Aplikasi yang tidak dipaketkan tidak melibatkan MSIX.

Jadi, mengapa penting apakah aplikasi Anda dipaketkan atau tidak?

  • MSIX memberi pengguna Anda cara mudah untuk menginstal, menghapus instalasi, dan memperbarui aplikasi Anda. Penghapusan instalasi bersih—saat aplikasi Anda dihapus instalannya, sistem dipulihkan ke keadaan yang sama dengan sebelum penginstalan; tidak ada artefak yang tertinggal.
  • Aplikasi semacam ini juga mendukung pembaruan inkremental dan otomatis.
  • Microsoft Store mengoptimalkan aplikasi semacam ini (meskipun dapat digunakan di atau di luar Toko).
  • Ini adalah jalur mudah untuk digunakan melalui lampiran aplikasi MSIX (untuk komputer virtual Azure Virtual Desktop). Untuk informasi selengkapnya, lihat Apa itu lampiran aplikasi MSIX?.
  • Paket yang ditandatangani mendapat manfaat dari anti-perusakan yang kuat. Manfaat ini bahkan lebih besar daripada untuk aplikasi yang tidak dikemas yang diinstal di bawah File Program.

Lihat juga Pengelola Paket Windows dan bagian klien WinGet dalam topik ini.

AppContainer atau IL Sedang

Opsi untuk menjalankan aplikasi Anda di AppContainer, atau tidak, adalah pertanyaan tentang keamanan. Proses aplikasi AppContainer dan proses turunannya berjalan di dalam kontainer aplikasi ringan di mana mereka hanya dapat mengakses sumber daya yang secara khusus diberikan kepada mereka. Dan mereka diisolasi menggunakan sistem file dan virtualisasi registri. Akibatnya, aplikasi yang diterapkan di AppContainer tidak dapat diretas untuk memungkinkan tindakan berbahaya di luar sumber daya yang ditetapkan terbatas.

Aplikasi yang dikemas atau tidak dikemas dapat dikonfigurasi untuk dijalankan di AppContainer. Tetapi prosesnya lebih mudah untuk aplikasi yang dipaketkan. Jika aplikasi bukan aplikasi AppContainer, aplikasi tersebut adalah aplikasi Medium IL .

Untuk informasi selengkapnya, lihat AppContainer untuk aplikasi warisan dan aplikasi MSIX AppContainer.

Untuk informasi tentang cara mengonfigurasi aplikasi Anda agar berjalan di AppContainer atau Medium IL:

  • Aplikasi WinUI 3 (SDK Aplikasi Windows). uap10:TrustLevel Lihat atribut manifes paket aplikasi di Mengonfigurasi proyek WinUI 3 untuk AppContainer.
  • Aplikasi desktop. TrustLevel Lihat properti proyek Visual Studio di aplikasi MSIX AppContainer (di bagian yang sesuai untuk jenis aplikasi Anda).
  • aplikasi Platform Windows Universal (UWP). Aplikasi UWP sudah dikonfigurasi untuk dijalankan di AppContainer; dan konfigurasi tersebut tidak dapat diubah.

Ingat bahwa aplikasi yang tidak dikemas tidak memiliki manifes paket aplikasi. Jadi untuk aplikasi yang tidak dikemas, Anda mendeklarasikan keputusan AppContainer-or-Medium-IL dalam file proyek Anda alih-alih dalam manifes paket aplikasi.

Isolasi aplikasi Win32

Penting

Fitur yang dijelaskan di bagian ini tersedia dalam versi pra-rilis Pratinjau Windows Insider.

Isolasi aplikasi Win32 adalah fitur keamanan yang akan datang di Windows yang, jika aplikasi disusupi, membantu berisi kerusakan, dan melindungi pilihan privasi pengguna. Fitur ini dibangun di atas fondasi AppContainers dan komponen yang memvirtualisasikan sumber daya dan menyediakan akses broker ke sumber daya lain. Untuk dokumentasi dan alat untuk membantu Anda mengisolasi aplikasi, lihat Selamat Datang di repositori isolasi aplikasi Win32.

Kemampuan aplikasi

Kemampuan aplikasi (misalnya, internetClient, lokasi, mikrofon, dan bluetooth) sebagian besar relevan dengan aplikasi paket yang berjalan di AppContainer. Jadi itu termasuk semua aplikasi Platform Windows Universal (UWP), dan beberapa aplikasi desktop.

Tetapi ada beberapa skenario di mana bahkan aplikasi Medium IL (yaitu, bukan aplikasi AppContainer) harus mendeklarasikan kemampuan. Salah satu contohnya adalah kemampuan yang dibatasi runFullTrust .

Untuk detail selengkapnya tentang kemampuan aplikasi, jenis aplikasi apa yang diterapkan, dan cara mengonfigurasinya, lihat Deklarasi kemampuan aplikasi. Anda mengonfigurasi kemampuan dalam manifes paket aplikasi Anda; dan itulah sebabnya aplikasi tersebut hanya berlaku untuk aplikasi paket.

Jenis aplikasi

Aplikasi desktop dan aplikasi Platform Windows Universal (UWP) adalah dua jenis aplikasi utama—meskipun, ada beberapa jenis aplikasi dalam keluarga aplikasi desktop. Memilih kerangka kerja antarmuka pengguna (UI) —WinForms, WPF, Win32, Direct 2D/3D, UWP, atau WinUI 3—adalah salah satu opsi yang bergantung pada beberapa derajat terlepas dari konfigurasi yang dijelaskan dalam topik ini.

Tetapi mari kita lihat bagaimana jenis aplikasi tersebut dapat berbeda satu sama lain dalam hal pengemasan, penyebaran, dan proses.

Pertama, semua aplikasi UWP dipaketkan, dan dijalankan di AppContainer. Tetapi untuk aplikasi desktop, semuanya lebih fleksibel. Anda dapat memilih untuk mengemas aplikasi desktop Anda, atau tidak. Selain itu, secara independen dari keputusan tersebut, Anda dapat memilih untuk mengonfigurasi aplikasi desktop Anda sebagai AppContainer atau aplikasi MEDIUM IL.

Paket Tidak dikemas
AppContainer Aplikasi desktop
Aplikasi UWP
Aplikasi desktop
IL Sedang Aplikasi desktop Aplikasi desktop

Untuk aplikasi paket, untuk mengonfigurasi jenis aplikasi yang Anda inginkan, Anda menggunakan uap10:RuntimeBehavior atribut dalam manifes paket aplikasi Anda (lihat Aplikasi (Windows 10)).

  • Aplikasi desktop adalah Windows .exe, biasanya dengan fungsi titik masuk utama atau WinMain . Untuk mengonfigurasi aplikasi Anda sebagai aplikasi desktop, atur uap10:RuntimeBehavior ke "packagedClassicApp" atau "win32App".
    • Nilai "packagedClassicApp" menunjukkan aplikasi WinUI 3 (SDK Aplikasi Windows) atau aplikasi Desktop Bridge (Centennial). Perbedaannya adalah bahwa aplikasi Centennial berjalan di AppContainer.
    • Dan "win32App" menunjukkan jenis aplikasi Win32 lainnya (termasuk aplikasi yang dipaketkan dengan lokasi eksternal).
  • Terakhir, pengaturan uap10:RuntimeBehavior ke "windowsApp" memberi Anda aplikasi UWP.

Untuk semua opsi untuk jenis aplikasi yang dapat Anda kembangkan, lihat Pengembangan aplikasi Windows: opsi dan fitur.

SDK Aplikasi Windows—tergantung kerangka kerja atau mandiri

Jika Anda mengembangkan atau memelihara aplikasi yang memanfaatkan SDK Aplikasi Windows, maka Anda memiliki keputusan lebih lanjut untuk dibuat. Karena ada dua cara berikut di mana Anda dapat menyebarkan SDK Aplikasi Windows yang bergantung pada aplikasi Anda:

  • Framework-dependent (default). Aplikasi Anda memerlukan runtime SDK Aplikasi Windows dan/atau paket Framework untuk hadir di komputer target.
  • Mandiri. Aplikasi Anda membawa dependensi SDK Aplikasi Windows.

Untuk informasi selengkapnya, lihat gambaran umum penyebaran SDK Aplikasi Windows.

Pengelola Paket Windows dan klien WinGet

Manajer paket dapat membantu pengguna Anda menginstal/meningkatkan/mengonfigurasi perangkat lunak Anda dengan mengotomatiskan alur kerja. Manajer paket dapat membantu menginstal perangkat lunak apa pun, tetapi mereka cenderung digunakan sebagian besar untuk menginstal alat pengembang. Jadi, jika Anda membangun alat pengembang, maka Anda mungkin tertarik sebagian pada opsi ini. Tapi begini cara kerjanya:

  • Anda, sebagai pengembang perangkat lunak, mendefinisikan ke manajer paket (dalam bentuk instruksi deklaratif) semua bagian yang diperlukan untuk penginstalan produk Anda yang sukses.
  • Dan kemudian ketika pengguna menginstal perangkat lunak Anda, manajer paket mengikuti instruksi deklaratif Anda untuk mengotomatiskan alur kerja penginstalan dan konfigurasi.

Hasilnya adalah pengurangan waktu yang dihabiskan untuk menyiapkan lingkungan pengguna, dan kompatibilitas yang lebih baik antara komponen yang diinstal. Dan Anda dapat menggunakan Pengelola Paket Windows untuk mendistribusikan aplikasi yang dikemas atau tidak dikemas dalam format seperti .msix, , .msidan .exe.

Untuk informasi selengkapnya, lihat Pengelola Paket Windows.