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 です。