Redistribuer des composants à l’aide de modules de fusion
Important
Dans Visual Studio 2019 et versions ultérieures, les modules de fusion pour les fichiers Redistribuables Visual C++ sont déconseillés. Nous vous déconseillons de les utiliser pour le déploiement d’applications. Les redistribuables installés à l’aide de modules de fusion ne peuvent pas être mis à jour par Windows Update, car le mécanisme de détection dépend de la connaissance des détails du package d’installation. Les packages Redistribuables Visual C++ sont connus pour chaque version, mais les packages qui utilisent des msms sont générés par l’utilisateur. Microsoft ne peut pas connaître les détails des packages générés par l’utilisateur. Au lieu de cela, nous vous recommandons d’utiliser le déploiement central du package Redistribuable Visual C++. Le déploiement central installe les fichiers Redistribuables dans le dossier Windows %SYSTEMROOT%\system32\
à utiliser par toutes les applications et tous les utilisateurs. Le déploiement central par un package redistribuable permet à Microsoft de maintenir les fichiers de bibliothèque runtime de façon indépendante. Et une désinstallation de votre application ne peut pas interrompre d’autres applications qui utilisent également le déploiement central. Lorsque vous utilisez un package Redistribuable pour le déploiement central, vous n’êtes pas responsable du suivi et de la mise à jour des bibliothèques d’exécution dans le cadre de la maintenance de votre application : le service Microsoft Update met à jour ces bibliothèques pour vous. Sinon, une mise à jour des fichiers de bibliothèque runtime vous oblige à mettre à jour et à redéployer votre programme d’installation .msi
. Votre application peut être vulnérable aux bogues ou aux problèmes de sécurité jusqu’à ce que vous le fassiez.
Visual Studio inclut des modules de fusion (.msm
fichiers) pour chaque composant Visual C++ sous licence pour la redistribution avec une application. Il existe des versions distinctes des modules de fusion pour chaque plateforme cible. Lorsqu’un module de fusion est compilé dans un fichier d’installation de Windows Installer, il active le déploiement de fichiers Redistribuables Visual C++ sur cette plateforme spécifique. Vous ne pouvez pas inclure de modules de fusion pour différentes versions de la même DLL dans un programme d’installation. Dans votre fichier d’installation du programme d’installation, spécifiez que les modules de fusion sont requis pour votre application.
Vous pouvez utiliser des modules de fusion pour le déploiement central ou le déploiement local. Les utilisateurs ne peuvent pas installer de fichiers déployés de manière centralisée, sauf s’ils disposent de droits d’administrateur. Le déploiement local peut permettre à un non-administrateur d’installer et d’exécuter votre application, mais au coût d’une serviceabilité indépendante.
Le service d’installation signale une erreur si vous tentez un déploiement central de modules de fusion plus anciens sur des bibliothèques existantes plus récentes. Vous devez écrire la configuration de votre programme d’installation pour gérer cette défaillance correctement et ne pas afficher un message d’erreur. Votre code peut toujours déployer et s’exécuter correctement malgré cet échec. Pour plus d’informations, consultez la compatibilité binaire C++ entre les versions de Visual Studio.
Si vous déployez votre code uniquement en tant que programme d’installation .msi
, nous vous recommandons de ne pas inclure les modules de fusion dans le programme d’installation. Au lieu de cela, signalez un échec à l’utilisateur lorsque les bibliothèques redistribuables requises ne sont pas trouvées. Dans la boîte de dialogue d’échec, incluez des instructions sur la recherche et l’installation du dernier package Redistribuable. Pour plus d’informations et des liens vers des packages Redistribuables, consultez les derniers téléchargements Visual C++ pris en charge.
Les derniers packages redistribuables et modules de fusion sont compatibles avec le code généré à l’aide de Visual Studio 2015 et versions ultérieures. Le code généré par les versions de Visual Studio avant 2015 nécessite un package Redistribuable distinct.
Les modules de fusion sont appropriés uniquement dans des circonstances limitées :
- Vous ne pouvez pas installer ou exiger un package Redistribuable distinct pour des raisons de stratégie,
- Votre code nécessite une version spécifique compatible avec les bogues des bibliothèques,
- Votre code cible une seule plateforme et vous n’avez pas de dépendances sur plusieurs versions des DLL,
- Vous envisagez de traiter votre code déployé régulièrement, de sorte que les bibliothèques restent à jour.
Lorsque vous utilisez des modules de fusion, vous devez suivre et traiter régulièrement votre application avec des mises à jour de bibliothèque. Sinon, vous forcez éventuellement vos clients à choisir entre exécuter votre code ou rester sécurisé.
Dans Visual Studio 2022 et 2019, les fichiers de module de fusion font partie d’un composant installable facultatif nommé MSM redistribuables C++ <version> dans Visual Studio Installer. Les modules de fusion sont installés par défaut dans le cadre d’une installation de C++ dans Visual Studio 2017 et Visual Studio 2015. Une fois installé dans Visual Studio 2022, vous trouverez les modules de fusion Redistribuable Visual C++ dans %VCINSTALLDIR%Redist\MSVC\v143\MergeModules
. Dans la dernière version de Visual Studio 2019, les modules de fusion se trouvent dans %VCINSTALLDIR%Redist\MSVC\v142\MergeModules
. Dans Visual Studio 2019 et Visual Studio 2017, ils se trouvent également dans %VCToolsRedistDir%MergeModules
. Dans Visual Studio 2015, ils se trouvent dans Program Files [(x86)]\Common Files\Merge Modules
. Pour plus d’informations et un lien vers une liste de modules de fusion redistribuables, consultez Redistribuer des fichiers Visual C++.