スタンダード カスタムアクションの使用

カスタムアクションは、多くの 新しいタイプのリソースを インストールとコンフィギュレーション できるようにします。これらのリソースタイプのそれぞれが、それらを MSI パッケージで インストールできる様にする 1つあるいはより多くの エレメントを持っています。 する必要のある唯一の事は、インストールしたいリソースの為の 適切なエレメントを理解し、 これらのエレメントで要求される アトリビュートをセットする事です。エレメントは、 定義されている WiX extension の為の適切な名前空間で プリフィックスをつける必要があります。 コンパイラーとリンカーが 最終的な MSI に 自動的に 妥当な エラーメッセージ、カスタム アクション レコード、バイナリー レコードを 追加するように、コマンドラインの一部として extension DLL へのフルパスを渡さなければ なりません。

まず、MSI がインストールされた時に ユーザーアカウントを作成する 例を試しましょう。 この機能は WixUtilExtension.dll で定義されていて、<User> エレメントとして ユーザーに晒されています。

<Wix xmlns='http://schemas.microsoft.com/wix/2006/wi' xmlns:util='http://schemas.microsoft.com/wix/UtilExtension' >
    <Product Id='PUT-GUID-HERE' Name='TestUserProduct' Language='1033' Version='0.0.0.0'>
        <Package Id='*' Description='Test User Package' InstallerVersion='200' Compressed='yes' />
            <Directory Id='TARGETDIR' Name='SourceDir'>
                <Component Id='TestUserProductComponent' Guid='PUT-GUID-HERE'>
                    <util:User Id='TEST_USER1' Name='testName1' Password='pa$$$$word'/>
                </Component>
        </Directory>

        <Feature Id='TestUserProductFeature' Title='Test User Product Feature' Level='1'>
            <ComponentRef Id='TestUserProductComponent' />
        </Feature>
    </Product>
</Wix>

これは、マシン上で "testName1" と呼ばれる パスワード "pa$$word" (プリプロセッサーは $$$$ を $$ で置き換えます) を持つ新しいユーザーを作成する シンプルな例です。

WiX オーサリングから MSI をビルドするには:

  1. yourfile.wxs と名付けられたファイルに 上のコードを置く
  2. "PUT-GUID-HERE" アトリビュートを 本物の GUID で置き換える
  3. 'candle.exe yourfile.wxs -ext %WixUtilExtension.dllへのフルパス%' を実行する
  4. 'light.exe yourfile.wixobj -ext %WixUtilExtension.dllへのフルパス% -out yourfile.msi yourfile.wixout' を実行する

さあ、結果としてできた MSI を開くのに Orca を使って、Error table、CustomAction table、 Binary table を見て下さい。ユーザー管理について関連するデータすぺてが MSI に追加されて しまっている事に 気付くでしょう。これは、キーとなる事 2つを終えたから 起こった事です:

  1. <Component> エレメントの下で <User> エレメントを使用した。これは、 MSI パッケージの一部として ユーザーがインストールされるべきで、WiX コンパイラーは カスタムアクションで使用される 適切な MSI テーブルデータを 自動的に追加した、という事を 表しています。
  2. 適切な extension DLL (WixUtilExtension.dll) とリンクした。これはリンカーに、 関連した カスタムアクション、エラーメッセージ、バイナリー テーブル行 すべてを MSI に 自動的に 取り込まさせた。