Использование C # Как определить, установлен ли Windows Installer 4.5 - PullRequest
7 голосов
/ 13 декабря 2010

Я пытаюсь найти наиболее эффективный способ определить, установлен ли Windows Installer 4.5 на компьютере.

У меня есть приложение 2.0 (в настоящее время я не могу преобразовать его в 3.5), и мы обновляем MSDE до SQL 2008 Express.Одним из требований 2008 Express является то, что на компьютере установлен Windows Installer 4.5.Это приложение развернуто глобально на компьютерах как во внутренней сети, так и за ее пределами.

Я бы предпочел запустить пакетный файл или код C # для определения версии установщика.

Пожалуйста, дайте мне знать вашрекомендуемые методы и предоставить некоторый код (или ссылки на код).

Спасибо!

Ответы [ 3 ]

10 голосов
/ 13 декабря 2010

Вы можете прочитать версию файла библиотеки msi.dll в системном каталоге:

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);
}
1 голос
/ 13 декабря 2010

Как сказал Ho1, вы можете перейти на версию MSI.dll в System32, но вам не нужно P / Invoke, вы можете использовать класс FileVersionInfo, найденный в System.Diagnostics.

1 голос
/ 13 декабря 2010

Проверьте версию файла MSI.DLL, который находится в вашем каталоге System32.

Вы должны иметь возможность использовать GetFileVersionInfo или GetFileVersionInfoEx , чтобы получить версиюномер.

В этой статье MSDN есть пример кода: Руководство по небезопасному коду

...