Comment détecter si Visual C ++ Redistributable pour Visual Studio 2012 est installé?
J'ai essayé Google et personne ne m'a posé cette question, surprise!
visual-c++
sean717
la source
la source
Réponses:
Cela dépend de la version que vous utilisez. Ces deux clés 2012 ont bien fonctionné pour moi avec leurs versions correspondantes à télécharger pour la mise à jour 4. Veuillez noter que certains de ces emplacements d'enregistrement peuvent dépendre du système d'exploitation. J'ai collecté ces informations à partir d'une boîte Windows 10 x64 . Je vais juste aller de l'avant et vider toutes ces versions de redist et les clés de registre que je recherche pour détecter l'installation:
Visual C ++ 2005
URL de téléchargement direct: https://download.microsoft.com/download/8/B/4/8B42259F-5D70-43F4-AC2E-4B208FD8D66A/vcredist_x64.EXE
URL de téléchargement direct: https://download.microsoft.com/download/8/B/4/8B42259F-5D70-43F4-AC2E-4B208FD8D66A/vcredist_x86.EXE
Visual C ++ 2008
URL de téléchargement direct: https://download.microsoft.com/download/2/d/6/2d61c766-107b-409d-8fba-c39e61ca08e8/vcredist_x64.exe
URL de téléchargement direct: https://download.microsoft.com/download/d/d/9/dd9a82d0-52ef-40db-8dab-795376989c03/vcredist_x86.exe
Visual C ++ 2010
URL de téléchargement direct: https://download.microsoft.com/download/1/6/5/165255E7-1014-4D0A-B094-B6A430A6BFFC/vcredist_x64.exe
URL de téléchargement direct: https://download.microsoft.com/download/1/6/5/165255E7-1014-4D0A-B094-B6A430A6BFFC/vcredist_x86.exe
Visual C ++ 2012
URL de téléchargement direct: https://download.microsoft.com/download/1/6/B/16B06F60-3B20-4FF2-B699-5E9B7962F9AE/VSU_4/vcredist_x64.exe
URL de téléchargement direct: https://download.microsoft.com/download/1/6/B/16B06F60-3B20-4FF2-B699-5E9B7962F9AE/VSU_4/vcredist_x86.exe
mise en garde concernant la version : d'aprèsles conclusions de Wai Ha Lee , "... les binaires fournis avec la mise à jour 4 de VC ++ 2012 (
11.0.61030.0
) ont une version11.0.60610.1
pour les binaires ATL et MFC, et11.0.51106.1
pour tout le reste, par exemple msvcp110.dll et msvcr110.dll . .. "Visual C ++ 2013
URL de téléchargement direct: https://download.microsoft.com/download/2/E/6/2E61CFA4-993B-4DD4-91DA-3737CD5CD6E3/vcredist_x64.exe
URL de téléchargement direct: https://download.microsoft.com/download/2/E/6/2E61CFA4-993B-4DD4-91DA-3737CD5CD6E3/vcredist_x86.exe
Visual C ++ 2015
Envisagez d'utiliser l'offre groupée 2015-2019 comme alternative
URL de téléchargement direct: https://download.microsoft.com/download/6/A/A/6AA4EDFF-645B-48C5-81CC-ED5963AEAD48/vc_redist.x64.exe
URL de téléchargement direct: https://download.microsoft.com/download/6/A/A/6AA4EDFF-645B-48C5-81CC-ED5963AEAD48/vc_redist.x86.exe
Visual C ++ 2017
Envisagez d'utiliser l'offre groupée 2015-2019 comme alternative
Attention : soit une nouvelle convention de registre 2017 est utilisée, soit elle n'a pas encore été finalisée. Comme je devine les touches les plus hautes de:
[HKEY_CLASSES_ROOT\Installer\Dependencies\,,amd64,14.0,bundle]
et[HKEY_CLASSES_ROOT\Installer\Dependencies\,,x86,14.0,bundle]
sont sujets à changement, ou ont au moins différents GUID imbriqués, je vais utiliser la liste de la clé qui se termine par un GUID.
URL de téléchargement direct: https://download.visualstudio.microsoft.com/download/pr/9fbed7c7-7012-4cc0-a0a3-a541f51981b5/e7eec15278b4473e26d7e32cef53a34c/vc_redist.x64.exe
URL de téléchargement direct: https://download.visualstudio.microsoft.com/download/pr/d0b808a8-aa78-4250-8e54-49b8c23f7328/9c5e6532055786367ee61aafb3313c95/vc_redist.x86.exe
Visual C ++ 2019 ( ensemble 2015-2019 )
Mise en garde : une autre nouvelle convention de registre est utilisée pour Visual C ++ 2019. Il ne semble pas non plus y avoir de programme d'installation autonome pour Visual C ++ 2019, mais uniquement ce programme d'installation de bundle qui est Visual C ++ 2015 à 2019.
14.21.27702
URL de téléchargement direct: https://download.visualstudio.microsoft.com/download/pr/9e04d214-5a9d-4515-9960-3d71398d98c3/1e1e62ab57bbb4bf5199e8ce88f040be/vc_redist.x64.exe
URL de téléchargement direct: https://download.visualstudio.microsoft.com/download/pr/c8edbb87-c7ec-4500-a461-71e8912d25e9/99ba493d660597490cbb8b3211d2cae4/vc_redist.x86.exe
14.22.27821
URL de téléchargement direct: https://download.visualstudio.microsoft.com/download/pr/0c1cfec3-e028-4996-8bb7-0c751ba41e32/1abed1573f36075bfdfc538a2af00d37/vc_redist.x86.exe
URL de téléchargement direct: https://download.visualstudio.microsoft.com/download/pr/cc0046d4-e7b4-45a1-bd46-b1c079191224/9c4042a4c2e6d1f661f4c58cf4d129e9/vc_redist.x64.exe
Changelog :
19 août 2019 - Ajout d'une nouvelle version de la version du bundle 2015-2019
13 juin 2019 - Ajout d'une nouvelle section pour la version du bundle 2015-2019
14.21.27702
et ajout de petites notes aux sections 2015 et 2017 sur la prise en compte de l'utilisation de le nouveau bundle comme alternative.14 décembre 2018 - Mise à jour de MSVC2008 pour la
9.0.30729.6161
mise à jour du Service Pack 1 selon les conclusions de Jim Wolff27 novembre 2018 - Mise à jour des informations pour MSVC2017 v.12
14.16
septembre 2018 - Ajout de la mise en garde de version à la mise à jour 4 de 2012 conformément aux conclusions de Wai Ha Lee
le 24 août 2018 - Version 2017 mise à jour pour 14.15.26706, les dépendances Visual C ++ mises à jour empaquetées avec VS 2017 15.8.1
16 mai 2018 - Version 2017 mise à jour pour 14.14.26405.0 en tant que nouvelle entrée C ++ 2017
8 septembre 2017 - Version 2017 mise à jour pour 14.11.25325.0 en tant que nouvelle entrée Visual C ++ 2017
7 avril 2017 - Version 2017 mise à jour de 14.10 .25008.0 en tant que nouvelle entrée de Visual C ++ 2017
24 octobre 2016 - Informations de version de 2015 mises à jour pour 14.0.24215.1
18 août 2016 - Informations de version de 2015 mises à jour pour 14.0.24212
27 mai 2016 - Informations mises à jour pour MSVC2015 Update 2
Veuillez me contacter ici si l'un de ceux-ci devient obsolète.
la source
[HKEY_CLASSES_ROOT\Installer\Dependencies\,,x86,14.0,bundle\Dependents\{$GUID}
et[HKEY_CLASSES_ROOT\Installer\Dependencies\,,amd64,14.0,bundle\Dependents\{$GUID}
[HKEY_CLASSES_ROOT\Installer\Dependencies\VC,redist.x86,x86,14.16,bundle] [HKEY_CLASSES_ROOT\Installer\Dependencies\VC,redist.x64,amd64,14.16,bundle]
Essayer
comme point de départ. J'utiliserai ceci pour vérifier l'installation du runtime VC ++ 11 (VS 2012).
la source
HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\Microsoft\DevDiv\VC\Servicing\11.0\RuntimeMinimum
Vous pouvez vérifier que la
Installed
valeur se trouve1
dans cet emplacement de registre:HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\Microsoft\VisualStudio\11.0\VC\Runtimes\x86
sur les systèmes 64 bits. Dans le code qui entraînerait l'accès à la clé de registreHKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\VisualStudio\11.0\VC\Runtimes\x86
. Remarquez l'absence deWow6432Node
.Sur un système 32 bits, le registre est le même sans
Wow6432Node
:HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\VisualStudio\11.0\VC\Runtimes\x86
la source
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\VisualStudio\11.0\VC
mais je n'ai pas laRuntimes
clé. J'ai la clé de la réponse de DaveHKLM\SOFTWARE\Microsoft\DevDiv\VC\Servicing\11.0
.Il n'y a aucun élément installcheck dans le manifeste du package de démarrage fourni avec Visual C ++. Je suppose que Microsoft veut toujours installer si vous le définissez comme prérequis.
Bien sûr, vous pouvez toujours appeler MsiQueryProductState pour vérifier si le package de redistribution VC est installé via MSI, le code du package peut être trouvé en exécutant
en ligne de commande, ou si vous êtes déjà sur wmic: root \ cli, exécutez
la source
La réponse à ces questions simples n'est malheureusement pas simple, mais fonctionne dans 100% de tous les systèmes, et même extensible aux nombreux frameworks .net.
La complexité vient du fait qu'il y a (et il y avait) de nombreuses révisions des runtimes VC qui pourraient conduire au cas où bien que les runtimes VC10 aient été installés, leur numéro de build n'était pas assez récent pour que votre EXE ne démarre pas à moins que vous n'ayez installé le très les temps d'exécution exacts dont vous avez besoin ou l'un des plus récents exécutables qui permettent à cette version et aux versions précédentes de la même version majeure de fonctionner avec elle (l'enfer côte à côte). De plus, si vous avez un EXE 64 bits, vous devrez vérifier les deux, les environnements d'exécution 32 ET 64 bits.
Cela dit, le seul moyen fiable de déterminer si les environnements d'exécution de votre EXE sont installés est d'essayer d'exécuter le fichier EXE. - ou un autre EXE qui est construit avec les mêmes paramètres que votre EXE principal et dont le seul but est de ne rien faire. Exécutez simplement (ce qui signifie que les runtimes sont installés) ou échouez (lorsqu'ils ne sont pas installés).
J'ai fait ce qui suit pour un programme d'installation qui nécessitait l'installation des runtimes VC10 32 et 64 bits: Le programme d'installation tente de lancer tous les fichiers EXE factices et s'il réussit, le runtime correspondant est considéré comme installé. Cela résout également le scénario 32/64 bits.
Cela fonctionne également pour déterminer si le framework .net approprié est installé, ce qui est très délicat dans Windows 8 et 10, car le support .net 3.5 intégré téléchargeable prend également en charge les versions 3.0 et 2.0. il n'y a pas d'entrées de registre pour ces derniers. (Et pire, vous ne pouvez même pas utiliser les installateurs de framework standard ici, vous devez utiliser le support intégré et le télécharger via Windows, ou reconstruire votre application avec .net 4, mais c'est une autre histoire).
Le fichier EXE factice C ++ peut être généré à l'aide d'un projet avec le code suivant (et un autre dans une configuration 64 bits si nécessaire):
N'oubliez pas de définir les propriétés du projet Utilisation de MFC pour utiliser MFC dans une DLL partagée . Les exécutables auront une taille d'environ 4 Ko - un petit prix à payer pour un résultat sûr.
Pour offrir à vos utilisateurs une expérience d'installation agréable, vous pouvez effectuer les opérations suivantes (l'exemple de code est pour NSIS ):
et appelez-le dans une fonction, par exemple CheckRuntimes
Ensuite , lancez la vérification de l' exécution par exemple lorsque vous quittez la bienvenue la page et mettre en cache le résultat, de sorte que vous n'avez pas de vérifier à nouveau chaque fois que l'utilisateur clique sur le bouton « Précédent » et « Suivant ».
Ensuite, créez une section en lecture seule dans l'arborescence d'installation et présélectionnez ou désélectionnez-la sur une fonction qui est exécutée avant que la page Composants ne s'affiche.
Cela garantira que l'installation de chaque composant d'exécution manquant est obligatoire et est ignorée s'il est déjà présent.
la source
Étant donné que Visual Studio 2010 et les versions ultérieures ont cessé d'utiliser WinSxS, il peut suffire de vérifier simplement% windir% \ system32 \ msvcr110.dll. Si vous souhaitez vérifier que vous disposez d'une version suffisamment nouvelle, vous pouvez vérifier si la version du fichier est 11.0.50727.1 (VS2012 RTM) ou 11.0.51106.1 (VS2012 Update 1).
la source
11.0.61030.0
) ont une version11.0.60610.1
pour les binaires ATL et MFC, et11.0.51106.1
pour tout le reste, par exemple msvcp110.dll et msvcr110.dll. Pas certain de pourquoi. Vous pouvez le confirmer (sur les machines Windows 10 sur lesquelles je l'ai testé) en accédantC:\ProgramData\Package Cache\{BD95A8CD-1D9F-35AD-981A-3E7925026EBB}v11.0.61030\packages\vcRuntimeMinimum_x86
et enC:\ProgramData\Package Cache\{B175520C-86A2-35A7-8619-86DC379688B9}v11.0.61030\packages\vcRuntimeAdditional_x86
inspectant les fichiers dans les fichiers .cab.Je suis tombé sur cette question à la recherche d'une réponse dans le contexte de la vérification du redistribuable Visual C ++ dans le cadre d'un programme d'installation MSI créé par WiX.
Je n'aimais pas la façon dont le GUID change avec la version et le système d'exploitation, j'ai donc fini par créer une action personnalisée écrite en C # pour vérifier le redistribuable Visual C ++.
Tout ce qui suit est spécifiquement pour Visual C ++ 2015 Redistributable (x64), mais il peut être facilement modifié pour n'importe quelle version.
Puis dans le fichier wxs
Modifier Je mets à jour cette réponse avec quelques informations de base sur la création et l'utilisation d'une action personnalisée.
Pour créer l'action personnalisée dans Visual Studio 2017 avec l'extension WiX Toolset Visual Studio 2017 installée, j'ai utilisé le modèle de projet pour créer une action personnalisée (Projet d'action personnalisée C # pour WiX v3).
J'ai vérifié le projet généré et il semblait déjà avoir les modifications répertoriées au début de cet article: https://www.codeproject.com/Articles/132918/Creating-Custom-Action-for-WIX-Written-in-Managed alors j'ai pris cet article dans la section
Adding Custom Action to the Installer
et l' suivi avec quelques ajustements.Une autre chose que j'ai faite a été de changer la version du framework .NET sur laquelle le projet est construit en 3.5.
Je ne l'ai pas trouvé vraiment utile mais vous pouvez aussi voir http://wixtoolset.org/documentation/manual/v3/wixdev/extensions/authoring_custom_actions.html
la source
Pour moi, cet emplacement a fonctionné: HKEY_LOCAL_MACHINE \ SOFTWARE \ Microsoft \ DevDiv \ vc \ Servicing \ 11.0 \ RuntimeMinimum \ Version
Vérifiez la version dont vous disposez après avoir installé le package et utilisez-la comme condition dans votre programme d'installation. (le mien est réglé sur 11.0.50727 après l'installation de VCred).
la source
Allez simplement dans Panneau de configuration> Programmes et fonctionnalités, et ils apparaissent tous ici.
Je ne suis pas un expert et cette réponse est assez simple par rapport à ce que les gens répondent (vérification du registre), donc je ne suis pas sûr que ce soit la bonne réponse, mais cela a fait l'affaire pour moi.
la source
la source
J'ai réussi à faire cela avec InnoSetup.
J'ai vérifié l'existence de la clé de registre:
HKLM\SOFTWARE\Microsoft\VisualStudio\11.0\VC\Runtimes
S'il est désinstallé, il n'existe pas. S'il est installé, il existe.
À propos, cela pourrait également être dans le Wow6432Node:
HKLM\SOFTWARE\Wow6432Node\Microsoft\VisualStudio\11.0\VC\Runtimes
la source
Vérifier l'état d'installation du produit via MsiQueryProductState équivaut à peu près à vérifier le registre directement, mais vous avez toujours besoin du GUID pour le ProductCode .
Comme mentionné ailleurs, un inconvénient de ces approches est que chaque mise à jour a son propre ProductCode!
Heureusement, MSI fournit un UpgradeCode qui identifie une «famille» de produits. Vous pouvez utiliser orca pour ouvrir l'un des MSI afin d'extraire ces informations. Par exemple, le UpgradeCode pour le redistribuable de VS2015 est
{65E5BD06-6392-3027-8C26-853107D3CF1A}
Vous pouvez utiliser MsiEnumRelatedProducts pour obtenir tous les ID de produit pour ce UpgradeCode. En pratique, puisque chaque mise à jour de redist remplace la précédente, cela ne donnera qu'un seul ProductCode - tel que
{B5FC62F5-A367-37A5-9FD2-A6E137C0096F}
pour VS2015 Update 2 x86.Quoi qu'il en soit, vous pouvez ensuite vérifier la version via MsiGetProductInfo ( , INSTALLPROPERTY_VERSIONSTRING, ...) ou des fonctions similaires pour comparer avec la version que vous souhaitez, par exemple pour rechercher une version équivalente ou ultérieure.
Notez que dans une application C ++, vous pouvez également utiliser
_VC_CRT_MAJOR_VERSION
,_VC_CRT_MINOR_VERSION
,_VC_CRT_BUILD_VERSION
si vous#include <crtversion.h>
- cette façon , vous pouvez déterminer calculer la version CRT que votre binaire a été construit avec.la source
Ce code PowerShell devrait faire l'affaire
la source
J'avais besoin de la même chose, et bien qu'AFAIK cela ne puisse pas être fait par programme, cela a fonctionné pour moi.
Je suis juste allé dans Démarrer -> Désinstaller un programme et j'ai fait défiler jusqu'à ce que je trouve le redistribuable VC ++, qui comprend un numéro de version. Googler le numéro de version, m'a dit qu'il appartient à VS2012 SP1.
la source
Ancienne question mais voici l'approche que nous avons utilisée depuis Visual Studio 2005 avec succès. Je viens de le tester en utilisant Visual Studio 2012 Update 4 également (puisque nous mettons enfin à jour notre logiciel de 2010 à 2012).
Puisque les packages redistribuables Visual C ++ enregistrent leur programme de désinstallation avec Windows (il apparaît donc dans la liste "Programmes et fonctionnalités" du panneau de configuration), nous vérifions simplement le nom d'affichage de la clé du programme de désinstallation dans le registre.
Voici le code NSIS pertinent:
Notez que puisque notre programme d'installation est un exe 32 bits, Windows gère la détermination si la clé de registre se trouve réellement dans le Wow6432Node virtualisé au lieu de l'emplacement ci-dessus, de sorte que le code ci-dessus fonctionne sur les installations Windows 64 bits et 32 bits sans avoir à vérifier les deux clés explicitement.
Notez également que pour mettre à jour le code ci-dessus vers une version différente de la redistribution VC ++, modifiez simplement le GUID dans le chemin d'accès de la clé de Registre et le nom complet en fonction de vos besoins.
Bien que ce ne soit peut-être pas la méthode recommandée, elle a fonctionné sur plus de 10000 machines au cours des 10 dernières années exécutant toutes les versions de Windows de XP / XP64 à Windows 10 en utilisant des redistributions pour 2005, 2010, 2010sp1 et maintenant 2012u4.
la source
Je vérifierais la
Installed
valeur deHKLM\SOFTWARE\[WOW6432Node]\Microsoft\Windows\CurrentVersion\Uninstall\{VCRedist_GUID}
cléVC++ 2012 (x86)
est{33d1fd90-4274-48a1-9bc1-97e33d9c2d6f}
WOW6432Node
sera présent ou non selon leVC++ redist
produitla source
Ce que la plupart des gens manquent, c'est la
/reg:32
vérification de la clé sous Windows x64.Consultez l' article d'aide de Microsoft à ce sujet.
Voici un script qui montre comment vérifier correctement Visual C ++ Redistributable pour Visual Studio 2012 Update 4.
la source
La solution de script PowerShell:
Sur la base des informations contenues dans la réponse de @kayleeFrye_onDeck
J'ai créé un script PowerShell qui vérifie et installe les versions spécifiées par l'utilisateur, je n'ai pas fait de tests approfondis avec lui, mais pour mon propre scénario CI (intégration continue), cela fonctionne parfaitement.
Le script complet et les informations sur github
L'approche que j'ai utilisée était basée sur la vérification des clés d'enregistrement sur la base des informations fournies ici. Voici l'essentiel de ce que fait le script:
La vérification / téléchargement / installation silencieuse sur la base de
$redistInfo
laquelle contient les informations compilées de kayleeFrye_onDeck.Le script complet et plus d'informations peuvent être trouvés sur github
Tout le monde est invité à contribuer, si j'ai le temps, je ferai des tests plus approfondis du script et continuerai à essayer d'ajouter de nouveaux packages au fur et à mesure que des informations seront ajoutées ici.
la source
Il est difficile d'obtenir toutes les valeurs de registre pour VC 2012, j'ai donc écrit une petite fonction qui passera en revue toutes les dépendances et correspondra à la version spécifiée.
Dépendances:
la source
vous pouvez rechercher dans le registre.En fait, je n'ai pas vs2012 mais j'ai vs2010.
Il existe 3 clés de registre différentes (mais très similaires) pour chacun des 3 packages de plate-forme. Chaque clé a une valeur DWORD appelée «Installé» avec une valeur de 1.
HKLM \ SOFTWARE \ Microsoft \ VisualStudio \ 10.0 \ VC \ VCRedist \ x86
HKLM \ SOFTWARE \ Microsoft \ VisualStudio \ 10.0 \ VC \ VCRedist \ x64
HKLM \ SOFTWARE \ Microsoft \ VisualStudio \ 10.0 \ VC \ VCRedist \ ia64
Vous pouvez utiliser la fonction de registre pour cela ......
la source
HKLM\SOFTWARE\Wow6432Node\Microsoft\VisualStudio\10.0\VC\VCRedist\...