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.

Options de compilations du projet
Options de compilations du projet

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ésent 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 :

Redistribuable Architecture Fichier URL Microsoft Date
Visual Studio 2005 x86 2005 vcredist_x86.exe http://www.microsoft.com/download/en/details.aspx?id=3387 10/04/2006
  x64 2005 vcredist_x64.exe http://www.microsoft.com/download/en/details.aspx?id=21254 10/04/2006
  IA64 2005 vcredist_IA64.exe http://www.microsoft.com/download/en/details.aspx?id=16326 10/04/2006
         
Visual Studio 2005 SP1 x86 2005 SP1 vcredist_x86.exe http://www.microsoft.com/download/en/details.aspx?id=5638 27/08/2007
  x64 2005 SP1 vcredist_x64.exe http://www.microsoft.com/download/en/details.aspx?id=18471 28/08/2007
  IA64 2005 SP1 vcredist_IA64.exe http://www.microsoft.com/download/en/details.aspx?id=13360 28/08/2007
         
Visual Studio 2005 SP1 ATL x86 2005 SP1 ATL vcredist_x86.exe http://www.microsoft.com/download/en/details.aspx?id=14431 20/09/2010
  x64 2005 SP1 ATL vcredist_x64.exe http://www.microsoft.com/download/en/details.aspx?id=14431 20/09/2010
  IA64 2005 SP1 ATL vcredist_IA64.exe http://www.microsoft.com/download/en/details.aspx?id=14431 20/09/2010
         
Visual Studio 2005 SP1 MFC x86 2005 SP1 MFC vcredist_x86.exe http://www.microsoft.com/download/en/details.aspx?id=26347 07/06/2011
  x64 2005 SP1 MFC vcredist_x64.exe http://www.microsoft.com/download/en/details.aspx?id=26347 07/06/2011
  IA64 2005 SP1 MFC vcredist_IA64.exe http://www.microsoft.com/download/en/details.aspx?id=26347 07/06/2011
         
Visual Studio 2008 x86 2008 vcredist_x86.exe http://www.microsoft.com/download/en/details.aspx?id=29 29/11/2007
  x64 2008 vcredist_x64.exe http://www.microsoft.com/download/en/details.aspx?id=15336 29/11/2007
  IA64 2008 vcredist_IA64.exe http://www.microsoft.com/download/en/details.aspx?id=4887 29/11/2007
         
Visual Studio 2008 SP1 x86 2008 SP1 vcredist_x86.exe http://www.microsoft.com/download/en/details.aspx?id=5582 16/09/2008
  x64 2008 SP1 vcredist_x64.exe http://www.microsoft.com/download/en/details.aspx?id=2092 09/08/2008
  IA64 2008 SP1 vcredist_IA64.exe http://www.microsoft.com/download/en/details.aspx?id=19823 09/08/2008
         
Visual Studio 2008 SP1 ATL x86 2008 SP1 ATL vcredist_x86.exe http://www.microsoft.com/download/en/details.aspx?id=11895 29/09/2010
  x64 2008 SP1 ATL vcredist_x64.exe http://www.microsoft.com/download/en/details.aspx?id=11895 29/09/2010
  IA64 2008 SP1 ATL vcredist_IA64.exe http://www.microsoft.com/download/en/details.aspx?id=11895 29/09/2010
         
Visual Studio 2008 SP1 MFC x86 2008 SP1 MFC vcredist_x86.exe http://www.microsoft.com/download/en/details.aspx?id=26368 07/06/2011
  x64 2008 SP1 MFC vcredist_x64.exe http://www.microsoft.com/download/en/details.aspx?id=26368 07/06/2011
  IA64 2008 SP1 MFC vcredist_IA64.exe http://www.microsoft.com/download/en/details.aspx?id=26368 07/06/2011
         
Visual Studio 2010 x86 2010 vcredist_x86.exe http://www.microsoft.com/download/en/details.aspx?id=5555 12/04/2010
  x64 2010 vcredist_x64.exe http://www.microsoft.com/download/en/details.aspx?id=14632 12/04/2010
  IA64 2010 vcredist_IA64.exe http://www.microsoft.com/download/en/details.aspx?id=2054 12/04/2010
         
Visual Studio 2010 MFC x86 2010 MFC vcredist_x86.exe http://www.microsoft.com/download/en/details.aspx?id=21576 13/04/2011
  x64 2010 MFC vcredist_x64.exe http://www.microsoft.com/download/en/details.aspx?id=21576 13/04/2011
  IA64 2010 MFC vcredist_IA64.exe http://www.microsoft.com/download/en/details.aspx?id=21576 13/04/2011
         
Visual Studio 2010 SP1 x86 2010 SP1 vcredist_x86.exe http://www.microsoft.com/download/en/details.aspx?id=8328 03/03/2011
  x64 2010 SP1 vcredist_x64.exe http://www.microsoft.com/download/en/details.aspx?id=13523 03/03/2011
  IA64 2010 SP1 vcredist_IA64.exe http://www.microsoft.com/download/en/details.aspx?id=21051 03/03/2011
         
Visual Studio 2010 SP1 MFC x86 2010 SP1 MFC vcredist_x86.exe http://www.microsoft.com/download/en/details.aspx?id=26999 09/08/2011
  x64 2010 SP1 MFC vcredist_x64.exe http://www.microsoft.com/download/en/details.aspx?id=26999 09/08/2011
  IA64 2010 SP1 MFC vcredist_IA64.exe http://www.microsoft.com/download/en/details.aspx?id=26999 09/08/2011

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.

Redistribuables installés
Redistribuables installés



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.