2010-12-13 30 views
7

Estoy tratando de encontrar la forma más eficiente de determinar si Windows Installer 4.5 está instalado en una máquina.Uso de C# Cómo detectar si Windows Installer 4.5 está instalado

Tengo una aplicación 2.0 (no se puede convertir en este momento a 3.5) y estamos actualizando de MSDE a SQL 2008 Express. Uno de los requisitos de 2008 Express es que Windows Installer 4.5 está instalado en la máquina. Esta aplicación se implementa globalmente en máquinas dentro y fuera de una red interna.

Preferiría ejecutar un archivo por lotes o código C# para determinar la versión del instalador.

Háganme saber sus métodos recomendados y proporcione algún código (o enlaces al código).

Gracias!

Respuesta

10

Puede leer la versión del archivo de la biblioteca msi.dll en el directorio del sistema:

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

Aprecio la respuesta rápida. ¡Gracias! – tc44

1

Como Ho1 dijo, se puede ir por la versión de MSI.DLL en System32, pero usted no necesita a P/Invoke se puede utilizar la clase FileVersionInfo encontrado en System.Diagnostics.

+0

Aunque si le quitas la PInvoke, estás quitando la mayor parte de la diversión :) –

+1

No, Frederic se llevaron toda la diversión al darle al OP una copia y pegar la respuesta. Me gusta responder preguntas que no hacen la tarea. –

Cuestiones relacionadas