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

7
我正在尝试找出最有效的方法来确定计算机上是否安装了Windows Installer 4.5。我有一个2.0应用程序(目前不能转换为3.5),我们正在从MSDE升级到SQL 2008 Express。2008 Express的要求之一是在计算机上安装Windows Installer 4.5。此应用程序在内部网络以及内外网络中的机器上全球部署。
我希望运行批处理文件或C#代码来确定安装程序版本。请告诉我您推荐的方法并提供一些代码(或代码链接)。
谢谢!
3个回答

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);
}

感谢您的快速回复。谢谢! - tc44

1

1

就像Ho1所说的那样,您可以按照System32中MSI.dll的版本进行操作,但您不需要使用P/Invoke,而是可以使用在System.Diagnostics中找到的FileVersionInfo类。


虽然如果你去掉PInvoke,你就失去了大部分的乐趣 :) - Hans Olsson
1
不,弗雷德里克把所有的乐趣都带走了,只给初次提问者提供了一个复制粘贴的答案。我喜欢回答问题而不是做作业。 - Christopher Painter

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接