我试图在C#.Net中开发一个工具(使用Windows窗体)。我已经生成了MSI文件和MST(转换文件)。我必须首先读取msi文件(使用表单menustrip菜单项从用户获得输入),然后读取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);
答案 0 :(得分:1)
虽然目前尚不清楚您面临的问题,但我会为您提供一些一般性建议:
Database
类及其ApplyTransform()
方法希望这可以帮助你。