[英]How can I insert values to msi table
我正在使用 Wix 来安装应用程序和服务,并且我想更改 msi 表(session.database)中的值。
我尝试使用自定义操作来执行此操作,我可以使用 select 语句从表中选择值,但是如果我尝试插入,则设置会失败。
我的代码:
[CustomAction]
public static ActionResult MyCustomAction1(Session session)
{
ServiceController serviceController = new ServiceController(serviceName);
//-----Works fine-----
res=session.Database.ExecuteIntegerQuery("select ServiceType from ServiceInstall where StartType=4");
//----Makes the setup fail
session.Database.Execute("insert into ServiceInstall (ServiceInstall) values ('a')");
return ActionResult.Success;
}
是否可以使用自定义操作插入值?
谢谢
谢谢你我试过这个: session.Database.Execute("insert into ServiceInstall (Name) values ('ezm') TEMPORARY");
但我得到以下异常:异常:执行期间函数失败。 数据库:表更新失败。
您只能在安装时将临时数据插入MSI数据库。 有一个特殊的语法 - INSERT INTO {table} ({column-list}) VALUES ({constant-list}) [TEMPORARY]
。 注意最后一个字 - 虽然它是可选的,但如果你试图从自定义动作插入数据,它必须存在。
@Yan Sklyarenko
非常感谢!!!!!
我想知道为什么我无法执行插入查询并且在官方 wix 文档中找不到任何提示。
我花了几个小时找出原因,才看到您的有用建议。 你怎么知道参数“临时”是必需的?
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.