Как я могу вставить значения в таблицу MSI - PullRequest
3 голосов
/ 12 февраля 2012

Я использую 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 голосов
/ 12 февраля 2012

Вы можете вставить временные данные в базу данных MSI только во время установки. Для этого есть специальный синтаксис - INSERT INTO {table} ({column-list}) VALUES ({constant-list}) [TEMPORARY]. Обратите внимание на последнее слово - хотя оно не является обязательным, оно ДОЛЖНО присутствовать, если вы пытаетесь вставить данные из пользовательского действия.

...