C# プロジェクトから、ローカル マシンにインストールされているすべての MSI パッケージの名前とバージョンを取得する必要があります。何か案は?
ありがとうございました。
C# プロジェクトから、ローカル マシンにインストールされているすべての MSI パッケージの名前とバージョンを取得する必要があります。何か案は?
ありがとうございました。
Windows Installer XML (WiX) Deployment Tools Foundation (DTF) にある Microsoft.Deployment.WindowsInstaller 名前空間を見てみましょう。それは持っています:
public static IEnumerable<ProductInstallation> GetProducts(
string productCode,
string userSid,
UserContexts context
)
商品コード (文字列)
列挙する製品インスタンスの ProductCode (GUID)。userSid および context パラメーターで指定されたコンテキストの範囲内の製品のインスタンスのみが列挙されます。このパラメーターを null に設定して、指定されたコンテキスト内のすべての製品を列挙することができます。
ユーザー ID (文字列)
列挙のコンテキストを制限するセキュリティ識別子 (SID) を指定します。s-1-1-0 以外の SID 値はユーザー SID と見なされ、列挙を現在のユーザーまたはシステム内の任意のユーザーに制限します。特別な SID 文字列 s-1-1-0 (Everyone) は、システム内のすべてのユーザーの列挙を指定します。このパラメータを null に設定して、列挙範囲を現在のユーザーに制限できます。コンテキストがマシン コンテキストのみに設定されている場合、userSid は null である必要があります。
コンテキスト (UserContexts)
ユーザー コンテキストを指定します。
Win32 MSI API MsiEnumProductsEx 関数をラップします。これにより、Linq クエリを実行して、インストールされている MSI について知る必要があるものを見つけることができる ProductInstallation のコレクションが返されます。