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.
Important
Pour tout processus en cours d’exécution dans AppContainer, si vous provoquez l’appel de DeploymentManager.Initialize , votre application doit déclarer la packageManagementfonctionnalité restreinte dans le manifeste de votre package. Pour plus d’informations, consultez l'initialiseur automatique du gestionnaire de déploiement.
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). Plateforme Windows universelle (UWP) applications 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, 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 application project, ainsi qu'un Windows Application Packaging Project 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 Windows Application Packaging Project 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 Visual Studio fenêtre Properties (et non les propriétés du projet), pour la propriété Trust Level choisissez la valeur de Partial Trust.
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 Windows application Project (application Win32 WndProc-type C++) pour AppContainer
Cette section s’adresse à vous si vous disposez d’un project de type WndProc C++ créé avec le modèle Windows Application Project project. La première étape, en un mot, consiste à ajouter à votre solution un Windows Application Packaging Project C++. Vous trouverez plus d’informations sur les étapes exactes de 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 Windows Presentation Foundation (WPF) créé avec le modèle de projet C# WPF Application. 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 C# Windows Forms App. Cela vous donnera un projet .NET ; et il est différent du modèle de projet nommé Windows Forms App (.NET Framework).
La première étape, en résumé, consiste à ajouter à votre solution un projet de Packaging d'application Windows. Vous trouverez plus d’informations sur les étapes exactes de Configurer votre application de bureau pour l’empaquetage MSIX dans Visual Studio.
Ensuite, développez le nœud Dependencies>Applications, puis sélectionnez le nœud qui représente la référence à votre projet WPF ou WinForms. Ensuite, dans Visual Studio fenêtre Properties (et non les propriétés du projet), pour la propriété Trust Level choisissez la valeur de Partial Trust.
Rubriques connexes
- Vue d’ensemble de la conteneurisation MSIX
- 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