C# .Net で (Windows フォームを使用して) ツールを開発しようとしています。MSI ファイルと MST (変換ファイル) が既に生成されています。最初にmsiファイルを読み取って(フォームmenustripメニュー項目を使用してユーザーから入力として取得)、次にmstファイルを読み取る必要があります(msiが入力として取得した方法と同じ)。次に、入力された msi をコピーして一時的な msi (一時的な場所にある場合があります) を作成し、その一時的な msi に変換を適用します。次に、要件に従って msi テーブル (mst とマージ) をクエリできます。Visual Studio 2010 Professional エディションを使用しています。これは、Windowsインストーラ参照ライブラリを使用して、私の知る限り書いたコードです。
using System;
using System.ComponentModel;
using System.Windows.Forms;
using WindowsInstaller;
using System.Xml;
using System.IO;
//// Create an Installer instance
Type classType = Type.GetTypeFromProgID("WindowsInstaller.Installer");
Object installerObj = Activator.CreateInstance(classType);
Installer installer = installerObj as Installer;
Database database = Installer.OpenDatabase(File_MSI,MsiOpenDatabaseMode.
msiOpenDatabaseModeTransact);
database.ApplyTransform (File_MST, MsiTransformError.msiTransformErrorViewTransform);
WindowsInstaller.View viewmst = null;
string sqlquerymst = string.Format("Select * FROM _TransformView");
viewmst = database.OpenView(sqlquerymst);
viewmst.Execute(null);
database.Commit();
viewmst.Close();
string sql = String.Format("Select Property,Value FROM Property");
WindowsInstaller.View view = database.OpenView(sql);
view.Execute(null);