我正在尝试使用Wix DTF自定义操作将MSI运行时会话值写入注册表。
我想通过在数据库中的“Registry”表中添加临时记录来实现。
由于c ++有一个WcaAddTempRecord
方法来实现这一点,所以我真的想知道DTF中是否有任何等效的方法。
注意:我尝试使用Session.Database.OpenView
插入记录,但由于会话数据库只读属性,我一直在收到更新失败错误。
有人可以为这种情况建议最好的方法吗?
答案 0 :(得分:0)
MSI数据库在安装期间是只读的。所以你不能添加永久行。但是,您可以插入临时行。从View
返回Session.Database.OpenView()
后,使用InsertTemporary()
对象上的View
方法添加临时行。
这就是WcaAddTempRecord()
在其名称中获得 Temp 的方式。 :)
答案 1 :(得分:0)
这是我的"转到"辅助方法:
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();
}
有关详细信息,请参阅: