1. Qu'est-ce qu'un redistribuable ?▲
Dès les débuts de la programmation, il était souvent nécessaire d'installer une ou plusieurs bibliothèques supplémentaires afin de permettre au programme compilé dans un environnement particulier de s'exécuter sur une autre machine ne possédant pas cet environnement de développement.
Les plus anciens se rappellent certainement des "runtime visual basic" qui permettaient d'exécuter ces programmes réalisés en basic compilé.
Un redistribuable Microsoft Visual C++ installe les composants nécessaires du runtime des bibliothèques Visual C++ pour exécuter des applications développées en Visual C++ sur un ordinateur sur lequel Visual Studio C++ n'est pas installé.
Il installe les composants du runtime des bibliothèques C Runtime (CRT), Standard C++, ATL, MFC, OpenMP et MSDIA.
2. Quelle est la liste des redistribuables ?▲
Les redistribuables Visual Studio C++ concernent uniquement les programmes développés et générés avec l'environnement Visual Studio et écrits en C++.
Il existe un redistribuable pour chacune des versions de Visual Studio et aussi un redistribuable par type de plateforme supportée.
Les différentes versions de redistribuables concernent :
- Visual Studio 2005 ;
- Visual Studio 2005 SP1 ;
- Visual Studio 2005 SP1 avec le correctif de sécurité ATL ;
- Visual Studio 2005 SP1 avec le correctif de sécurité MFC ;
- Visual Studio 2008 ;
- Visual Studio 2008 SP1 ;
- Visual Studio 2008 SP1 avec le correctif de sécurité ATL ;
- Visual Studio 2008 SP1 avec le correctif de sécurité MFC ;
- Visual Studio 2010 ;
- Visual Studio 2010 avec le correctif de sécurité MFC ;
- Visual Studio 2010 SP1 ;
- Visual Studio 2010 SP1 avec le correctif de sécurité MFC.
Les plateformes supportées sont :
- les architectures 32 bits (suffixe x86) ;
- les architectures 64 bits (suffixe x64) ;
- les architectures Itanium (suffixe IA64).
On voit donc qu'au total, il existe pas moins de 36 versions différentes de redistribuables (cet article fait volontairement abstraction des versions précédentes de Visual Studio).
3. De quel redistribuable ai-je besoin ?▲
Le redistribuable à installer est imposé par le développeur et par l'environnement de développement utilisé pour générer le programme. Si un programme est généré en utilisant un environnement Visual Studio 2005 SP1, alors il faut impérativement installer un redistribuable Visual Studio 2005 SP1. Il est totalement inutile d'installer les redistribuables Visual Studio 2008 et 2010 pour ce programme.
Une fois que la version de Visual Studio est identifiée, il faut installer le redistribuable qui correspond à la plateforme hardware cible spécifiée lors de la génération du programme. C'est-à-dire que si vous êtes sur une machine 64 bits (x64) et que le programme n'a été compilé qu'en version 32 bits (x32), il faut installer le redistribuable 32 bits. Encore une fois, le choix du développeur lors de la génération est prépondérant.
4. Quand est-ce que les redistribuables ne sont pas nécessaires ?▲
Les redistribuables ne sont pas nécessaires quand le projet Visual Studio est compilé en mode statique. Cette option est positionnée dans les options du projet, dans l'onglet C++, l'option génération de code. Les redistribuables sont nécessaires avec l'option /MD. Il ne sont pas nécessaires avec l'option /MT.
5. Puis-je désinstaller les redistribuables ?▲
Oui, vous pouvez tout à fait désinstaller les redistribuables installés sur votre machine mais attention, la désinstallation du redistribuable empêchera l'exécution correcte du programme.
De plus, si ce redistribuable est utilisé par d'autres applications, la désinstallation de ce redistribuable empêchera l'exécution de ces applications.
C'est pour cette raison que les programmes d'installation (setup) ajoutent les redistribuables sur la machine s'ils ne sont pas présents lors de la phase d'installation mais ne les suppriment pas lors de la phase de désinstallation. C'est à l'administrateur de la machine de faire cette action manuellement.
6. Où puis-je trouver les redistribuables ?▲
Les redistribuables peuvent être téléchargés librement sur le site de Microsoft. Leur nom générique est "vcredist".
Pour votre confort, je les ai aussi téléchargés et triés, vous pouvez les trouver dans le tableau suivant :
7. Puis-je utiliser librement ces redistribuables ?▲
Oui.
8. Puis-je redistribuer ces redistribuables ?▲
Oui, il est tout à fait légal d'inclure un ou plusieurs redistribuables dans un programme d'installation.
9. Comment savoir si un redistribuable est installé ?▲
Pour cela, il y a plusieurs possibilités.
Tout d'abord, il est possible d'utiliser le gestionnaire des programmes et applications installés (dans le panneau de configuration), les redistribuables sont affichés dans la liste.
Il est aussi possible de le faire par programmation, chaque version de redistribuable et chaque plateforme possédant un GUID spécifique. Il suffit de connaitre le GUID pour savoir si le redistribuable est installé.
La clé de registre à interroger est HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\[GUID] ou, pour les redistribuables 32 bits sur une machine 64 bits, la clé de registre HKLM\SOFTWARE\Wow6432Node\Microsoft\Windows\CurrentVersion\Uninstall\[GUID].
Si cette clé existe, le redistribuable concerné est installé.
La méthode d'identification des redistribuables par leurs GUID est déconseillée par Microsoft et n'est pas documentée mais elle fonctionne.
Le tableau suivant synthétise les GUID de tous les redistribuables pour toutes les plateformes. Encore une fois, les versions antérieures à Visual Studio 2005 sont ignorées.
La colonne Version du tableau contient la valeur de la clé de registre HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\[GUID]\DisplayVersion qui est censée être la version du redistribuable.
Redistribuable | Architecture | GUID | Version |
---|---|---|---|
Visual Studio 2005 | x86 | {a49f249f-0c91-497f-86df-b2585e8e76b7} | 8.0.50727.42 |
x64 | {6e8e85e8-ce4b-4ff5-91f7-04999c9fae6a} | 8.0.50727.42 | |
IA64 | {03ed71ea-f531-4927-aabd-1c31bce8e187} (non vérifié) | Inconnu | |
Visual Studio 2005 SP1 | x86 | {7299052b-02a4-4627-81f2-1818da5d550d} | 8.0.56336 |
x64 | {071c9b48-7c32-4621-a0ac-3f809523288f} | 8.0.56336 | |
IA64 | {0f8fb34e-675e-42ed-850b-29d98c2ece08} (non vérifié) | Inconnu | |
Visual Studio 2005 SP1 ATL | x86 | {837b34e3-7c30-493c-8f6a-2b0f04e2912c} | 8.0.59193 |
x64 | {6ce5bae9-d3ca-4b99-891a-1dc6c118a5fc} | 8.0.59192 | |
IA64 | {85025851-a784-46d8-950d-05cb3ca43a13} (non vérifié) | Inconnu | |
Visual Studio 2005 SP1 MFC | x86 | {710f4c1c-cc18-4c49-8cbf-51240c89a1a2} | 8.0.61001 |
x64 | {ad8a2fa1-06e7-4b0d-927d-6e54b3d31028} | 8.0.61000 | |
IA64 | Inconnu | Inconnu | |
Visual Studio 2008 | x86 | {ff66e9f6-83e7-3a3e-af14-8de9a809a6a4} | 9.0.21022 |
x64 | {350aa351-21fa-3270-8b7a-835434e766ad} | 9.0.21022 | |
IA64 | {2b547b43-db50-3139-9ebe-37d419e0f5fa} (non vérifié) | Inconnu | |
Visual Studio 2008 SP1 | x86 | {9a25302d-30c0-39d9-bd6f-21e6ec160475} | 9.0.30729 |
x64 | {8220eefe-38cd-377e-8595-13398d740ace} | 9.0.30729 | |
IA64 | {5827ece1-aeb0-328e-b813-6fc68622c1f9} (non vérifié) | Inconnu | |
Visual Studio 2008 SP1 ATL | x86 | {1f1c2dfc-2d24-3e06-bcb8-725134adf989} | 9.0.30729.4148 |
x64 | {4b6c7001-c7d6-3710-913e-5bc23fce91e6} | 9.0.30729.4148 | |
IA64 | {977ad349-c2a8-39dd-9273-285c08987c7b} (non vérifié) | Inconnu | |
Visual Studio 2008 SP1 MFC | x86 | {9be518e6-ecc6-35a9-88e4-87755c07200f} | 9.0.30729.6161 |
x64 | {5fce6d76-f5dc-37ab-b2b8-22ab8cedb1d4} | 9.0.30729.6161 | |
IA64 | Inconnu | Inconnu | |
Visual Studio 2010 | x86 | {196bb40d-1578-3d01-b289-befc77a11a1e} | 10.0.30319 |
x64 | {da5e371c-6333-3d8a-93a4-6fd5b20bcc6e} | 10.0.30319 | |
IA64 | {c1a35166-4301-38e9-ba67-02823ad72a1b} (non vérifié) | Inconnu | |
Visual Studio 2010 MFC | x86 | {196bb40d-1578-3d01-b289-befc77a11a1e} | 10.0.30319 |
x64 | {da5e371c-6333-3d8a-93a4-6fd5b20bcc6e} | 10.0.30319 | |
IA64 | Inconnu | Inconnu | |
Visual Studio 2010 SP1 | x86 | {f0c3e5d1-1ade-321e-8167-68ef0de699a5} | 10.0.40219 |
x64 | {1d8e6291-b0d5-35ec-8441-6616f567a0f7} | 10.0.40219 | |
IA64 | {88c73c1c-2de5-3b01-afb8-b46ef4ab41cd} (non vérifié) | Inconnu | |
Visual Studio 2010 SP1 MFC | x86 | {f0c3e5d1-1ade-321e-8167-68ef0de699a5} | 10.0.40219 |
x64 | {1d8e6291-b0d5-35ec-8441-6616f567a0f7} | 10.0.40219 | |
IA64 | Inconnu | Inconnu |
Comme ce tableau le montre, toutes les informations des redistribuables concernant les plateformes Itanium sont soit non vérifiées, soit inconnues. Si quelqu'un possède une machine avec ce type d'architecture, il peut me contacter afin de m'aider à compléter ce tableau.
Contrairement à ce qui est dit un peu plus haut dans ce paragraphe, il est impossible de distinguer le redistribuable Visual Studio 2010 du redistribuable Visual Studio 2010 avec mise à jour de sécurité MFC. Tous les deux s'enregistrent avec le même GUID et affichent la même version. Cette remarque est aussi valable pour les redistribuables Visual Studio 2010 SP1 et Visual Studio 2010 SP1 avec mise à jour de sécurité MFC. Dommage !
10. Conclusion▲
Cet article est maintenant terminé, n'hésitez pas à le commenter dans la discussion prévue à cet effet : 16 commentaires
Je tiens à remercier dourouc05 et Maxime Gault pour l'aide qu'ils m'ont apportée lors de la rédaction de cet article.