Applications Windows : packaging, déploiement et processus

Cette rubrique traite de vos options concernant :

  • Quelle option d’empaquetage utiliser pour votre application (empaquetée, empaquetée avec emplacement externe ou non empaquetée).
  • Comment déployer/distribuer votre application et comment elle sera installée.
  • Processus d’exécution de votre application, y compris la façon dont elle sera isolée et quelles API seront disponibles.

Vous pouvez prendre ces décisions pour les applications nouvelles et existantes. Toutefois, si vous êtes toujours à l’étape de planification d’une nouvelle application, avant de commencer à réfléchir aux considérations ci-dessus, commencez par décider de l’infrastructure de plateforme de développement et d’interface utilisateur que vous utiliserez pour votre application. Pour cette décision, consultez une vue d’ensemble des options de développement Windows.

Options d’empaquetage : empaquetées, empaquetées avec emplacement externe ou non empaquetées

La décision sur l’option d’empaquetage à utiliser pour votre application est d’abord déterminée par un concept appelé identité de package. De nombreuses fonctionnalités d’extensibilité Windows (tâches en arrière-plan, scénarios de notification Push qui utilisent la remise en arrière-plan ou l’activation COM, extensions de menu contextuel personnalisé et cibles de partage) peuvent être utilisées par une application uniquement si cette application a une identité de package au moment de l’exécution, car le système d’exploitation doit être en mesure d’identifier l’appelant de l’API correspondante. Seules les applications empaquetées (y compris les applications empaquetées avec emplacement externe) ont une identité de package.

Pour obtenir une explication complète des modèles packagé, packagé avec emplacement externe et non packagé, et savoir comment choisir entre eux, consultez la vue d’ensemble du packaging. Pour connaître les fonctionnalités qui dépendent de l’identité du package, consultez Fonctionnalités qui nécessitent une identité de package.

Pour plus d’informations sur la configuration de votre application comme empaquetée ou non empaquetée :

Consultez également la section Windows Gestionnaire de package et le client WinGet de cette rubrique.

Déploiement/distribution/installation

Une application empaquetée est empaquetée et installée à l’aide de MSIX. Si vous choisissez de créer le package avec un emplacement externe, il s’agit d’un modèle où vous fournissez votre propre programme d’installation ; vous devez donc toujours créer vous-même le programme d’installation (voir Accorder une identité de package en créant le package avec un emplacement externe). Une application non empaquetée n’implique pas MSIX du tout.

Le packaging est important, car MSIX offre à vos utilisateurs une expérience fluide d’installation, de désinstallation et de mise à jour, prend en charge les mises à jour incrémentielles et automatiques, est optimisé pour le Microsoft Store, fonctionne avec MSIX app attach pour Azure Virtual Desktop et bénéficie d’une solide protection contre la falsification lorsqu’il est signé.

Pour obtenir des conseils sur le déploiement et la distribution, consultez la vue d’ensemble du package et du déploiement et choisissez un chemin de distribution. Consultez également la Windows Gestionnaire de package et la section client WinGet de cette rubrique.

AppContainer ou Medium IL

L’option permettant d’exécuter votre application dans un AppContainer, ou non, est une question de sécurité. 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.

Les applications empaquetées ou non empaquetées peuvent être configurées pour s’exécuter dans un AppContainer. Mais le processus est plus simple pour les applications empaquetées. Si une application n’est pas une application AppContainer, il s’agit d’une application IL moyenne .

Pour plus d’informations, consultez AppContainer pour les applications héritées et les applications MSIX AppContainer.

