2011年8月12日金曜日

Apache AntのインストーラーをApache Antでビルドする (その4)

特に急ぐこともなく暇を見つけて取り組んできたApache Antのインストーラー作りだが、諸事情により少しペースを上げることにした。Mac OS X環境へのインストール周りをもっと詰めたかったのだが、ひとまず諦めて先に下記の4項目を片付けておく。

  1. インストールするコンポーネントを選べるようにする
  2. インストール先を指定できるようにする
  3. インストーラーのルックアンドフィールをカスタマイズする
  4. EULAを確認できるようにする

インストールするコンポーネントを選べるようにする

バイナリディストリビューションには5個のフォルダといくつかのファイルとが含まれている。このうち、Apache Antの実行に必要なのはbinフォルダとlibフォルダだけ[1]。そこで、必要なものだけを選んでインストールできるよう、PacksPanelを追加する。

パックの名前および説明は、Installing Antのディレクトリレイアウト図に倣った。なお、パック名を変える際は、それを参照しているレジストリ定義ファイル (registry-spec.xml) の書き換えも忘れずに。

詳細は下記を参照。

インストール先を指定できるようにする

有無を言わさず/ApplicationsフォルダやC:\Program Filesフォルダなどにインストールしてしまうのは、シンプルでわかりやすい反面、困ったことにも (例: Cドライブに余裕がない、パスに空白文字が含まれるのは……、など)。ここでは、シンプルさよりも運用時の柔軟性を優先し、DefaultTargetPanelをTargetPanelに替えることにする。

詳細は下記を参照。

インストーラーのルックアンドフィールをカスタマイズする

Apache Antにはロゴがある。せっかくロゴがあるのだから、これを使ってインストーラーのルックアンドフィールをカスタマイズする。併せてインストーラーのタイトルもそれらしくいじってみる。

詳細は私的リポジトリ (r21) を参照。

EULAを確認できるようにする

世のインストーラーに倣って、インストール時にEULAを表示/確認できるようにする。なお、追加するパネルはLicensePanelではなくLicencePanel[2]

一つだけ残念なのは、EULAの一部の文字が化けてしまうこと (W3C®W3Cツョ)。IzPackのBTSではこの不具合はIzPack 4.3.4で修正されたとなっている[3]が、手元の環境 (IzPack 4.3.4) では不具合が再現してしまう。

というわけで、日本語環境 (非ISO-8859-1環境?) では下記のどちらかの対策が必要な模様。

  1. インストール定義時: LICENSEファイルのエンコード形式を明示する

    <res id="LicencePanel.licence"
      src="LICENSE"
      encoding="ISO-8859-1"/>

    インストーラー実行時: システムプロパティfile.encodingに値UTF-8を指定して実行する

    java -Dfile.encoding=UTF-8 -jar installer.jar
  2. インストール定義時: LICENSEファイルのエンコード形式を明示しない

    <res id="LicencePanel.licence"
      src="LICENSE"/>

    インストーラー実行時: システムプロパティfile.encodingに値ISO-8859-1を指定して実行する

    java -Dfile.encoding=ISO-8859-1 -jar installer.jar

詳細は私的リポジトリ (r23) を参照。