Aracılığıyla paylaş


MSIX AppContainer uygulamaları

Önemli

AppContainer'da çalışan herhangi bir işlem için DeploymentManager.Initialize öğesinin çağrılmasına neden olursanız uygulamanızın packageManagementpaket bildiriminizdekısıtlanmış özelliği bildirmesi gerekir. Diğer ayrıntılar için bkz. Deployment Manager otomatik başlatıcısı.

Eski uygulamalar için AppContainer konusu, AppContainer ortamının ne olduğu ve avantajları hakkında tüm gerekli arka plan bilgilerini kapsar; bu konu, bir işlemin AppContainer içinde çalışıp çalışmadığını test için C# ve C++ kod örneklerini de içerir.

Okuduğunız konu artık MSIX kullanılarak paketlenmiş bir uygulamayı nasıl alabileceğinizi ve appContainer ortamında (basit bir uygulama kapsayıcısında) çalışacak şekilde nasıl yapılandırabileceğinizi göstermektedir. Evrensel Windows Platformu (UWP) uygulamaları otomatik olarak AppContainer uygulamalarıdır. Ancak MSIX ile birlikte gelen masaüstü uygulamanızı appContainer uygulaması olacak şekilde de yapılandırabilirsiniz.

AppContainer uygulamasının süreci ve alt işlemleri, yalnızca kendilerine özel olarak verilen kaynaklara erişebilecekleri basit bir uygulama kapsayıcısı içinde çalışır. Ayrıca dosya sistemi ve kayıt defteri sanallaştırması kullanılarak yalıtılmışlardır. Sonuç olarak, AppContainer'da çalıştırılan uygulamalar, sınırlı atanan kaynakların dışında kötü amaçlı eylemlere izin vermek için ele geçirilemez.

Tavsiye

Paketlenmemiş uygulamalar appContainer'da da çalıştırılabilir. Ancak MSIX kullanarak paketlediyseniz AppContainer'ı kullanmak özellikle kolaydır. Bu nedenle, bu konu başlığında açıklanan tüm senaryolar paketlenmiş uygulamalarla ilgilidir.

AppContainer için WinUI 3 projesi yapılandırma

Paketlenmiş bir C# veya C++ WinUI 3 masaüstü uygulaması için yeni proje oluşturma'daki adımlar, yeni bir WinUI 3 projesi oluşturmanın varsayılan ve önerilen yolunu gösterir.

Varsayılan olarak, projenin Package.appxmanifest dosyası tam güven (orta bütünlük düzeyi) paketi için yapılandırma içerir. İlgili bölümler şöyle görünür:

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

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

Paketi appContainer uygulaması içerecek şekilde yapılandırmak için EntryPoint özniteliğini düzenleyebilir ve kısıtlanmış yetenek bildirimini kaldırabilirsiniz (ancak Capabilities öğesini koruyabilirsiniz). Böyle:

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

<Capabilities/>
...

Paketiniz Windows 10, sürüm 2004 (10.0; Derleme 19041) ve/veya üzeri bir sürümde yükleniyorsa, EntryPoint'i ayarlamak yerine (xml ad alanı ön ekini bildirdikten sonra, gösterildiği gibi) uap10:TrustLevel ve uap10:RuntimeBehavior ayarlayabilirsiniz. Böyle:

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

Daha fazla bilgi için şu konulara bakın:

AppContainer için WinUI 3 iki projeli bir çözüm yapılandırma

Önceki bölümde, tek projeli MSIX işlemi açıklanmıştır, ki bunu öneriyoruz. Bu, yeni WinUI 3 projeleri için varsayılan olan işlemdir. Daha fazla bilgi için bkz . Uygulamanızı tek projeli MSIX kullanarak paketleme.

