我正在尝试在 C# .Net 中开发一个工具(使用 Windows 窗体)。我已经生成了一个 MSI 文件和一个 MST(转换文件)。我必须首先读取 msi 文件(使用表单菜单菜单项从用户获取输入),然后读取 mst 文件(与 msi 作为输入的方式相同)。接下来,通过复制输入的 msi 创建一个临时 msi(可能在临时位置)并将转换应用于该临时 msi。然后,我可以根据我的要求查询 msi 表(与 mst 合并)。我正在使用 Visual Studio 2010 专业版。这是我使用 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);