Sdílet prostřednictvím


Aplikace MSIX AppContainer

Téma AppContainer pro starší verze aplikací popisuje všechny nezbytné základní informace o tom, co je prostředí AppContainer a jaké má výhody; toto téma obsahuje také příklady kódu jazyka C# a C++ pro testování, jestli je proces spuštěný uvnitř appContaineru.

Téma, které čtete, teď ukazuje, jak můžete vzít aplikaci, která je zabalená pomocí MSIX, a snadno ji nakonfigurovat tak, aby běžela v prostředí AppContainer (v kontejneru odlehčených aplikací). Aplikace pro Univerzální platformu Windows (UPW) jsou automaticky aplikace AppContainer. Můžete ale také nakonfigurovat desktopovou aplikaci, která je zabalená pomocí MSIX, jako aplikace AppContainer.

Proces aplikace AppContainer a jeho podřízené procesy se spouštějí uvnitř zjednodušeného kontejneru aplikace, kde mají přístup pouze k prostředkům, které jim jsou výslovně uděleny. A jsou izolované pomocí systému souborů a virtualizace registru. Výsledkem je, že aplikace implementované v AppContaineru nemohou být hacknuty, aby umožňovaly škodlivé akce mimo omezené přiřazené prostředky.

Návod

Rozbalené aplikace se můžou spouštět i v AppContaineru. Pokud ale zabalíte pomocí MSIX, je použití AppContainer velmi snadné. Všechny scénáře popsané v tomto tématu jsou tedy o zabalených aplikacích.

Konfigurace projektu WinUI 3 pro AppContainer

Kroky v části Vytvoření nového projektu pro zabalenou desktopovou aplikaci C# nebo C++ WinUI 3 ukazují výchozí a doporučený způsob vytvoření nového projektu WinUI 3.

Ve výchozím nastavení soubor projektu Package.appxmanifest obsahuje konfiguraci pro úplné oprávnění, což odpovídá střední úrovni integrity. Relevantní oddíly vypadají takto:

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

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

Pokud chcete balíček nakonfigurovat jako obsahující aplikaci AppContainer, můžete upravit atribut EntryPoint a odebrat deklaraci omezené schopnosti (ale zachovat element Capabilities ). Nějak tak:

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

<Capabilities/>
...

Pokud se váš balíček nainstaluje ve Windows 10 verze 2004 (10.0; Build 19041) a/nebo novější a pak místo nastavení EntryPointu můžete nastavit uap10:TrustLevel a uap10:RuntimeBehavior (po deklarování předpony oboru názvů XML, jak je znázorněno). Nějak tak:

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

Další informace najdete v těchto tématech:

Konfigurace dvouprojektového řešení WinUI 3 pro AppContainer

Předchozí část popsala proces pro MSIX s jedním projektem; které doporučujeme, a který je výchozím nastavením pro nové projekty WinUI 3. Další informace najdete v tématu Zabalení aplikace pomocí MSIX s jedním projektem.

Můžete ale mít projekt WinUI 3, který pochází z doby před zavedením jednoprojektové funkce MSIX. V takovém případě budete mít ve svém řešení dva projekty – projekt aplikace a další projekt Windows Application Packaging. Pokud můžete projekt migrovat do jednoprojektového MSIX, je to ideální. A budete moct postupovat podle pokynů v předchozí části. Další informace najdete v tématu Zabalení aplikace pomocí MSIX s jedním projektem.

Pokud nemůžete migrovat projekt do MSIX s jedním projektem, popisuje tato část, jak nakonfigurovat balíček jako obsahující aplikaci AppContainer.

Projekt Windows Application Packaging má za následek výchozí nastavení, které přepíše konfiguraci v Package.appxmanifest. Projekt se chová , jako by v souboru projektu byla nastavena vlastnost TrustLevel na hodnotu Full.

Chcete-li napravit implicitní hodnotu vlastnosti, rozbalte uzel Závislosti>Aplikace balíčkového projektu a vyberte uzel, který představuje odkaz na váš projekt WinUI 3. Potom v okně Vlastnosti sady Visual Studio (nikoli vlastnosti projektu) pro vlastnost Úroveň důvěryhodnosti vyberte hodnotu Částečné důvěryhodnosti.

Soubor projektu pro projekt balení teď obsahuje tuto explicitní vlastnost:

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

A teď můžete odebrat <rescap:Capability Name="runFullTrust" /> ze souboru Package.appxmanifest v projektu balení.

Konfigurace projektu Windows aplikace (aplikace typu C++ Win32 WndProc) pro AppContainer

Tato část je určena, pokud máte projekt typu WndProc C++ Win32, který byl vytvořen pomocí šablony projektu aplikace systému Windows . Prvním krokem, zjednodušeně řečeno, je přidat do svého řešení projekt C++ Windows Application Packaging Project. Přesný postup pro nastavení desktopové aplikace pro balení MSIX ve Visual Studiu obsahuje více detailů. Toto téma platí pro desktopové aplikace napsané v C++ nebo C#.

Pak otevřete soubor projektu nového balení a přidejte vlastnost TrustLevel do existující vlastnosti ProjectReference , například takto:

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

Při sestavování se může zobrazit chyba "chyba APPX1673: V manifestu aplikace chybí požadovaný prvek PhoneIdentity". V takovém případě upravte soubor projektu Package.appxmanifest takto:

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

Konfigurace projektu WPF nebo WinForms pro AppContainer

Tato část je určená pro vás, pokud máte:

  • Projekt aplikace WPF (Windows Presentation Foundation), který byl vytvořen pomocí šablony projektu aplikace WPF v jazyce C#. To vám poskytne projekt .NET; a liší se od šablony projektu s názvem WPF App (.NET Framework). Nebo
  • Projekt aplikace Windows Forms (WinForms), který byl vytvořen pomocí šablony projektu aplikace Windows Forms pro C#. To vám poskytne projekt .NET; a liší se od šablony projektu s názvem Windows Forms App (.NET Framework).

Prvním krokem, stručně řečeno, je přidat do vašeho řešení projekt C# Windows Application Packaging Project. Přesný postup pro nastavení desktopové aplikace pro balení MSIX ve Visual Studiu obsahuje více detailů.

Poté rozbalte uzel Závislosti>Aplikace projektu balíčku a vyberte uzel, který představuje odkaz na váš projekt WPF nebo WinForms. Potom v okně Vlastnosti sady Visual Studio (nikoli vlastnosti projektu) pro vlastnost Úroveň důvěryhodnosti vyberte hodnotu Částečné důvěryhodnosti.