我正在尝试使用Wix DTF自定义操作将MSI运行时会话值写入注册表。这是我想通过在数据库的“注册表”中添加临时记录来实现的。因为c++有一个WcaAddTempRecord方法来实现这一点,所以我真的想知道在DTF中是否有任何等效的方法。
注意:我尝试使用Session.Database.OpenView插入记录,但由于会话数据库的只读属性,我一直收到更新失败的错误。
对于这种情况,有人能建议一下最好的方法吗?
发布于 2013-04-16 23:12:00
MSI数据库在安装过程中是只读的。因此您不能添加永久行。但是,您可以插入临时行。从Session.Database.OpenView()获取View后,在View对象上使用InsertTemporary()方法添加临时行。
这就是WcaAddTempRecord()在其名称中获得Temp的方式。:)
发布于 2013-04-17 02:07:42
这是我的“转到”助手方法:
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
https://stackoverflow.com/questions/16039657
复制相似问题