2012-02-12 4 views
3

私はintallingアプリケーション&サービスに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に挿入 'ありがとうTEMPORARYイズム')");

しかし、私はフォロー例外を受け取ります: 例外:実行中に関数が失敗しました。データベース:テーブル更新に失敗しました。

答えて

0

インストール時には、一時データをMSIデータベースにのみ挿入できます。このための特別な構文 - INSERT INTO {table} ({column-list}) VALUES ({constant-list}) [TEMPORARY]があります。最後の単語に注意を払う - これはオプションですが、カスタムアクションからデータを挿入しようとすると存在する必要があります。

+0

私はこれを試していただきありがとうございます:session.Database.Execute( "ServiceInstall(Name)values( 'ezm')TEMPORARY")に挿入します。 しかし、私はフォロー例外が発生します。例外:実行中に関数が失敗しました。データベース:テーブル更新に失敗しました。 – user1192369

+0

ServiceInstallテーブルの必須フィールドがすべて指定されていることを確認してください –

関連する問題