Pour plus d’informations sur la configuration de votre application pour qu’elle s’exécute dans un appContainer ou un il moyen :

  • applications WinUI (SDK d'application Windows). Consultez l’attribut manifeste de package d’application uap10:TrustLevel dans Configure d’un project WinUI pour AppContainer.
  • Applications de bureau. Consultez la propriété TrustLevel Visual Studio project dans les applications MSIX AppContainer (dans la section appropriée pour votre type d'application).
  • Applications de la plateforme Windows universelle (UWP) Les applications UWP sont déjà configurées pour s’exécuter dans un AppContainer ; et cette configuration ne peut pas être modifiée.

N’oubliez pas que les applications non empaquetées n’ont pas de manifeste de package d’application. Par conséquent, pour les applications non empaquetées, vous déclarez votre décision AppContainer-or-Medium-IL dans votre fichier project au lieu d’un manifeste de package d’application.

Isolation de l’application Win32

L’isolation des applications Win32 est une fonctionnalité de sécurité (disponible dans Windows 11, version 24H2 et ultérieure) qui permet de contenir des dommages si une application est compromise et protège les choix de confidentialité des utilisateurs. Il s’appuie sur AppContainers et les composants qui virtualisent les ressources et fournissent un accès réparti. Pour plus d’informations, consultez Vue d’ensemble de l’isolation des applications Win32 et le dépôt GitHub de l’isolation des applications Win32.

Fonctionnalités de l’application

Les fonctionnalités d’application (par exemple, InternetClient, emplacement, microphone et bluetooth) sont principalement pertinentes pour les applications empaquetées qui s’exécutent dans un AppContainer. Ainsi, cela inclut toutes les applications Plateforme Windows universelle (UWP) et certaines applications de bureau.

Toutefois, il existe certains scénarios où même une application Medium IL (c'est-à-dire que ce n'est pas une application AppContainer) doit déclarer une fonctionnalité. L’un des exemples est la capacité restreinte runFullTrust .

Pour plus d’informations sur les fonctionnalités d’application, les types d’applications auxquels ils s’appliquent et comment les configurer, consultez les déclarations de fonctionnalités d’application. Vous configurez des fonctionnalités dans le manifeste de votre package d’application ; et c’est pourquoi ils s’appliquent uniquement aux applications empaquetées.

Types d’applications

Les applications de bureau et les applications Plateforme Windows universelle (UWP) sont les deux principaux types d’applications, bien qu’il existe plusieurs types d’applications dans la famille d’applications de bureau. Le choix d’une infrastructure d’interface utilisateur (WinForms, WPF, Win32, Direct 2D/3D ou WinUI 3) est à un certain degré indépendamment des configurations décrites dans cette rubrique.

Mais examinons comment ces types d’applications peuvent différer les uns des autres en termes d’empaquetage, de déploiement et de processus.

Tout d’abord, toutes les applications UWP sont empaquetées et s’exécutent dans un AppContainer. Mais pour les applications de bureau, les choses sont plus flexibles. Vous pouvez choisir de empaqueter votre application de bureau ou non. Et, indépendamment de cette décision, vous pouvez choisir de configurer votre application de bureau en tant qu’application AppContainer ou une application IL moyenne.

Empaqueté Unpackaged
AppContainer Applications de bureau
Applications de la Plateforme universelle Windows (UWP)
Applications de bureau
IL moyen Applications de bureau Applications de bureau

Pour les applications empaquetées, pour configurer le type d’application souhaité, vous utilisez l’attribut uap10:RuntimeBehavior dans le manifeste de votre package d’application (voir Application (Windows 10)).

  • Les applications de bureau sont des applications Windows .exe, généralement avec une fonction de point d’entrée main ou WinMain. Pour configurer votre application en tant qu’application de bureau, définissez uap10:RuntimeBehavior sur « packageClassicApp » ou « win32App ».
    • La valeur « packagedClassicApp » indique une application WinUI (SDK d'application Windows) ou une application Desktop Bridge (Centennial). La différence est qu’une application Centennial s’exécute dans un AppContainer.
    • Et « win32App » indique tout autre type d’application Win32 (y compris une application empaquetée avec un emplacement externe).
  • Enfin, la définition uap10:RuntimeBehavior de « windowsApp » vous donne une application UWP.

Pour toutes les options pour les types d’applications que vous pouvez développer, consultez Windows app développement : options et fonctionnalités.

SDK d'application Windows : dépendant du framework ou autonome

Si votre application utilise le SDK d'application Windows, vous choisissez également comment déployer le runtime du SDK dont dépend votre application : dépendant de l’infrastructure (par défaut, où le SDK d'application Windows runtime et/ou le package Framework doivent être présents sur l’ordinateur cible) ou autonome (votre application porte ses dépendances SDK d'application Windows avec elle). Pour plus d’informations, consultez la vue d’ensemble du déploiement SDK d'application Windows.

Windows Gestionnaire de package et le client WinGet

Un package manager peut aider vos utilisateurs à installer/mettre à niveau/configurer vos logiciels en automatisant le flux de travail. Les gestionnaires de packages peuvent aider à installer n’importe quel logiciel, mais ils ont tendance à être utilisés principalement pour installer developer tools. Par conséquent, si vous créez un outil de développement, vous serez peut-être particulièrement intéressé par cette option. Mais voici comment cela fonctionne :

  • Vous, en tant que développeur de logiciels, définissez la package manager (sous la forme d’instructions déclaratives) tous les éléments nécessaires pour une installation réussie de votre produit.
  • Ensuite, lorsqu’un utilisateur installe votre logiciel, le package manager suit vos instructions déclaratives pour automatiser le flux de travail d’installation et de configuration.

Le résultat est une réduction du temps passé à préparer l’environnement d’un utilisateur et une meilleure compatibilité entre les composants installés. Vous pouvez également utiliser Windows Gestionnaire de package pour distribuer vos applications empaquetées ou non empaquetées dans des formats tels que .msix, .msi et .exe.

Pour plus d’informations, consultez Windows Gestionnaire de package.