2010-12-13 92 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

相關問題