Poznámka:
Přístup k této stránce vyžaduje autorizaci. Můžete se zkusit přihlásit nebo změnit adresáře.
Přístup k této stránce vyžaduje autorizaci. Můžete zkusit změnit adresáře.
Důležité
Pro jakýkoli proces spuštěný v AppContainer, pokud způsobíte, že DeploymentManager.Initialize bude volána, pak vaše aplikace musí deklarovat packageManagementomezenou schopnost v manifestu balíčku. Další podrobnosti najdete v tématu Automatické inicializátory Deployment Manageru.
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í). Univerzální platforma Windows (UPW) aplikace 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 balíček nainstaluje na Windows 10 verze 2004 (10.0; Build 19041) a/nebo novější, místo nastavení EntryPoint 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:
- Aplikační prvek
- uap10 byl zaveden v Windows 10 verze 2004 (10.0; Build 19041)
- Typy desktopové aplikace
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 balení aplikace Windows. 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 balení aplikací Windows implikuje 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ě Visual Studio Properties (ne vlastnosti projektu) pro vlastnost Trust Level vyberte hodnotu Partial Trust.
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čená, pokud máte project typu WndProc C++ win32 vytvořené pomocí šablony Windows Application Project project. Prvním krokem, v kostce, je přidání projektu Windows Application Packaging C++ do vašeho řešení. Přesné kroky najdete v tématu Nastavte si desktopovou aplikaci pro balení MSIX v Visual Studio. 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 (Windows Presentation Foundation) nebo WinForms pro AppContainer
Tato část je určená pro vás, pokud máte:
- projekt aplikace Windows Presentation Foundation (WPF (Windows Presentation Foundation)) vytvořený pomocí šablony projektu WPF (Windows Presentation Foundation) C#. Tím získáte projekt .NET; a liší se od šablony projektu s názvem WPF (Windows Presentation Foundation) App (.NET Framework). Nebo
- projekt aplikace model Windows Forms (WinForms) vytvořený pomocí šablony projektu model Windows Forms C#. Tím získáte projekt .NET; a liší se od šablony projektu s názvem model Windows Forms App (.NET Framework).
Prvním krokem, stručně řečeno, je přidání do vašeho řešení Projektu balíku aplikací pro Windows jazyka C#. Přesné kroky najdete v tématu Nastavte si desktopovou aplikaci pro balení MSIX v Visual Studio.
Potom rozbalte uzel Dependencies>Applications a vyberte uzel, který představuje odkaz na váš projekt WPF (Windows Presentation Foundation) nebo WinForms. Potom v okně Visual Studio Properties (ne vlastnosti projektu) pro vlastnost Trust Level vyberte hodnotu Partial Trust.
Související témata
- Přehled kontejnerizace MSIX
- AppContainer pro starší verze aplikací
- Vytvoření nového projektu pro zabalenou desktopovou aplikaci C# nebo C++ WinUI 3
- Aplikační prvek
- uap10 byl zaveden v Windows 10 verze 2004 (10.0; Build 19041)
- Typy desktopové aplikace
- Zabalte svou aplikaci pomocí MSIX pro jeden projekt
- Windows Presentation Foundation (WPF (Windows Presentation Foundation))
- model Windows Forms (WinForms)
- Nastavte si desktopovou aplikaci pro balení MSIX v Visual Studio