我正在尝试使用 Wix DTF 自定义操作将 MSI 运行时会话值写入注册表。我想通过将临时记录添加到数据库中的“注册表”表来实现。由于c ++有一种WcaAddTempRecord
方法可以实现这一点,所以真的很想知道DTF中是否有任何等效的方法。
注意:我尝试使用Session.Database.OpenView
插入记录,但由于会话数据库只读属性,我一直收到更新失败错误。
有人可以建议这种情况的最佳方法吗?
这是我的“转到”辅助方法:
private static void InsertTempRecord(Session session, string tableName, Object[] objects)
{
Database db = session.Database;
string sqlInsertSring = db.Tables[tableName].SqlInsertString + " TEMPORARY";
session.Log("SqlInsertString is {0}", sqlInsertSring);
View view = db.OpenView(sqlInsertSring);
view.Execute(new Record(objects));
view.Close();
}
有关更多信息,请参阅:
MSI 数据库在安装期间是只读的。所以你不能添加永久行。但是,您可以插入临时行。一旦你从View
后面得到,Session.Database.OpenView()
然后使用对象InsertTemporary()
上的方法View
来添加临时行。
这就是TempWcaAddTempRecord()
名字的由来。:)