Kommentar
Åtkomst till den här sidan kräver auktorisering. Du kan prova att logga in eller ändra kataloger.
Åtkomst till den här sidan kräver auktorisering. Du kan prova att ändra kataloger.
Viktigt!
Om du gör att DeploymentManager.Initialize anropas för alla processer som körs i AppContainer måste appen deklarera den packageManagementbegränsade funktionen i paketmanifestet. För mer information, se Deployment Managers automatinitialiserare.
Ämnet AppContainer för äldre program omfattar all nödvändig bakgrundsinformation om vad AppContainer-miljön är och dess fördelar. det ämnet innehåller även C#- och C++-kodexempel för att testa om en process körs i en AppContainer eller inte.
Det ämne som du läser nu visar hur du kan ta en app som paketeras med MSIX och enkelt konfigurera den att köras i AppContainer-miljön (i en lättviktsappcontainer). Universal Windows Platform (UWP) appar är automatiskt AppContainer-appar. Men du kan också konfigurera din skrivbordsapp som är paketerad med MSIX som en AppContainer-app.
En AppContainer-appprocess och dess underordnade processer körs i en lättviktsappcontainer där de bara kan komma åt de resurser som är specifikt tilldelade till dem. Och de isoleras med hjälp av filsystem och registervirtualisering. Därför kan appar som implementeras i en AppContainer inte hackas för att tillåta skadliga åtgärder utanför de begränsade tilldelade resurserna.
Tips/Råd
Uppackade appar kan också köras i en AppContainer. Men det är särskilt enkelt att använda AppContainer om du paketerar med MSIX. Så alla scenarier som beskrivs i det här avsnittet handlar om paketerade appar.
Konfigurera ett WinUI 3-projekt för AppContainer
Stegen i Skapa ett nytt projekt för en paketerad C#- eller C++ WinUI 3-skrivbordsapp visar standard och rekommenderat sätt att skapa ett nytt WinUI 3-projekt.
Som standard innehåller projektets Package.appxmanifest fil konfiguration för ett fullständigt förtroendepaket (dvs. medelintegritetsnivå). De relevanta avsnitten ser ut så här:
...
<Applications>
<Application ...
EntryPoint="$targetentrypoint$">
...
</Application>
</Applications>
<Capabilities>
<rescap:Capability Name="runFullTrust" />
</Capabilities>
...
Om du vill konfigurera paketet som innehåller en AppContainer-app kan du redigera Attributet EntryPoint och ta bort deklarationen för begränsad kapacitet (men behålla elementet Funktioner ). Gillar det här:
...
<Applications>
<Application ...
EntryPoint="windows.partialTrustApplication">
...
</Application>
</Applications>
<Capabilities/>
...
Om paketet installeras på Windows 10 version 2004 (10.0; Build 19041) och/eller senare, i stället för att ställa in EntryPoint kan du ange uap10:TrustLevel och uap10:RuntimeBehavior (efter att xml-namnrymdsprefixet deklarerats som det visas). Gillar det här:
<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/>
...
Mer information finns i följande avsnitt:
- Programelement
- uap10 introducerades i Windows 10 version 2004 (10.0; Build 19041)
- Typer av skrivbordsapp
Konfigurera en WinUI 3-lösning med två projekt för AppContainer
I föregående avsnitt beskrevs processen för MSIX med ett projekt. som vi rekommenderar och som är standard för nya WinUI 3-projekt. Mer information finns i Paketera din app genom att använda enkelprojekt-MSIX.
Men du kan ha ett WinUI 3-projekt som är från före introduktionen av MSIX-funktionen för ett projekt. I så fall har du två projekt i din lösning – ditt apparbete, plus ytterligare ett Windows-applikationspaketeringsprojekt. Om du kan migrera ditt projekt till ett enda projekt-MSIX är det idealiskt. Och du kommer att kunna följa vägledningen i föregående avsnitt. Mer information finns i Paketera din app genom att använda enkelprojekt-MSIX.
Om du inte kan migrera projektet till MSIX med ett projekt beskriver det här avsnittet hur du konfigurerar ditt paket som innehåller en AppContainer-app.
En Windows-applikationspaketeringsprojekt medför en standardinställning som ersätter konfigurationen i Package.appxmanifest. Projektet fungerar som om det fanns en TrustLevel-egenskap i projektfilen inställd på värdet Full.
För att åtgärda det underförstådda egenskapsvärdet expanderar du paketeringsprojektets Beroenden>Applikationer-nod och väljer den nod som representerar referensen till ditt WinUI 3-projekt. I fönstret Visual Studio Properties (inte projektegenskaper) väljer egenskapen Trust Level värdet Partial Trust.
Projektfilen för paketeringsprojektet innehåller nu den här explicita egenskapen:
...
<ItemGroup>
<ProjectReference Include="...">
<TrustLevel>Partial</TrustLevel>
</ProjectReference>
</ItemGroup>
...
Och nu kan du ta bort <rescap:Capability Name="runFullTrust" /> från paketeringsprojektets Package.appxmanifest fil.
Konfigurera en Windows application Project (C++ Win32 WndProc-type app) för AppContainer
Det här avsnittet är till för dig om du har en project av typen C++ Win32 WndProc som skapades med mallen Windows Application Project project. Det första steget i ett nötskal är att lägga till en C++ Windows Application Packaging Project i din lösning. Det finns mer information om de exakta stegen i Kom igång med din skrivbordsapplikation för MSIX-paketering i Visual Studio. Det avsnittet gäller för skrivbordsappar som skrivits i C++ eller C#.
Öppna sedan projektfilen för det nya paketeringsprojektet och lägg till en TrustLevel-egenskap i den befintliga ProjectReference-egenskapen så här:
...
<ItemGroup>
<ProjectReference Include="...">
<TrustLevel>Partial</TrustLevel>
</ProjectReference>
</ItemGroup>
...
När du skapar kan du se felet "fel APPX1673: Appmanifestet saknar det obligatoriska elementet "PhoneIdentity". Om det händer redigerar du projektets Package.appxmanifest fil så här:
<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>
...
Konfigurera ett WPF- eller WinForms-projekt för AppContainer
Det här avsnittet är till för dig om du har något av följande:
- ett Windows Presentation Foundation (WPF) appprojekt som skapades med projektmallen C# WPF Application. Det ger dig ett .NET projekt, och det skiljer sig från projektmallen med namnet WPF App (.NET Framework). Eller
- ett Windows Forms (WinForms) appprojekt som skapades med projektmallen C# Windows Forms App. Det ger dig ett .NET projekt, och det skiljer sig från projektmallen med namnet Windows Forms App (.NET Framework).
Det första steget i ett nötskal är att lägga till en C# Windows Application Packaging Project i din lösning. Det finns mer information om de exakta stegen i Ställ in ditt skrivbordsprogram för MSIX-packetering i Visual Studio.
Expandera sedan paketeringsprojektets Dependencies>Applications nod och välj den nod som representerar referensen till ditt WPF- eller WinForms-projekt. I fönstret Visual Studio Properties (inte projektegenskaper) väljer egenskapen Trust Level värdet Partial Trust.
Relaterade ämnen
- Översikt över MSIX-containerisering
- AppContainer för äldre program
- Skapa ett nytt projekt för en paketerad C#- eller C++ WinUI 3-skrivbordsapp
- Programelement
- uap10 introducerades i Windows 10 version 2004 (10.0; Build 19041)
- Typer av skrivbordsapp
- Paketera din app med MSIX som ett enskilt projekt
- Windows Presentation Foundation (WPF)
- Windows Forms (WinForms)
- Ställ in din skrivbordsapplikation för MSIX-paketering i Visual Studio