使用C#如何检测Windows Installer 4.5是否已安装

时间:2010-12-13 12:35:19

标签: c# .net windows installer

我正在尝试找出确定Windows Installer 4.5是否安装在计算机上的最有效方法。

我有一个2.0应用程序(目前无法转换为3.5),我们正在从MSDE升级到SQL 2008 Express。 2008 Express的要求之一是在计算机上安装了Windows Installer 4.5。此应用程序全局部署到内部网络内外的计算机上。

我更喜欢运行批处理文件或C#代码来确定安装程序版本。

请告诉我您推荐的方法,并提供一些代码(或代码链接)。

谢谢!

3 个答案:

答案 0 :(得分:10)

您可以在系统目录中读取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 :(得分:1)

检查System32目录中的MSI.DLL文件的版本。

您应该可以使用GetFileVersionInfoGetFileVersionInfoEx来获取版本号。

这篇MSDN文章有一些示例代码:Unsafe Code Tutorial

答案 2 :(得分:1)

与Ho1说的一样,您可以使用System32中的MSI.dll版本,但不需要P / Invoke,您可以使用System.Diagnostics中的FileVersionInfo类。