Lesson 4 アップグレードとモジュラー化
5. 融合するもの
フラグメントを使用すると、大きなパッケージを管理可能なソース・コードの固まりに分割することが出来て、 開発者の共同作業やコードの再利用が可能になります。 従って、フラグメントは、WiX ソース・コードが共有可能であり、また、実際に共有されるであろう社内開発に最も適していると言えます。 しかし、第三者に完全なインストーラ・パッケージを提供することが出来る、もっと強力なもう一つのメカニズムが存在します。 すなわち、マージ・モジュールです。 例えば、あなたの製品 A が他のベンダーの製品 B に依存しているとしましょう。 彼らの製品をインストールするために作られたマージ・モジュールを使えば、彼らの製品をあなたの製品の一部として、 同時に二つをインストールすることが出来るようになります。
マージ・モジュールを記述する方法は、今までやってきたスタンドアロンのソース・ファイルの場合と非常によく似ています。 ただし、Product ではなく、Module タグを定義します。 また、これまでのパッケージとは違って、一意の GUID は、私たち自身が定義しなければなりません。
<?xml version='1.0' encoding='utf-8'?>
<Wix xmlns="http://schemas.microsoft.com/wix/2006/wi">
<Module Id="File1" Language="1041" Codepage="932" Version="1.2.3">
<Package Id="YOURGUID-8DEE-4410-990A-1802896C4209"
InstallerVersion="100" Languages="1041"
Manufacturer="ぴよソフト" SummaryCodepage="932"
AdminImage="no" />
<Directory Id='TARGETDIR' Name='SourceDir'>
<Directory Id='ProgramFilesFolder' Name='PFiles'>
<Directory Id='Piyo' Name='Piyo'>
<Directory Id='INSTALLDIR' Name='Hoge 1.0'>
<Component Id="File1"
Guid="YOURGUID-CF0E-40AB-ACC5-0E9A5F112628">
<File Id="File1.txt" Name="File1.txt"
Source="File1.txt" KeyPath='yes' />
</Component>
</Directory>
</Directory>
</Directory>
</Directory>
</Module>
</Wix>
サンプルでは、第二のマージ・モジュールも使います。 ソース・ファイルは前のものとほとんど同じですが、次の点で違っています。 すなわち、配置すべきファイルとして違うファイルを参照し、 この第二のモジュールが第一のモジュールに依存していることを示すために Dependensy タグを含めます。 この依存関係を示すために、Module ID 識別子に Package GUID を追加したものを使います — Package GUID は、元のハイフンをアンダースコアで置き換えたものにしなければいけません。
<Module Id="File2" Language="1041" Codepage="932" Version="1.2.3">
...
<File Id="File2.txt" Name="File2.txt"
Source="File2.txt" KeyPath='yes' />
...
<Dependency
RequiredId="File1.YOURGUID_8DEE_4410_990A_1802896C4209"
RequiredLanguage="1041" RequiredVersion="1.2.3" />
</Module>
結合されたインストーラ・パッケージを作るために、通常のスタンドアロンの WiX ソース・ファイルを書きます。
<?xml version='1.0' encoding='utf-8'?>
<Wix xmlns="http://schemas.microsoft.com/wix/2006/wi">
<Product Name='ほげ 1.0'
Id='YOURGUID-86C7-4D14-AEC0-86416A69ABDE'
UpgradeCode='YOURGUID-7349-453F-94F6-BCB5110BA4FD'
Language='1041' Codepage='932'
Version='1.0.0' Manufacturer='ぴよソフト'>
<Package Id='*' Keywords='インストーラ'
Description="ぴよソフト's ほげ 1.0 インストーラ"
Comments='ほげはぴよソフトの登録商標です。'
Manufacturer='ぴよソフト' InstallerVersion='100'
Languages='1041' Compressed='yes'
SummaryCodepage='932' />
<Media Id="1" Cabinet="product.cab" EmbedCab="yes" />
<Directory Id='TARGETDIR' Name='SourceDir'>
<Directory Id='ProgramFilesFolder' Name='PFiles'>
<Directory Id='Piyo' Name='Piyo'>
<Directory Id='INSTALLDIR' Name='Hoge 1.0'>
通常のコンポーネントの代りにマージ・モジュールを参照します。SourceFile は .msm
ファイルを指し示します。
<Merge Id="file1" Language="1041"
SourceFile="Module1.msm" DiskId="1" />
<Merge Id="file2" Language="1041"
SourceFile="Module2.msm" DiskId="1" />
</Directory>
</Directory>
</Directory>
</Directory>
<Feature Id="Msm" Title="Msm" Level="1">
<MergeRef Id="file1" />
<MergeRef Id="file2" />
</Feature>
</Product>
</Wix>
完全な SampleMergeModule をダウンロードすることが出来ます。マージ・モジュールは、個別にビルドする必要があります。
訳註:SampleMergeModulet の日本語版は Sample-4-5-MergeModule.zip です。
candle.exe Module1.wxs
light.exe Module1.wixobj
candle.exe Module2.wxs
light.exe Module2.wixobj
candle.exe SampleMerge.wxs
light.exe SampleMerge.wixobj