Wix DTF自定义动作相当于WcaAddTempRecord

时间:2013-04-16 14:23:50

标签: wix dtf

我正在尝试使用Wix DTF自定义操作将MSI运行时会话值写入注册表。 我想通过在数据库中的“Registry”表中添加临时记录来实现。 由于c ++有一个WcaAddTempRecord方法来实现这一点,所以我真的想知道DTF中是否有任何等效的方法。

注意:我尝试使用Session.Database.OpenView插入记录,但由于会话数据库只读属性,我一直在收到更新失败错误。

有人可以为这种情况建议最好的方法吗?

2 个答案:

答案 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(); 
}

有关详细信息,请参阅:

Dynamic Windows Installer UI