Détecter si Visual C++ Redistribuable Visual Studio 2012 est installé
Comment détecter si Visual C++ Redistribuable Visual Studio 2012 est installé?
J'ai essayé Google et personne n'a posé cette question, surprise!
- Pourquoi ne pas supprimer cette dépendance en paramètre de la bibliothèque Runtime C++ > génération de Code Multi-thread [debug] au lieu de Multi-thread [debug] dll? Je viens de résoudre un problème de runtime redist installation, simplement en retirant la dépendance au.
- J'ai trouvé comment détecter les paquets par essai et erreur. Je souhaite qu'il y avait une formule magique, mais si il y est, je n'ai pas encore trouvé. J'ai une réponse vers le bas ci-dessous pour certains redists qui semblent travailler à 100% du temps pour aider à l'heure actuelle, la plupart d'entre eux.
- Veuillez envisager de modifier la accepté de répondre à l'un par kayleeFrye_onDeck. J'ai passé du temps à la recherche d'une méthode fiable et ce qui semble être le seul, je pense qu'avec toutes les autres réponses fiables, il va aider beaucoup de personnes à trouver la bonne information
- Il semble y avoir une mise à jour pour Visual Studio 2017 temps de fonctionnement: 14.10.V25017. Lien: go.microsoft.com/fwlink/?LinkId=746572 Pourriez-vous mettre à jour le registre des valeurs?
Vous devez vous connecter pour publier un commentaire.
Il dépend de la version que vous utilisez. Ces deux 2012 touches ont bien fonctionné pour moi avec leurs versions à télécharger la mise à Jour 4. S'il vous plaît être conscient que certains de ces reg emplacements peuvent être dépendants. J'ai recueilli cette information d'une Windows 10 x64 boîte. Je vais juste aller de l'avant et dump l'ensemble de ces redist versions et le reg touches, 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
version mise en garde: Par utilisateur Wai Ha Leeconclusions, "...binaires qui viennent avec VC++ 2012 mise à jour 4 (
11.0.61030.0
) disposer de la version11.0.60610.1
pour l'ATL et MFC binaires, 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
pensez à utiliser la période 2015-2019, bundle comme une 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
pensez à utiliser la période 2015-2019, bundle comme une alternative
Mise en garde: Il y a soit un nouveau 2017 registre convention utilisé, ou il n'a pas été finalisé, encore. Comme j'imagine le haut-la plupart des touches de:
[HKEY_CLASSES_ROOT\Installer\Dependencies\,,amd64,14.0,bundle]
et
[HKEY_CLASSES_ROOT\Installer\Dependencies\,,x86,14.0,bundle]
sont susceptibles de changer, ou au moins avoir différentes imbriquées les Guid, je vais utiliser la liste la clé qui se termine avec 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 (2015-2019 bundle)
Mise en garde: Il y a un autre nouveau registre convention utilisée pour Visual C++ 2019. Aussi il ne semble pas y avoir un programme d'installation autonome pour Visual C++ 2019, seulement ce bundle installer Visual C++ de 2015 à 2019.
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
Changelog:
13 juin 2019 -- Ajout d'une nouvelle section pour la période 2015-2019, bundle version
14.21.27702
et à ajouter petites notes pour 2015 et 2017 sections de considérer l'utilisation d'un nouveau bundle comme une alternative.14 décembre 2018 -- mise à Jour MSVC2008 pour le Service Pack 1 de
9.0.30729.6161
mise à jour par Jim Wolff résultatsLe 27 novembre 2018 -- mis à Jour d'informations pour MSVC2017 v.
14.16
Le 12 septembre 2018 -- Ajout d'une version mise en garde à 2012-mise à Jour 4 par Wai Ha Lee résultats
24 août 2018 -- mis à Jour en 2017, la version pour 14.15.26706, la mise à jour de Visual C++ dépendances emballés avec VS 2017 15.8.1
16 mai 2018 -- mis à Jour en 2017, la version pour 14.14.26405.0 que le nouveau C++ 2017 entrée
8 septembre 2017-mise à Jour en 2017, la version pour 14.11.25325.0 que le nouveau Visual C++ 2017 entrée
Le 7 avril 2017-mise à Jour en 2017, la version de 14.10.25008.0 que le nouveau Visual C++ 2017 entrée
Le 24 octobre 2016-mise à Jour 2015 de l'info de version pour 14.0.24215.1
Le 18 août, 2016-mise à Jour 2015 de l'info de version pour 14.0.24212
Le 27 mai 2016-mise à Jour des informations pour MSVC2015 mise à Jour 2
Veuillez me contacter ici si l'un de ces deviennent obsolètes.
HKLM\SOFTWARE\ [ WOW6432Node\ ]Microsoft\Windows\CurrentVersion\Uninstall\{VCRedist_GUID_Here}
devrait être assez rapide.141
(vc2017) mais doit avoir le140
(vc2015) option. Il semble que le VC2015 binaires doivent être compatibles avec la VC2017 redists. Maintenant, si c'est tout VC2015 apps, ou ceux qui sont intégrés avec des versions spécifiques comme, disons, la mise à Jour 3, que je ne peux pas vous dire sur le dessus de ma tête.[HKEY_CLASSES_ROOT\Installer\Dependencies\,,x86,14.0,bundle\Dependents\{$GUID}
et[HKEY_CLASSES_ROOT\Installer\Dependencies\,,amd64,14.0,bundle\Dependents\{$GUID}
11.0.61030.0
) disposer de la version11.0.60610.1
pour l'ATL et MFC binaires, et11.0.51106.1
pour tout le reste, par exemple msvcp110.dll et msvcr110.dll. Je ne sais pas pourquoi.[HKEY_CLASSES_ROOT\Installer\Dependencies\VC,redist.x86,x86,14.16,bundle] [HKEY_CLASSES_ROOT\Installer\Dependencies\VC,redist.x64,amd64,14.16,bundle]
Microsoft Visual C++ Redistributable 2008 SP1 x64 EN
doit-on ajouter à cette liste? Trouvé ici{050d4fc8-5d48-4b8f-8972-47c82c46020f}
- 12.0.30501.0,{5d0723d3-cff7-4e07-8d0b-ada737deb5e6}
- 12.0.40649.5 et{7f51bdb9-ee21-49ee-94d6-90afc321780e}
- 12.0.21005.1. Pour Win32, je n'ai pas le 30501 version mais j'ai les deux autres.Essayer
comme un point de départ. Je vais utiliser ce qu'une vérification de l'installation de la VC++ 11 (VS 2012) de l'exécution.
HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\Microsoft\DevDiv\VC\Servicing\11.0\RuntimeMinimum
Vous pouvez vérifier pour la
Installed
de la valeur de la1
dans ce registre, à l'emplacement:HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\Microsoft\VisualStudio\11.0\VC\Runtimes\x86
sur les systèmes 64 bits. Dans le code qui en résulterait dans l'accès à la clé de registreHKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\VisualStudio\11.0\VC\Runtimes\x86
. Notez l'absence deWow6432Node
.Sur un système 32 bits du registre est le même sans
Wow6432Node
:HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\VisualStudio\11.0\VC\Runtimes\x86
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\VisualStudio\11.0\VC
mais je n'ai pas leRuntimes
clé. J'ai la clé de Dave réponseHKLM\SOFTWARE\Microsoft\DevDiv\VC\Servicing\11.0
.Il n'y a pas de installcheck élément dans le programme d'amorçage manifeste du package livré avec Visual C++. Suppose que Microsoft veut toujours installer si vous le définissez comme une condition préalable.
Bien sûr, vous pouvez toujours appeler MsiQueryProductState pour vérifier si le VC redist paquet est installé via MSI, Le code du package peuvent être trouvés en exécutant
à la ligne de commande, ou si vous êtes déjà à wmic:root\cli, exécutez
La réponse à cette questions simples est malheureusement pas simple, mais le travail de 100% pour tous les systèmes, et même extensible à la de nombreuses .net cadres.
La complexité vient du fait qu'il sont (et ont été), de nombreux CR exécution des révisions qui pourraient conduire à la cause que bien que VC10 temps de fonctionnement ont été installés, leur numéro de version n'a pas été assez récent, de sorte que votre EXE refusait de démarrer, à moins que vous installé le très exact runtimes vous ou l'un des nouveaux environnements d'exécution qui permettent cela, et les versions précédentes pour la même version majeure de courir avec elle (le side-by-side de l'enfer).
Aussi, si vous avez une version 64 bits EXE, vous aurez pour vérifier les deux, le 32 bits ET 64 bits runtimes.
Cela dit, le seul moyen fiable de déterminer si l'exécution de votre EXE sont installés est de tenter d'exécuter le fichier EXE - ou un autre EXE qui est construit avec les mêmes paramètres que le principal EXE et dont le seul but est de ne rien faire. Il suffit d'exécuter (ce qui signifie que l'exécution n'est installé) ou ne pas exécuter (quand il n'est pas installé).
Je n'ai la suite pour un installateur qui a requis la VC10 32 bits et 64 bits des durées maximales d'installation: Le programme d'installation tente de lancer tous les factice Exe et si elle réussit, l'exécution correspondant est considéré comme pour être installé. Cela résout également les 32/64 bits scénario.
Cela, d'ailleurs, fonctionne également à déterminer si le bon .net framework est installé, ce qui est très difficile dans Windows 8 et 10, que l'téléchargeable intégré .net 3.5 soutien prend également en charge l' .net les versions 3.0 et 2.0 - il n'y a pas de registre des entrées pour ces.
(Et le pire, vous ne pouvez même pas utiliser la norme-cadre installateurs ici, vous doit utiliser la prise en charge intégrée et le télécharger via Windows, ou de la reconstruction de votre application .net 4, mais c'est une autre histoire).
Le C++ mannequin EXE peuvent être construits à partir d'un projet avec le code suivant (et un autre dans une version 64 bits de configuration si nécessaire):
N'oubliez pas de définir les propriétés du projet Utilisation des MFC à Utiliser les MFC dans une DLL partagée.
Les exécutables seront autour de 4 KO en taille - un petit prix à payer pour un certain résultat.
Pour donner à vos utilisateurs une belle expérience d'installation, vous pouvez effectuer les opérations suivantes (exemple de code est pour INS):
et de l'appeler dans une fonction, par exemple, CheckRuntimes
Puis lancez le moment de l'exécution par exemple, lors de la sortie du Bienvenue page et de mettre en cache le résultat, de sorte que vous n'avez pas à re-vérifier chaque fois que l'utilisateur clique sur le bouton "Retour" et "Suivant".
Ensuite, faire un en lecture seule section dans l'arborescence de l'installation et pré-sélectionner ou désélectionner la fonction qui est exécutée avant la Composants page est affichée.
Cela permettra de s'assurer que l'installation de chaque manquant composant d'exécution est obligatoire, et est ignoré si il est déjà présent.
Depuis Visual Studio 2010 et, plus tard, arrêté à l'aide de WinSxS, il peut être suffisant de simplement vérifier pour %windir%\system32\msvcr110.dll. Si vous voulez vérifier que vous avez un assez nouveau version, vous pouvez vérifier si la version du fichier est 11.0.50727.1 (VS2012 RTM) ou 11.0.51106.1 (VS2012 mise à Jour 1).
11.0.61030.0
) disposer de la version11.0.60610.1
pour l'ATL et MFC binaires, et11.0.51106.1
pour tout le reste, par exemple msvcp110.dll et msvcr110.dll. Je ne sais pas pourquoi. Vous pouvez le vérifier (sur Windows 10 machines que j'ai testé sur) en allant àC:\ProgramData\Package Cache\{BD95A8CD-1D9F-35AD-981A-3E7925026EBB}v11.0.61030\packages\vcRuntimeMinimum_x86
etC:\ProgramData\Package Cache\{B175520C-86A2-35A7-8619-86DC379688B9}v11.0.61030\packages\vcRuntimeAdditional_x86
ensuite d'inspecter les fichiers dans le .les fichiers cab.Je suis tombé sur cette question, la recherche d'une réponse dans le cadre de la vérification pour le Visual C++ redistributable dans le cadre d'un programme d'installation MSI créé par WiX.
Je n'aimais pas la façon dont le GUID du changement avec la version et le système d'exploitation, j'ai donc fini par créer une action personnalisée écrit en C# pour vérifier l'Visual C++ redistributable.
Tout ci-dessous est spécifiquement pour Visual C++ 2015 Redistribuable (x64), mais il peut être facilement modifié pour n'importe quelle version.
Puis dans le fichier wxs
Modifier
Je suis à 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 le WiX Toolset Visual Studio 2017 extension est installée, j'ai utilisé le modèle de projet pour créer une action personnalisée (C# Projet d'Action Personnalisé pour WiX v3).
J'ai vérifié le projet généré et il semblait déjà avoir les changements répertoriés au début de cet article: https://www.codeproject.com/Articles/132918/Creating-Custom-Action-for-WIX-Written-in-Managed donc j'ai choisi cet article jusqu'à la section
Adding Custom Action to the Installer
et suivre à travers avec quelques ajustements.Une autre chose que j'ai fait a été de changer la version de l' .NET framework le projet est construit contre 3,5.
Je n'ai pas trouvé cela vraiment utile, mais vous pouvez également voir http://wixtoolset.org/documentation/manual/v3/wixdev/extensions/authoring_custom_actions.html
Pour moi, cet endroit a travaillé:
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\DevDiv\vc\Servicing\11.0\RuntimeMinimum\Version
Vérifier la version que vous avez après avoir installé le package et l'utiliser comme une condition dans votre installateur. (le mien est configuré pour 11.0.50727 après l'installation de VCred).
Il suffit d'aller à Panneau de configuration > Programmes et Fonctionnalités, et ils semblent tous répertoriés.
Je ne suis pas expert, et cette réponse est assez simple par rapport à ce que les gens sont de réponse (vérification de la base de registre), donc je ne suis pas sûr si c'est la bonne réponse, mais ça a fait l'affaire pour moi.
J'ai réussi à le faire avec InnoSetup.
J'ai vérifié l'existence de la clé de registre:
HKLM\SOFTWARE\Microsoft\VisualStudio\11.0\VC\Runtimes
Si désinstallé, il n'existe pas. Si elle est installée, elle existe.
Par la voie, il pourrait aussi être dans la Wow6432Node:
HKLM\SOFTWARE\Wow6432Node\Microsoft\VisualStudio\11.0\VC\Runtimes
Vérification de l'état d'installation pour le produit via MsiQueryProductState est à peu près l'équivalent de vérifier directement le registre, mais vous avez encore besoin de le GUID de la ProductCode.
Comme mentionné ailleurs, un inconvénient de ces approches est que chaque jour a sa propre valeur ProductCode!
Heureusement, MSI propose une UpgradeCode qui l'identifie à une "famille" de produits. Vous pouvez utiliser orca pour l'ouverture de la Msi pour extraire cette information. Par exemple, le UpgradeCode pour VS2015 est redistribuable est
{65E5BD06-6392-3027-8C26-853107D3CF1A}
Vous pouvez utiliser MsiEnumRelatedProducts pour obtenir tous les Id de Produit pour que UpgradeCode. Dans la pratique, étant donné que chaque redist mise à jour remplace la précédente, cela ne fera que donner l'un ProductCode - comme
{B5FC62F5-A367-37A5-9FD2-A6E137C0096F}
pour VS2015 mise à Jour 2 x86.En soit, vous pouvez vérifier la version via MsiGetProductInfo(productCode, INSTALLPROPERTY_VERSIONSTRING, ...) ou des fonctions similaires à comparer avec la version que vous souhaitez, par exemple, de vérifier pour un équivalent ou une version ultérieure.
Note 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>
-- de cette façon, vous pouvez déterminer calculer la version CRT que le binaire a été construit avec.Ce PowerShell code devrait faire l'affaire
J'avais besoin de la même chose, et bien autant que je sache, ce ne peut pas être fait par programmation, il a travaillé pour moi.
Je suis juste allé à Démarrer --> Désinstaller un programme et défilez vers le bas jusqu'à ce que j'ai trouvé le VC++ redistributable, qui comprend un numéro de version. Googler le numéro de version, m'a dit qu'il appartient à VS2012 SP1.
Une vieille question, mais ici, c'est l'approche que nous avons utilisée depuis Visual Studio 2005 avec succès. Je l'ai juste testé à l'aide de Visual Studio 2012 Update 4 ainsi (puisque nous sommes enfin la mise à jour de notre logiciel de 2010 à 2012).
Depuis le Visual C++ Redistributable packages de s'inscrire à leur programme de désinstallation de windows (de sorte qu'il s'affiche dans le Panneau de configuration, Programmes et Fonctionnalités" de la liste), il nous suffit de vérifier le Nom d'Affichage du programme de désinstallation de clé dans le registre.
Voici la code INS:
Note que, depuis notre installation est un 32 bits exe, windows se charge de déterminer si la clé de registre est en fait dans le virtualisés Wow6432Node au lieu de l'emplacement ci-dessus de sorte que le code ci-dessus fonctionne à la fois 64 bits et 32 bits de windows installe sans avoir à vérifier à la fois les touches explicitement.
Notez aussi que pour mettre à jour le code ci-dessus pour une version différente de la VC++ Redist, il suffit de modifier le GUID dans la clé de registre chemin d'accès et le nom d'affichage pour ce que vous avez besoin.
Même si cela peut ne pas être la méthode recommandée, Il a travaillé sur plus de 10 000 appareils au cours des 10 dernières années, l'exécution de toutes les saveurs de windows à partir de XP/XP64 Par le biais de Windows 10 à l'aide de redists pour 2005, 2010, 2010sp1, et maintenant 2012u4.
Je voudrais vérifier le
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 en fonction de laVC++ redist
produitCe que la plupart des gens manquer est la
/reg:32
pour vérifier la clé de Windows x64.Voir De Microsoft à l'article sur ce sujet.
Voici un script qui montre comment vérifier correctement pour Visual C++ Redistribuable pour Visual Studio 2012 Update 4.
Le script powershell solution:
Basé sur les informations contenues dans la réponse de @kayleeFrye_onDeck
J'ai créé un script powershell qui permet de contrôler et installe les versions de l'utilisateur spécifie, je n'ai pas fait de nombreux essais avec elle, mais pour mon propre CI (Intégration Continue) scénario, il fonctionne parfaitement.
Le script intégral et info sur github
L'approche que j'ai utilisée était basée sur la vérification de la regkeys basée sur les informations fournies ici. Voici l'essentiel de ce que fait le script:
La vérification/télécharger/installer silencieusement basé sur
$redistInfo
qui contient les informations compilées à partir de kayleeFrye_onDeck de l'.Le scénario complet et plus d'informations peuvent être trouvées sur github
Tout un chacun est invité à contribuer, si j'ai le temps je vais faire des tests plus poussés du script et de continuer à essayer d'ajouter de nouveaux paquets d'informations sont ajoutées ici.
vous pouvez effectuer une recherche dans la base de registre.En fait je n'ai pas vs2012, mais j'ai vs2010.
Il y a 3 différents (mais très similaire) les clés de registre pour chacune des 3 plate-forme de paquets. Chaque clé a une valeur DWORD nommé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 que......
HKLM\SOFTWARE\Wow6432Node\Microsoft\VisualStudio\10.0\VC\VCRedist\...