How To: インストール中に レジストリー エントリーを書く

インストール中に レジストリー エントリーを書く事は、インストール中に ファイルを書くのと 同様です。書き入れたいレジストリー構造を記述し、作成したいレジストリー値を指定し、 feature リストにコンポーネントを追加します。

Step 1: レジストリー レイアウトと値を 記述する

以下の例は、どのようにレジストリー エントリーを2つ、1つは特定の値に 他方は Default Value に、書くか 説明しています。

<DirectoryRef Id="TARGETDIR">
    <Component Id="RegistryEntries" Guid="PUT-GUID-HERE">
        <RegistryKey Root="HKCU"
		     Key="Software\Microsoft\MyApplicationName"
		     Action="createAndRemoveOnUninstall">
            <RegistryValue Type="integer" Name="SomeIntegerValue" Value="1" KeyPath="yes"/>
            <RegistryValue Type="string" Value="Default Value"/>
        </RegistryKey>
    </Component>
</DirectoryRef>

スニペットは、Windows Installer により定義されている TARGETDIR ( TARGETDIR ) フォルダーを指す DirectoryRef で始まっています。これは、レジストリー エントリーは ターゲットのユーザー マシンにインストールされなくてはならないと 効果的に表しています。 DirectoryRef の下は、インストールされるレジストリー エントリー群を成す Component エレメントです。コンポーネントは、後の WiX プロジェクトでの参照用 id と ユニーク GUID が 与えられています。

レジストリー エントリーは、レジストリー中で値がどこへ行くべきかを指定する為に 最初に <RegistryKey> エレメントを使用する事によって 作成されています。 この例では、キーは HKEY_CURRENT_USER\Software\Microsoft\MyApplicationName の下です。オプションの Action アトリビュートは Windows Installer に、キーは インストールで (もし必要なら)作成され、キーと そのサブ バリューは アンインストールで 削除されるべきであると、 知らせる為に使われています。

RegistryKey エレメントの下で、 <RegistryValue> エレメントが 実際のレジストリー値を作成する為に 使われています。最初は SomeIntegerValue 値で、これは整数型のもので 1の値を持っています。 コンポーネントの為の KeyPath として マークも付けられています。これは、このコンポーネントが マシンに インストールされているかどうかを 決定する為に Windows Installer によって使われています。2番目の RegistryValue エレメントは、Default Value の文字列値に キーの為の default value をセットしています。

id アトリビュートは、RegistryKey と RegistryValue エレメントで 省略されています。なぜなら、これらの アイテムは WiX プロジェクト ファイルの他の所で 参照される必要が無いからです。WiX は、レジストリー キー、値、親のコンポーネント名に基づいて、エレメントの為の id を 自動生成します。

Step 2: Windows Installer に エントリーをインストールする事を 知らせる

インストーラーにパッケージする為 ディレクトリー構造の定義と レジストリー エントリーの一覧 作成の後、 最後の段階は、Windows Installer に レジストリー エントリーを実際にインストールする事を 知らせる事です。 <Feature> エレメントが、これをなす為に使われています。以下のスニペットは、RegistryEntries コンポーネントへの参照を 追加します。親の Feature エレメントの中に 挿入する必要があります。

<ComponentRef Id="RegistryEntries" />

<ComponentRef> エレメントは、Step 1 で作成されたコンポーネントを Id アトリビュート経由で参照する為に 使用されています。