WiX チュートリアル (日本語訳)

Lesson 7 SQL


7.1 データベースを作成する

SQL データベースを作成するためには、最初に適切な資格を持ったユーザーが必要です。そのユーザーの名前とパスワードはプロパティに保存されますので、何らかの通常の UI 要素やカスタム・アクションを使って、設定することが出来ます。これは、新しいユーザー・アカウントを作成するために使ったのと同じ User タグであることに注意して下さい。ただし、そのときは、Component タグの中で使われていました。どのコンポーネントにも属さないときは、User タグはユーザーを作成せず、他の操作が必要とする資格を定義するだけです。ここで使うタグも、SQL 関連の機能も、拡張モジュールの中にありますので、ソース・ファイルの開始タグの中で、それらの拡張モジュールに言及しなければなりません。

<Wix xmlns='http://schemas.microsoft.com/wix/2006/wi'
     xmlns:util='http://schemas.microsoft.com/wix/UtilExtension'
     xmlns:sql='http://schemas.microsoft.com/wix/SqlExtension'>

更に、それらのタグは独自のネームスペースに属していますので、使用するときには修飾を加えなければなりません。

<util:User Id='SQLUser' Name='[SQLUSER]' Password='[SQLPASSWORD]' />

データベースの作成そのものは、いつものように、コンポーネントの中に入ります。SqlDatabase は前の User の宣言を参照し、データベース名(サーバーとインスタンス)を定義します。Server を指定しない場合は、ターゲット・マシンで走っている SQL サーバーにデータベースをインストールすることになります。その他の属性は、さまざまに異なる状況で、どのように進むべきかを指定します。ConfirmOverwrite は、データベースが既に存在する場合にどうするかを決定し、CreateOnInstall, CreateOnUninstall, DropOnInstall, DropOnUninstall の属性はインストールおよびアンインストールの際に要求される振る舞いを指図します。

入れ子にされた SqlScript タグは、作成されたばかりの空のデータベースに対して何をするべきかを決定します。私たちは、ここで、独立したファイルに入っている SQL スクリプトを、妥当なものなら何でも、実行することが出来ます。BinaryKey 属性が .sql ファイルへのリンクを提供します。その他の属性は、エラーが発生したときの振る舞いを指定したり(ContinueOnError)、スクリプトを実行する時を指定したりします(ExecuteOnInstall, ExecuteOnUninstall, RollbackOnInstall, RollbackOnUninstall)。実行されるスクリプトが複数有る場合は、Sequence 属性を使って、実行の順序を指定する事が出来ます。

<Component Id='SqlComponent' Guid='YOURGUID-D8C7-4102-BA84-9702188FA316'>
  <sql:SqlDatabase Id='SqlDatabase' Database='Foobar' User='SQLUser'
                   Server='[SQLSERVER]' CreateOnInstall='yes' DropOnUninstall='yes'
                   ContinueOnError='yes'>
    <sql:SqlScript Id='CreateTable' BinaryKey='CreateTable' ExecuteOnInstall='yes' />
  </sql:SqlDatabase>
</Component>

残っているのは、.sql ファイルを含めることだけです。

<Binary Id='CreateTable' SourceFile='CreateTable.sql' />

参照する .sql ファイルは、データベース・テーブルを作成するためのよくある SQL コマンドを記載したものです。

CREATE TABLE Test (Value1 CHAR(50), Value2 INTEGER)
CREATE INDEX TestIndex ON Test (Value1)

インストーラ・パッケージをビルドする時は、適切な WiX モジュールとリンクしなければなりません。

candle.exe -ext WixUtilExtension -ext WixSqlExtension SampleSQL.wxs
light.exe -ext WixUtilExtension -ext WixSqlExtension SampleSQL.wixobj

完全な SampleSQL をダウンロードすることが出来ます。

† 訳註:SampleSQL の日本語版は Sample-7-1-SQL.zip です。

Copyright © 2004-2012, Gábor DEÁK JAHN, Tramontána
何よりもコメントと寄稿を歓迎します。
日本語翻訳 Copyright © 2010, 2013, Nobuo Kihara, softark
読みやすくて正確な翻訳を目指しましたが、解釈の誤りと技術的な間違いが含まれていないという保証は出来ません。間違いの指摘や修正案の提示を歓迎します。github のリポジトリ ( https://github.com/softark/wix-j ) をご利用下さい。