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

↑ 先頭  |  • 目次  |  « 前へ  |  次へ »  |  ∗ 原文

Table of Contents

1 始めよう

  1. ソフトウェア・パッケージ
  2. 中に入るファイル
  3. 使用に供する
  4. 便利な追加機能
  5. どこにインストールするか
  6. 条件付きインストール
  7. ファイルだけでなく
  8. 削除時の孤児化

2 ユーザー・インタフェイス

  1. 最初のステップ
  2. カスタムの設定
  3. UI の魔法
  4. 英語はわかりますか
  5. チェーンの新しい環
  6. 地域化を考える

3 イベントとアクション

  1. 列に並んで
  2. 追加のアクション
  3. 本に書かれていないこと
  4. コントロールをコントロールせよ
  5. マネージする方法
  6. 後の段階で

4 アップグレードとモジュラー化

  1. 古いのを探す
  2. 自分自身を置き換える
  3. パッチワーク
  4. 断片
  5. 融合するもの

5 Net と .NET

  1. .NET の枠組み
  2. ブートストラップ
  3. インターネットを起動する
  4. ウェブ・ディレクトリ
  5. サービスの提供

6 COM、式の構文、その他

  1. 違う色のコンポーネント
  2. 式の構文
  3. 書式指定文字列
  4. DDE 接続
  5. ディレクトリの作成
  6. 複数メディアのインストーラ
  7. プログラムの追加と削除の項目
  8. 新顔のユーザー
  9. 環境に優しく
  10. XML
  11. COM+ アプリケーション
  12. バージョンごとに

7 SQL

  1. データベースを作成する

8 ユーザー・インタフェイス再び

  1. 一つだけのダイアログ
  2. チューニング・アップ
  3. 相互作用
  4. カスタマイズがいっぱい
  5. これが進捗ですか
  6. よく出来ました
  7. 法律用語
  8. 順番外
  9. 英語はわかりませんか

9 トランスフォーム

  1. インストーラを変形する

10 標準ライブラリ

  1. カスタム・アクションとユーザー・インタフェイス
  2. お静かに願います