繁体   English   中英

如何将值插入到 msi 表中

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM