Lesson 1 始めよう

1. ソフトウェア・パッケージ

最初の WiX サンプルは、非常に簡単な空想上のアプリケーションをインストールするものです。 このアプリケーションは、実行ファイルと DLL ライブラリ、そしてユーザー・マニュアルから構成されています。 この三つのファイルが、アプリケーション固有のフォルダにコピーされるものとします。 また、スタート・メニューの通常の場所に二つのショートカットを出現させることにします。 さらに、ユーザーのデスクトップにもアプリケーションを起動するショートカット・アイコンを追加しましょう。

このインストール・パッケージほど単純なものであっても、基礎となっている Windows Installer は非常に多くの機能を提供してくれます。 たとえば、このプログラムも「コントロール・パネル > プログラムの追加と削除」の中に自動的に追加されます。 Windows Installer が私たちのプログラムを確実に追跡して記録しておけるようにするために、私たちは何らかの識別方法を提供しなければなりません。 全てのアプリケーションは人間が読める名前を持っていますが、Windows は私たちのパッケージのあらゆる部分を識別するために、 単なる名前ではなく、もっとユニークな識別子である GUIDを必要とします。 GUID とは、CE26AD1E-00D5-4E03-8CBE-6DA5C23AA833 のような、あの長ったらしい16進の数値です。 GUID は無料で、いつでも、欲しいだけ生成することが出来ます。 生成された GUID は一意であることが保証されていて、他の誰かが別のコンピュータで GUID を取得しても、あなたが取得する GUID と衝突することは決してありません。 GUID を取得するユーティリティーは数多くあります。 例えば、この単純な C プログラム は、どんな C/C++ コンパイラでもコンパイルすることが出来ます。 別のプログラミング言語を使う場合でも、必要な Win32 関数 (CoCreateGuid と StringFromCLSID) を呼び出すようにすれば、GUID を生成出来ます。

もう一つの方法として、多くのプログラマ用エディタや統合開発環境では、 要求に応じて新しく生成した GUID をソース・コードに挿入する機能を提供していますので、それを利用することも出来ます。 使用するツールが小文字の16進数文字を生成する場合は、WiX に渡す前に大文字に変換して下さい。

このチュートリアルの GUID は、ダウンロード出来るサンプルにあるものも含めて、すべて不正なものになっています — 最初のセクションが全て YOURGUID に変更されているのです。 このことは、サンプルはそのままではビルドすることが出来ない、あなた自身が生成した GUID を最初に提供しなければならない、 ということを意味しています (ビルドを試みると、“fatal error CNDL0027: The ‘Id’ attribute has an invalid value according to its data type.” というエラーになります)。 これはちょっとした不便ですが、万が一の危険を避けるためには必要な措置です。 さもなくば、複数の人が、サンプルのどれかをそのまま使用し、GUID を変更するのを忘れて、衝突の危険を作って野に放つかも知れません。 もう一つ注意が必要なのは、GUID の全体を置き換える必要があるということ、すなわち、別の GUID から取った部分を混ぜ合せてはいけないということです (換言すると、YOURGUID だけを置き換えるな、全部の数値を置き換えろ、ということです)。 GUID は、生成されたままで使用される場合にだけ、一意性が保証されます。

始めに、二つの GUID が必要です。一つは製品(Product)のため、もう一つはインストーラ・パッケージ(Package)のためです。 実務上のプロジェクトでは、UpgradeCode の GUID も必ず必要になるので、実際には三つです。 他の二つは、おそらく後で参照する必要が生じますので、ファイルに保持しておかなければなりませんが、 Package の GUIDは、パッケージを生成するたびに違うものである必要があります。 事を簡単にし、新しい GUID を発行するのを忘れないようにするために、アスタリスクをタイプして WiX に GUID を自動生成させることが出来ます — ただし、これはパッケージの GUID だけに当てはまることを忘れないで下さい。 その他の全ての GUID は、一意性を保たなければならず、将来にわたって記録されなければなりません。 これらの GUID と製品に関するその他のテキスト情報が SampleFirst.wxs の一番最初の部分に来ます。

<?xml version='1.0' encoding='windows-1252'?>
<Wix xmlns='http://schemas.microsoft.com/wix/2006/wi'>

  <Product Name='Foobar 1.0'
      Id='YOURGUID-86C7-4D14-AEC0-86416A69ABDE'
      UpgradeCode='YOURGUID-7349-453F-94F6-BCB5110BA4FD'
      Language='1033' Codepage='1252'
      Version='1.0.0' Manufacturer='Acme Ltd.'>

    <Package Id='*' Keywords='Installer'
        Description="Acme's Foobar 1.0 Installer"
        Comments='Foobar is a registered trademark of Acme Ltd.'
        Manufacturer='Acme Ltd.' InstallerVersion='100'
        Languages='1033' Compressed='yes' SummaryCodepage='1252' />

製品の名前と説明は、当然、あなたの意向によって決ります。 Version 属性は、標準的な major.minor.build 形式に従って下さい。 Windows Installer は、リビジョン(revision)を区別する別の方法を提供しているため、最後に来る第4のフィールド、.revision を無視します。

ご存じのように、XML は形式については非常に自由です。適切だと思われるなら、段落下げや空行を使って下さい。 属性の値はすべて引用符で囲みますが、単一引用符か二重引用符かは自由に選ぶことが出来ます。 この規則を使うと、引用符を含む文字列値を書くことが簡単に出来ます(上記の Description を参照して下さい)。 その文字列を囲むのに、もう一方の引用符を使うようにだけ気を付ければ良いのです。

XML を作成するのには、UTF-8 も ANSI も使うことが出来ます。 普通の ANSI 文字または標準 ANSI 文字セットのアクセント記号付き文字だけを使う予定であれば、この例に示されているように windows-1252 の設定で十分です。 ユーザー・インタフェイスにおいてもっと多数の文字または違う文字セットを使う必要がある場合は、UTF-8 に変更して、 適切な言語とコードページの数値を使って下さい。 例えば、日本語であれば、次のように変更します。

<?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' />

訳註:これ以降、原文のソフト名 “Foobar” と会社名 “Acme Ltd.” は、慣例に従って、”ほげ(Hoge)” および “ぴよ(Piyo)ソフト” と訳出します。

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

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. お静かに願います