Aplikasi MSIX AppContainer

Topik AppContainer untuk aplikasi warisan mencakup semua info latar belakang yang diperlukan tentang apa lingkungan AppContainer dan manfaatnya; topik itu juga berisi contoh kode C# dan C++ untuk menguji apakah proses berjalan di dalam AppContainer atau tidak.

Topik yang Anda baca sekarang menunjukkan bagaimana Anda dapat mengambil aplikasi yang dikemas menggunakan MSIX, dan dengan mudah mengonfigurasinya untuk dijalankan di lingkungan AppContainer (dalam kontainer aplikasi ringan). aplikasi Platform Windows Universal (UWP) adalah aplikasi AppContainer secara otomatis. Tetapi Anda juga dapat mengonfigurasi aplikasi desktop yang dipaketkan dengan MSIX untuk menjadi aplikasi AppContainer.

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.

Tip

Aplikasi yang tidak dikemas juga dapat berjalan di AppContainer. Tetapi sangat mudah untuk menggunakan AppContainer jika Anda mengemas menggunakan MSIX. Jadi semua skenario yang dijelaskan dalam topik ini adalah tentang aplikasi kemasan.

Mengonfigurasi proyek WinUI 3 untuk AppContainer

Langkah-langkah dalam Membuat proyek baru untuk aplikasi desktop C# atau C++ WinUI 3 yang dipaketkan menunjukkan cara default dan direkomendasikan untuk membuat proyek WinUI 3 baru.

Secara default, file proyek Package.appxmanifest berisi konfigurasi untuk paket kepercayaan penuh (yaitu, tingkat integritas sedang). Bagian yang relevan terlihat seperti ini:

...
<Applications>
  <Application ...
    EntryPoint="$targetentrypoint$">
    ...
  </Application>
</Applications>

<Capabilities>
  <rescap:Capability Name="runFullTrust" />
</Capabilities>
...

Untuk mengonfigurasi paket sebagai berisi aplikasi AppContainer, Anda dapat mengedit atribut EntryPoint , dan menghapus deklarasi kemampuan terbatas (tetapi pertahankan elemen Kapabilitas ). Seperti ini:

...
<Applications>
  <Application ...
    EntryPoint="windows.partialTrustApplication">
    ...
  </Application>
</Applications>

<Capabilities/>
...

Jika paket Anda diinstal pada Windows 10, versi 2004 (10.0; Build 19041) dan/atau yang lebih baru, lalu alih-alih mengatur EntryPoint, Anda dapat mengatur uap10:TrustLevel dan uap10:RuntimeBehavior (setelah mendeklarasikan awalan namespace XML, seperti yang ditunjukkan). Seperti ini:

<Package ...
  xmlns:uap10="http://schemas.microsoft.com/appx/manifest/uap/windows10/10"
  ...>
...
  <Applications>
    <Application ...
      EntryPoint="$targetentrypoint$"
      uap10:TrustLevel="appContainer"
      uap10:RuntimeBehavior="packagedClassicApp">
      ...
    </Application>
  </Applications>

  <Capabilities/>
...

Untuk informasi selengkapnya, lihat topik-topik ini:

Mengonfigurasi solusi dua proyek WinUI 3 untuk AppContainer

Bagian sebelumnya menjelaskan proses untuk MSIX proyek tunggal; yang kami rekomendasikan, dan yang merupakan default untuk proyek WinUI 3 baru. Untuk informasi selengkapnya, lihat Mengemas aplikasi Anda menggunakan MSIX proyek tunggal.

Tetapi Anda mungkin memiliki proyek WinUI 3 yang berasal dari sebelum pengenalan fitur MSIX proyek tunggal. Dalam hal ini Anda akan memiliki dua proyek dalam solusi Anda—proyek aplikasi Anda, ditambah Proyek Kemasan Aplikasi Windows tambahan. Jika Anda dapat memigrasikan proyek Anda ke MSIX proyek tunggal, maka itu ideal. Dan Anda akan dapat mengikuti panduan di bagian sebelumnya. Untuk informasi selengkapnya, lihat Mengemas aplikasi Anda menggunakan MSIX proyek tunggal.

Jika Anda tidak dapat memigrasikan proyek Anda ke MSIX proyek tunggal, bagian ini menjelaskan cara mengonfigurasi paket Anda sebagai berisi aplikasi AppContainer.

Proyek Pengemasan Aplikasi Windows menyiratkan pengaturan default yang mengambil alih konfigurasi di Package.appxmanifest. Proyek berperilaku seolah-olah ada properti TrustLevel dalam file proyek yang diatur ke nilai Penuh.

Untuk memperbaiki nilai properti tersirat itu, perluas node Aplikasi Dependensi>proyek pengemasan, dan pilih simpul yang mewakili referensi ke proyek WinUI 3 Anda. Kemudian di jendela Properti Visual Studio (bukan properti proyek), untuk properti Tingkat Kepercayaan pilih nilai Kepercayaan Parsial.

File proyek untuk proyek pengemasan sekarang berisi properti eksplisit ini:

...
<ItemGroup>
  <ProjectReference Include="...">
    <TrustLevel>Partial</TrustLevel>
  </ProjectReference>
</ItemGroup>
...

Dan sekarang Anda dapat menghapus <rescap:Capability Name="runFullTrust" /> dari file proyek Package.appxmanifest kemasan.

Mengonfigurasi Proyek Aplikasi Windows (aplikasi jenis C++ Win32 WndProc) untuk AppContainer

Bagian ini untuk Anda jika Anda memiliki proyek C++ Win32 WndProc-type yang dibuat dengan templat proyek Proyek Aplikasi Windows. Langkah pertama, singkatnya, adalah menambahkan ke solusi Anda C++ Proyek Kemasan Aplikasi Windows. Ada detail selengkapnya tentang langkah-langkah yang tepat dalam Menyiapkan aplikasi desktop Anda untuk kemasan MSIX di Visual Studio. Topik tersebut berlaku untuk aplikasi desktop yang ditulis dalam C++ atau C#.

Kemudian buka file proyek kemasan baru Anda, dan tambahkan properti TrustLevel ke properti ProjectReference yang ada seperti ini:

...
<ItemGroup>
  <ProjectReference Include="...">
    <TrustLevel>Partial</TrustLevel>
  </ProjectReference>
</ItemGroup>
...

Saat membuat, Anda mungkin melihat kesalahan "kesalahan APPX1673: Manifes aplikasi tidak memiliki elemen yang diperlukan 'Telepon Identity'". Jika itu terjadi, edit file proyek Package.appxmanifest seperti ini:

<Package ...
  xmlns:mp="http://schemas.microsoft.com/appx/2014/phone/manifest"
  ...>
...
  <mp:PhoneIdentity
      PhoneProductId="A GUID in the form xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx."
      PhonePublisherId="A GUID in the form xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx.">
  </mp:PhoneIdentity>
...

Mengonfigurasi proyek WPF atau WinForms untuk AppContainer

Bagian ini adalah untuk Anda jika Anda memiliki:

Langkah pertama, singkatnya, adalah menambahkan ke solusi Anda C# Windows Application Packaging Project. Ada detail selengkapnya tentang langkah-langkah yang tepat dalam Menyiapkan aplikasi desktop Anda untuk kemasan MSIX di Visual Studio.

Kemudian perluas node Aplikasi Dependensi>proyek pengemasan, dan pilih simpul yang mewakili referensi ke proyek WPF atau WinForms Anda. Kemudian di jendela Properti Visual Studio (bukan properti proyek), untuk properti Tingkat Kepercayaan pilih nilai Kepercayaan Parsial.