2010-12-13 74 views
7

J'essaie de trouver le moyen le plus efficace pour déterminer si Windows Installer 4.5 est installé sur une machine.Utilisation de C# Comment détecter si Windows Installer 4.5 est installé

J'ai une application 2.0 (impossible de convertir pour l'instant en 3.5) et nous passons de MSDE à SQL 2008 Express. L'une des exigences de 2008 Express est que Windows Installer 4.5 est installé sur la machine. Cette application est déployée globalement sur les machines à la fois sur et hors d'un réseau interne.

Je préférerais exécuter un fichier batch ou un code C# pour déterminer la version du programme d'installation.

Veuillez me faire connaître vos méthodes recommandées et fournir du code (ou des liens vers le code).

Merci!

Répondre

10

Vous pouvez lire la version du fichier de la bibliothèque msi.dll dans le répertoire système:

using System.Diagnostics; 
using System.IO; 

public bool IsWindowsInstaller45Installed() 
{ 
    FileVersionInfo info; 
    string fileName = Path.Combine(Environment.SystemDirectory, "msi.dll"); 
    try { 
     info = FileVersionInfo.GetVersionInfo(fileName); 
    } catch (FileNotFoundException) { 
     return false; 
    } 

    return (info.FileMajorPart > 4 
      || info.FileMajorPart == 4 && info.FileMinorPart >= 5); 
} 
+0

J'apprécie la réponse rapide. Je vous remercie! – tc44

1

Comme l'a dit HO1, vous pouvez aller par la version de msi.dll dans System32, mais vous n'avez pas besoin de P/Invoke vous pouvez utiliser la classe FileVersionInfo trouvé dans System.Diagnostics.

+0

Bien que si vous enlevez le PInvoke, vous ôtant la plupart du plaisir :) –

+1

Non, Frédéric emportèrent tout le plaisir en donnant à l'OP une copie et coller la réponse. J'aime répondre aux questions et non faire mes devoirs. –