我正在使用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(“插入ServiceInstall(Name)值('ezm')TEMPORARY”);
但我得到了以下例外情况: 例外:执行期间功能失败。数据库:表更新失败。
答案 0 :(得分:0)
您只能在安装时将临时数据插入MSI数据库。这有一个特殊的语法 - INSERT INTO {table} ({column-list}) VALUES ({constant-list}) [TEMPORARY]
。注意最后一个字 - 尽管它是可选的,但如果你试图从自定义动作中插入数据,它必须存在。