我正在尝试找出确定Windows Installer 4.5是否安装在计算机上的最有效方法。
我有一个2.0应用程序(目前无法转换为3.5),我们正在从MSDE升级到SQL 2008 Express。 2008 Express的要求之一是在计算机上安装了Windows Installer 4.5。此应用程序全局部署到内部网络内外的计算机上。
我更喜欢运行批处理文件或C#代码来确定安装程序版本。
请告诉我您推荐的方法,并提供一些代码(或代码链接)。
谢谢!
答案 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文件的版本。
您应该可以使用GetFileVersionInfo或GetFileVersionInfoEx来获取版本号。
这篇MSDN文章有一些示例代码:Unsafe Code Tutorial
答案 2 :(得分:1)
与Ho1说的一样,您可以使用System32中的MSI.dll版本,但不需要P / Invoke,您可以使用System.Diagnostics中的FileVersionInfo类。