2012-02-12 4 views
3

Я использую Wix для использования приложения &, и я хочу изменить значения в таблице msi (session.database).Как вставить значения в таблицу msi

Я попытался сделать это с помощью специального действия, я могу выбрать значения из таблицы с помощью оператора 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') ВРЕМЕННОЕ");

Но я получаю следующее исключение: Исключение: функция не выполнена во время выполнения. База данных: Таблица (ы) Обновление не выполнено.

ответ

0

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

+0

Спасибо. Я пробовал это: session.Database.Execute ("insert into valuesInstall (Name) values ​​('ezm') TEMPORARY"); Но я получаю следующее исключение: Исключение: функция не выполнена во время выполнения. База данных: Таблица (ы) Обновление не выполнено. – user1192369

+0

Убедитесь, что вы указали все обязательные поля таблицы ServiceInstall –

Смежные вопросы