Remarque
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de vous connecter ou de modifier des répertoires.
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de modifier des répertoires.
La rubrique AppContainer pour les applications héritées couvre toutes les informations d’arrière-plan nécessaires sur l’environnement AppContainer et ses avantages ; cette rubrique contient également des exemples de code C# et C++ pour tester si un processus s’exécute à l’intérieur d’un AppContainer.
La rubrique que vous lisez montre maintenant comment prendre une application empaquetée à l’aide de MSIX et la configurer facilement pour s’exécuter dans l’environnement AppContainer (dans un conteneur d’application léger). Les applications de plateforme Windows universelle (UWP) sont automatiquement des applications AppContainer. Toutefois, vous pouvez également configurer votre application de bureau empaquetée avec MSIX pour qu’elle soit une application AppContainer.
Le processus d’une application AppContainer et ses processus enfants s’exécutent à l’intérieur d’un conteneur d’applications léger, où ils peuvent accéder uniquement aux ressources qui leur sont spécifiquement accordées. Et ils sont isolés à l’aide du système de fichiers et de la virtualisation du Registre. Par conséquent, les applications implémentées dans un AppContainer ne peuvent pas être piratées pour autoriser des actions malveillantes en dehors des ressources affectées limitées.
Conseil / Astuce
Les applications non empaquetées peuvent également s’exécuter dans un AppContainer. Mais il est particulièrement facile d’utiliser AppContainer si vous packagez à l’aide de MSIX. Ainsi, tous les scénarios décrits dans cette rubrique concernent les applications empaquetées.
Configurer un projet WinUI 3 pour AppContainer
Les étapes décrites dans Créer un projet pour une application de bureau WinUI 3 ou C# ou C++ empaquetée affichent la méthode par défaut et recommandée pour créer un projet WinUI 3.
Par défaut, le fichier du Package.appxmanifest projet contient la configuration d’un package d’approbation totale (autrement dit, niveau d’intégrité moyen). Les sections pertinentes ressemblent à ceci :
...
<Applications>
<Application ...
EntryPoint="$targetentrypoint$">
...
</Application>
</Applications>
<Capabilities>
<rescap:Capability Name="runFullTrust" />
</Capabilities>
...
Pour configurer le package comme contenant une application AppContainer, vous pouvez modifier l’attribut EntryPoint et supprimer la déclaration de fonctionnalité restreinte (mais conserver l’élément Capabilities ). Comme ça:
...
<Applications>
<Application ...
EntryPoint="windows.partialTrustApplication">
...
</Application>
</Applications>
<Capabilities/>
...
Si votre package s’installe sur Windows 10, version 2004 (10.0 ; Build 19041) et/ou version ultérieure, puis au lieu de définir EntryPoint, vous pouvez définir uap10 :TrustLevel et uap10 :RuntimeBehavior (après avoir déclaré le préfixe d’espace de noms XML, comme indiqué). Comme ça:
<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/>
...
Pour plus d’informations, consultez les rubriques suivantes :
- Élément Application
- uap10 a été introduit dans Windows 10, version 2004 (10.0 ; Build 19041)
- Types d’application de bureau
Configurer une solution à deux projets WinUI 3 pour AppContainer
La section précédente a décrit le processus pour MSIX à projet unique ; que nous recommandons, et qui est la valeur par défaut pour les nouveaux projets WinUI 3. Pour plus d’informations, consultez Empaqueter votre application à l’aide de MSIX à projet unique.
Toutefois, vous pouvez avoir un projet WinUI 3 datant d'avant l'introduction de la fonctionnalité MSIX à projet unique. Dans ce cas, vous aurez deux projets dans votre solution , votre projet d’application, ainsi qu’un projet d’empaquetage d’applications Windows supplémentaire. Si vous pouvez migrer votre projet vers MSIX à projet unique, c’est idéal. Et vous serez en mesure de suivre les instructions de la section précédente. Pour plus d’informations, consultez Empaqueter votre application à l’aide de MSIX à projet unique.
Si vous ne pouvez pas migrer votre projet vers MSIX à projet unique, cette section explique comment configurer votre package comme contenant une application AppContainer.
Un projet d’empaquetage d’applications Windows implique un paramètre par défaut qui remplace la configuration dans Package.appxmanifest. Le projet se comporte comme s’il y avait une propriété TrustLevel dans le fichier projet défini sur la valeur Full.
Pour remédier à cette valeur de propriété implicite, développez le nœud Dépendances>Applications du projet d’empaquetage, puis sélectionnez le nœud qui représente la référence à votre projet WinUI 3. Ensuite, dans la fenêtre Propriétés de Visual Studio (et non les propriétés du projet), pour la propriété Niveau de confiance , sélectionnez la valeur d’approbation partielle.
Le fichier projet du projet d’empaquetage contient maintenant cette propriété explicite :
...
<ItemGroup>
<ProjectReference Include="...">
<TrustLevel>Partial</TrustLevel>
</ProjectReference>
</ItemGroup>
...
Vous pouvez maintenant supprimer <rescap:Capability Name="runFullTrust" /> du fichier du projet d’empaquetage Package.appxmanifest .
Configurer un projet d’application Windows (application Win32 WndProc- type C++) pour AppContainer
Cette section est destinée à vous si vous disposez d’un projet de type WndProc C++ Win32 créé avec le modèle de projet projet d’application Windows . La première étape, en un mot, consiste à ajouter à votre solution un projet d’empaquetage d’applications Windows C++. Vous trouverez plus d’informations sur les étapes exactes décrites dans Configurer votre application de bureau pour l’empaquetage MSIX dans Visual Studio. Cette rubrique s’applique aux applications de bureau écrites en C++ ou C#.
Ouvrez ensuite le fichier projet de votre nouveau projet d’empaquetage et ajoutez une propriété TrustLevel à la propriété ProjectReference existante comme suit :
...
<ItemGroup>
<ProjectReference Include="...">
<TrustLevel>Partial</TrustLevel>
</ProjectReference>
</ItemGroup>
...
Lorsque vous générez, l’erreur « erreur APPX1673 : le manifeste de l’application est manquant pour l’élément « PhoneIdentity » peut s’afficher. Si cela se produit, modifiez le fichier du Package.appxmanifest projet comme suit :
<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>
...
Configurer un projet WPF ou WinForms pour AppContainer
Cette section est destinée à vous si vous disposez des éléments suivants :
- un projet d’application WPF (Windows Presentation Foundation) créé avec le modèle de projet d’application WPF C#. Cela vous donnera un projet .NET ; et il est différent du modèle de projet nommé WPF App (.NET Framework). ou
- un projet d’application Windows Forms (WinForms) créé avec le modèle de projet d’application Windows Forms C#. Cela vous donnera un projet .NET ; et il est différent du modèle de projet nommé Application Windows Forms (.NET Framework).
La première étape, en un mot, consiste à ajouter à votre solution un projet d’empaquetage d’applications Windows C#. Vous trouverez plus d’informations sur les étapes exactes décrites dans Configurer votre application de bureau pour l’empaquetage MSIX dans Visual Studio.
Développez ensuite le nœud Dépendances>Applications du projet d’empaquetage, puis sélectionnez le nœud qui représente la référence à votre projet WPF ou WinForms. Ensuite, dans la fenêtre Propriétés de Visual Studio (et non les propriétés du projet), pour la propriété Niveau de confiance , sélectionnez la valeur d’approbation partielle.
Rubriques connexes
- AppContainer pour les applications héritées
- Créer un projet pour une application de bureau C# ou C++ WinUI 3 empaquetée
- Élément Application
- uap10 a été introduit dans Windows 10, version 2004 (10.0 ; Build 19041)
- Types d’application de bureau
- Empaqueter votre application à l’aide d’un seul projet MSIX
- Windows Presentation Foundation (WPF)
- Windows Forms (WinForms)
- Configurer votre application de bureau pour l’empaquetage MSIX dans Visual Studio