1

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

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

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

4

2 回答 2

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

有关更多信息,请参阅:

动态 Windows 安装程序 UI

于 2013-04-16T18:07:41.993 回答
0

MSI 数据库在安装期间是只读的。所以你不能添加永久行。但是,您可以插入临时行。一旦你从View后面得到,Session.Database.OpenView()然后使用对象InsertTemporary()上的方法View来添加临时行。

这就是TempWcaAddTempRecord()名字的由来。:)

于 2013-04-16T15:11:59.560 回答