2017-05-24 1 views
0

Salut, je courais le code suivant sur mon pc:Vous ne trouvez pas Microsoft Visual C++ 2015 redistribuable C# Programmatically

static void Main(string[] args) 
    { 
     StringBuilder sbProductCode = new StringBuilder(39); 
     int iIdx = 0; 
     while (
      0 == MsiEnumProducts(iIdx++, sbProductCode)) 
     { 
      Int32 productNameLen = 512; 
      StringBuilder sbProductName = new StringBuilder(productNameLen); 

      MsiGetProductInfo(sbProductCode.ToString(), 
       "ProductName", sbProductName, ref productNameLen); 

      if (sbProductName.ToString().Contains("Microsoft Visual C++ 2015 Redistributable")) 
      { 
       Int32 installDirLen = 1024; 
       StringBuilder sbInstallDir = new StringBuilder(installDirLen); 

       MsiGetProductInfo(sbProductCode.ToString(), 
        "InstallLocation", sbInstallDir, ref installDirLen); 

       Console.WriteLine("ProductName {0}: {1}", 
        sbProductName, sbInstallDir); 

       Console.ReadLine(); 
      } 
     } 
    } 

Les extrémités de la boucle et rien ne se trouve. Cependant en regardant Programmes et fonctionnalités dans le Panneau de configuration, je peux voir clairement qu'il est installé, et le nom correspond exactement dans la chaîne.

enter image description here

Répondre

0

C'est parce que « produits » MSI ne correspondent pas 1: 1 aux entrées affichées dans les programmes faisant face à l'utilisateur et la liste des caractéristiques. Pour l'environnement d'exécution VC 2015 x64 installé sur Windows 7, vous devez rechercher deux produits: Microsoft Visual C++ 2015 x64 Minimum Runtime et Microsoft Visual C++ 2015 x64 Additional Runtime.

+0

Merci, comment puis-je savoir quels redistribuables correspondent à quels produits? J'ai essayé de chercher partout. – Phil15

+0

Vous pouvez les déterminer par essais et erreurs (installer un package redistribuable sur un système propre, exécuter l'outil, voir quels produits apparaissent) ou inspecter le contenu du fichier MSI/MSM redistribuable décompressé (téléchargé ou trouvé dans le répertoire d'installation de Visual Studio)) avec les outils Windows Installer de Windows SDK et obtenir les noms de produits à partir de là. – cynic