2010-12-13 133 views
7

我想知道确定Windows Installer 4.5是否安装在计算机上的最有效方法。使用C#如何检测是否安装了Windows Installer 4.5

我有一个2.0的应用程序(此时不能转换为3.5),我们是从MSDE升级到SQL 2008快递。 2008 Express的要求之一是Windows Installer 4.5安装在机器上。此应用程序全局部署到内部网络和外部网络上的机器上。

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

请让我知道你推荐的方法,并提供一些代码(或代码链接)。

谢谢!

回答

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

我很欣赏快速反应。谢谢! – tc44 2010-12-13 19:01:18

1

像HO1说,你可以通过在System32下的版本MSI.DLL的去,但你并不需要的P/Invoke,您可以使用发现FileVersionInfo类在System.Diagnostics中。

+0

但如果你拿走PInvoke的,你拿走大部分的乐趣:) – 2010-12-13 13:08:44

+1

没有,弗雷德里克带走所有的乐趣都通过给OP一个复制和粘贴的答案。我喜欢回答问题,而不是做作业。 – 2010-12-13 15:04:11

相关问题