【问题标题】:Using C# How to detect if Windows Installer 4.5 is Installed使用 C# 如何检测是否安装了 Windows Installer 4.5
【发布时间】:2010-12-13 12:35:19
【问题描述】:

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

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

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

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

谢谢!

【问题讨论】:

    标签: c# .net windows installation


    【解决方案1】:

    可以读取系统目录下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);
    }
    

    【讨论】:

    • 感谢您的快速响应。谢谢!
    【解决方案2】:

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

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

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

    【讨论】:

      【解决方案3】:

      就像 Ho1 说的,你可以通过 System32 中的 MSI.dll 的版本,但你不需要 P/Invoke,你可以使用 System.Diagnostics 中的 FileVersionInfo 类。

      【讨论】:

      • 虽然如果你取消了 pinvoke,你就失去了大部分的乐趣:)
      • 不,Frederic 给 OP 一个复制和粘贴的答案带走了所有的乐趣。我喜欢回答问题而不是做作业。
      猜你喜欢
      • 2010-11-11
      • 2012-12-17
      • 1970-01-01
      • 2010-09-23
      • 1970-01-01
      • 2011-07-08
      • 1970-01-01
      • 2012-06-20
      • 1970-01-01
      相关资源
      最近更新 更多