Aplikasi Windows: pengemasan, penyebaran, dan proses

Topik ini membahas opsi Anda mengenai:

  • Opsi pengemasan mana yang akan digunakan untuk aplikasi Anda (dikemas, dikemas dengan lokasi eksternal, atau tidak dikemas).
  • Cara Menyebarkan/mendistribusikan aplikasi, dan cara menginstalnya.
  • Proses aplikasi Anda saat runtime, termasuk seberapa terisolasi aplikasi tersebut 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.

Opsi pengemasan: dikemas, dikemas dengan lokasi eksternal, atau tidak dikemas

Keputusan tentang opsi pengemasan mana yang akan digunakan untuk aplikasi Anda pertama kali ditentukan oleh konsep yang dikenal sebagai identitas paket. Banyak Windows fitur ekstensibilitas (tugas latar belakang, skenario pemberitahuan push yang menggunakan pengiriman latar belakang atau aktivasi COM, ekstensi menu konteks kustom, dan target berbagi) dapat digunakan oleh aplikasi hanya jika aplikasi tersebut memiliki identitas paket saat runtime, karena sistem operasi (OS) harus dapat mengidentifikasi pemanggil API yang sesuai. Hanya aplikasi paket (termasuk aplikasi yang di kemas dengan lokasi eksternal) yang memiliki identitas paket.

Untuk penjelasan lengkap tentang model yang dikemas, dikemas dengan lokasi eksternal, dan model yang tidak dikemas, dan cara memilih di antaranya, lihat Gambaran umum Kemasan. Untuk fitur yang bergantung pada identitas paket, lihat Fitur yang memerlukan identitas paket.

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

Lihat juga Package Manager Windows dan klien WinGet dalam topik ini.

Penyebaran/distribusi/penginstalan

Aplikasi paket dipaketkan dan diinstal dengan menggunakan MSIX. Jika Anda memilih untuk mengemas dengan lokasi eksternal, itu adalah model "bring-your-own-installer", jadi Anda masih melakukan pekerjaan penginstal sendiri (lihat Memberikan identitas paket dengan mengemas dengan lokasi eksternal). Aplikasi yang tidak dipaketkan tidak melibatkan MSIX.

Pengemasan penting karena MSIX memberi pengguna Anda pengalaman instalasi, pencopotan pemasangan, dan pembaruan yang bersih, mendukung pembaruan inkremental dan otomatis, dioptimalkan oleh Microsoft Store, bekerja dengan MSIX app attach untuk Azure Virtual Desktop, serta mendapat manfaat dari perlindungan anti-tamper yang kuat saat ditandatangani.

Untuk panduan penyebaran dan distribusi, lihat Ringkasan paket dan sebarkan dan Pilih jalur distribusi. Lihat juga Windows Package Manager dan bagian klien WinGet dalam topik ini.

AppContainer atau Medium IL

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 diberikan secara khusus 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 (SDK Aplikasi Windows). Lihat atribut manifes paket aplikasi uap10:TrustLevel di Konfigurasi proyek WinUI untuk AppContainer.
  • Aplikasi desktop. Lihat properti proyek TrustLevel Visual Studio di aplikasi AppContainer MSIX (di bagian yang sesuai untuk jenis aplikasi Anda).
  • aplikasi Universal Windows Platform (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 dipaketkan, Anda mendeklarasikan keputusan AppContainer-atau-Medium-IL dalam file project Anda alih-alih dalam manifes paket aplikasi.

Isolasi aplikasi Win32

Isolasi aplikasi Win32 adalah fitur keamanan (yang tersedia di Windows 11 versi 24H2 dan yang lebih baru) yang membantu membatasi dampak jika aplikasi berhasil disusupi, serta melindungi preferensi privasi pengguna. Ini dibangun berdasarkan AppContainers dan komponen yang memvirtualisasikan sumber daya serta menyediakan akses yang diperantarai. Untuk informasi selengkapnya, lihat gambaran umum isolasi aplikasi Win32 dan repositori GitHub 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 aplikasi all Universal Windows Platform (UWP), dan aplikasi desktop some.

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 kemampuan tersebut hanya berlaku untuk aplikasi berpaket.

Jenis aplikasi

Aplikasi desktop dan aplikasi Universal Windows Platform (UWP) adalah dua jenis aplikasi utama, meskipun ada beberapa jenis aplikasi dalam keluarga aplikasi desktop. Memilih kerangka kerja UI (WinForms, WPF, Win32, Direct 2D/3D, atau WinUI 3) adalah untuk beberapa derajat independen 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.

Dikemas dalam kemasan Unpackaged
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 atribut uap10:RuntimeBehavior dalam manifes paket aplikasi Anda (lihat Application (Windows 10)).

  • Aplikasi Desktop adalah Windows .exe, biasanya dengan fungsi utama atau WinMain sebagai titik masuk. Untuk mengonfigurasi aplikasi Anda sebagai aplikasi desktop, atur uap10:RuntimeBehavior ke "packagedClassicApp" atau "win32App".
    • Nilai "packagedClassicApp" menunjukkan aplikasi WinUI (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 Windows app: opsi dan fitur.

SDK Aplikasi Windows: bergantung pada framework atau mandiri

Jika aplikasi Anda menggunakan SDK Aplikasi Windows, maka Anda juga memilih cara menyebarkan runtime SDK yang bergantung pada aplikasi Anda: bergantung pada kerangka kerja (default, di mana runtime SDK Aplikasi Windows dan/atau paket Kerangka Kerja harus ada di komputer target) atau mandiri (aplikasi Anda membawa dependensi SDK Aplikasi Windows dengannya). Untuk informasi selengkapnya, lihat gambaran umum penyebaran SDK Aplikasi Windows.

Windows Package Manager dan klien WinGet

Package manager 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 developer tools. Jadi, jika Anda membangun alat pengembang, maka Anda mungkin sangat tertarik dengan opsi ini. Tapi begini cara kerjanya:

  • Anda, sebagai pengembang perangkat lunak, mendefinisikan ke package manager (dalam bentuk instruksi deklaratif) semua bagian yang diperlukan untuk penginstalan produk Anda yang sukses.
  • Dan kemudian ketika pengguna menginstal perangkat lunak Anda, package manager 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 Windows Package Manager untuk mendistribusikan aplikasi yang dikemas atau tidak dikemas dalam format seperti .msix, .msi, dan .exe.

Untuk informasi selengkapnya, lihat Windows Package Manager.