如何将值插入msi表

时间:2012-02-12 12:24:06

标签: c# wix windows-installer custom-action

我正在使用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”);

但我得到了以下例外情况: 例外:执行期间功能失败。数据库:表更新失败。

1 个答案:

答案 0 :(得分:0)

您只能在安装时将临时数据插入MSI数据库。这有一个特殊的语法 - INSERT INTO {table} ({column-list}) VALUES ({constant-list}) [TEMPORARY]。注意最后一个字 - 尽管它是可选的,但如果你试图从自定义动作中插入数据,它必须存在。