Ancak, tek projeli MSIX özelliğinin kullanıma sunulmasından önceki bir WinUI 3 projeniz olabilir. Bu durumda, çözümünüzde uygulama projeniz ve ek bir Windows Uygulaması Paketleme Projesi olmak üzere iki projeniz olur. Projenizi tek projeli MSIX'e geçirebiliyorsanız bu idealdir. Ayrıca önceki bölümde yer alan yönergeleri izleyebilirsiniz. Daha fazla bilgi için bkz . Uygulamanızı tek projeli MSIX kullanarak paketleme.

Projenizi tek projeli MSIX'e geçiremiyorsanız , bu bölümde paketinizi AppContainer uygulaması içerecek şekilde yapılandırma açıklanmaktadır.

Windows Uygulama Paketleme Projesi, içindeki Package.appxmanifestyapılandırmayı geçersiz kılan varsayılan bir ayar anlamına gelir. Proje, proje dosyasında Tam değerine ayarlanmış bir TrustLevel özelliği varmış gibi davranır.

Bu zımni özellik değerini düzeltmek için paketleme projesinin Dependencies>Applications düğümünü genişletin ve WinUI 3 projenize başvuruyu temsil eden düğümü seçin. Ardından, Visual Studio'nun Özellikler penceresinde (proje özelliklerinde değil), Güven Düzeyi özelliği için Kısmi Güven değerini seçin.

Paketleme projesinin proje dosyası artık şu açık özelliği içerir:

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

Artık <rescap:Capability Name="runFullTrust" />'i paketleme projesinin Package.appxmanifest dosyasından kaldırabilirsiniz.

AppContainer için bir Windows Uygulama Projesi (C++ Win32 WndProc türü uygulama) yapılandırma

Bu bölüm, Windows Uygulama Projesi proje şablonuyla oluşturulmuş bir C++ Win32 WndProc türü projeniz varsa size yöneliktir. Özetle ilk adım, çözümünüzde bir C++ Windows Uygulaması Paketleme Projesi eklemektir. Visual Studio'da MSIX paketlemesi için masaüstü uygulamanızı ayarlama makalesindeki tam adımlar hakkında daha fazla ayrıntı vardır. Bu konu C++ veya C# dilinde yazılmış masaüstü uygulamaları için geçerlidir.

Ardından yeni paketleme projenizin proje dosyasını açın ve var olan ProjectReference özelliğine aşağıdaki gibi bir TrustLevel özelliği ekleyin:

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

Oluştururken "hata APPX1673: Uygulama bildiriminde gerekli öğe 'PhoneIdentity' eksik" hatasını görebilirsiniz. Böyle bir durumda projenin Package.appxmanifest dosyasını şu şekilde düzenleyin:

<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>
...

AppContainer için WPF veya WinForms projesi yapılandırma

Aşağıdakilerden herhangi biri varsa bu bölüm size yöneliktir:

  • C# WPF Uygulaması proje şablonuyla oluşturulmuş bir Windows Presentation Foundation (WPF)uygulama projesi. Bu size bir .NET projesi verir; ve WPF Uygulaması (.NET Framework) adlı proje şablonundan farklıdır. Veya
  • C# Windows Forms App proje şablonuyla oluşturulmuş bir Windows Forms (WinForms)uygulaması projesi. Bu size bir .NET projesi verir; ve Windows Forms Uygulaması (.NET Framework) adlı proje şablonundan farklıdır.

Özetle ilk adım, çözümünüzde bir C# Windows Uygulaması Paketleme Projesi eklemektir. Visual Studio'da MSIX paketlemesi için masaüstü uygulamanızı ayarlama makalesindeki tam adımlar hakkında daha fazla ayrıntı vardır.

Ardından paketleme projesinin Dependencies>Applications düğümünü genişletin ve WPF veya WinForms projenize başvuruyu temsil eden düğümü seçin. Ardından, Visual Studio'nun Özellikler penceresinde (proje özelliklerinde değil), Güven Düzeyi özelliği için Kısmi Güven değerini seçin.