2010-12-13 8 views
7

Windowsインストーラ4.5がコンピュータにインストールされているかどうかを判断する最も効率的な方法を見つけようとしています。C#を使用するWindowsインストーラ4.5がインストールされているかどうかを検出する方法

私は2.0のアプリケーションを持っています(今度は3.5に変換できません)。MSDEからSQL 2008 Expressにアップグレードしています。 2008 Expressの要件の1つは、Windows Installer 4.5がマシンにインストールされていることです。このアプリケーションは、内部ネットワークの内部と外部の両方のマシンにグローバルに展開されます。

バッチファイルまたはC#コードを実行してインストーラのバージョンを確認することをお勧めします。

お勧めの方法をお知らせし、コード(またはコードへのリンク)をお知らせください。

ありがとうございます!

答えて

10

あなたはシステムディレクトリにmsi.dllライブラリのファイルバージョン読むことができます:あなたはのPInvokeを奪うならば、あなたは楽しみのほとんどを離れて取っているものの

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

1

は、あなたがのSystem32にあるMSI.DLLのバージョンで行くことができますが、あなたが見つけFileVersionInfoクラスを使用することができます起動/ Pする必要はありません。

このMSDNの記事は、いくつかのサンプルコードを持っていますin System.Diagnostics。

+0

を:) –

+1

いいえ、フレデリックが奪いましたOPにコピーとペーストの回答を与えることですべての楽しみ。私は宿題をしていない質問に答えるのが好きです。 –

関連する問題