InstallAware
Delphi 2007 からインストーラ作成ツールとして InstallAware が同梱されています。今回は InstallAware の Tips です。基本的な InstallAware の使い方は "InstallAware を使って配布モジュールを作成する(CDN)" にあるので、まずそちらを参照して下さい。
インストール
Delphi 2009 のセットアップから InstallAware をインストールすると、"InstallAware 6 CodeGear Special Edition" がインストールされますが、DVD の中(\InstallAware)には "ia-codegear-express-special-edition.exe" というのがあります。こちらは、"InstallAware 7 R2 CodeGear Special Edition" で、Vista のUAC のエレベーション(権限昇格)に対応しています。但し、英語版です。
Delphi XE2 からは "InstallAware 2012 RAD Studio Edition" が付属しています。
Delphi 2007 の場合には、"InstallAware 6 CodeGear Special Edition" をインストールして下さい。
おまけ
InstallAware のインストールの途中で E-Mail を入力してユーザ登録を行うと、特典として綺麗なアイコンのパッケージを貰えます。アイコンパッケージのダウンロード先は登録した E-Mail 宛てにメールで送られてきますので、虚偽のメールアドレスを登録しないようにして下さい。
翻訳
IA6 はGUIが日本語化されていますが、IA6 も IA7、IA2012 も作成するインストーラ用の言語は英語のままです。配布するインストーラを日本語化するためには、
- インストーラの "共有文字列リソース" を日本語化
- インストーラの "アプリケーション固有の文字列リソース" を日本語化
この2つを行わなくてはなりません。一度やれば使い回しが効くものの、"共有文字列リソース" の日本語化リソースは用意してもらいたかったです。何故なら、"Delphi のインストーラが InstallAware を利用しており日本語化もされている" からです。
"共有文字列リソース" の翻訳
面倒なので、Delphi のインストーラから "共有文字列リソース" を抜いてしまいましょう。
- スタートメニューから Delphi 2007 / 2009 / 2010 / XE / XE2 を探す
- "RAD Studio の変更、修正、アンインストール" を右クリックしてプロパティを表示する。
- "ショートカット"タブ から、"ファイルの場所を開く(F)" ボタン を押す。
- "mia.lib" をバイナリエディタにかける。
- "共有文字列リソース" の日本語部分 をテキストエディタにコピー。
- InstallAware のインストール先にある "trans" フォルダに "translations.Japanese" として保存。
"translations.Japanese" は IA6 / IA7 / IA2012 共通で、ANSIコードセットです(つまり、Shift-JIS)。
上記の手順すら面倒な方は、以下のテキストをコピーして、"<InstallAware>\trans\translations.Japanese" として保存して下さい。
この製品のインストールを行うために、Microsoft からコモンコントロールのアップデートを入手してください。
セットアップリソースが見つかりません
セットアップリソースの展開に失敗しました
セットアップデータベースが見つかりません
インストーラの実行時エラー:
バイト
KB
MB
未定義の値を取得しようとしました
未定義の値を設定しようとしました
コピー中:
インストールデータをローカルフォルダにコピーできません
Web Media をダウンロードしています:
Web サイトからインストールデータをダウンロードできません
Web Media を展開中:
Web サイトからダウンロードしたインストールデータ展開することができません
作業を続行するために、オリジナルのセットアップファイルが保存されている場所を指定してください
作業を完了させるためには、オリジナルのセットアップファイルが必要です。ファイルが見つかりません。
セットアップに失敗しました
セットアップスクリプトで実行時エラーが発生しました:
% 完了
バイト受信しました
InstallAware ウィザード
InstallAware は、アプリケーションのインストールに使用する InstallAware ウィザード を準備しています。しばらくお待ちください。
ダウンロードを再試行しますか?
Web サイトからのインストールデータのダウンロードに失敗しました。再試行しますか?
プロキシの情報 (オプション)
サーバ(&S):
ポート(&P):
[いいえ]を選択すると、セットアップは終了します。あとでダウンロードを再開して、セットアップを再開することも可能です。
はい(&Y)
いいえ(&N)
展開を再試行しますか?
ダウンロードしたデータの展開に失敗しました:
新規にファイルをダウンロードします(&D)
ダウンロードしたファイルを再度展開する(&E)
キャンセルを選択すると、セットアップは終了します。既にダウンロードしたデータは保存されます。
&OK
キャンセル(&C)
作業を中止しますか?
ユーザー(&U):
パスワード(&W):
致命的エラー
エラー
警告
メッセージ
ファイルは使用中です
ディスクがいっぱいです
Web サイトからのデータのダウンロードに失敗しました。インターネットに接続していることを再確認してください。
以下の選択肢から選んでください:
ダウンロードを再開する(&R)
新規にダウンロードを行う(&N)
キャンセルを選択するとセットアップは終了します。あとで、ダウンロードを再開して、インストールを続行することも可能です。
リソースの確認中
接続中
リダイレクト中
データ転送の開始
データの転送中
データ転送の完了
コンポーネントのダウンロードを開始
コンポーネントのインストール中
コンポーネントのダウンロードを完了
中断されたダウンロードの再開中
データのリクエスト中
CLASSID が利用可能です
ダウンロードデータが見つかりました
ダウンロード情報を保存しています
同期操作を開始
同期操作を完了
データのアップロードを開始
データのアップロード中
データのアップロードを完了
プロトコル: CLASSID
エンコーディング
ダウンロードデータが見つかりました
インストールロケーションを確認しています
デコード中
データハンドラのロード中
Content disposition attach
ダウンロードデータが処理されました
CLSID のインスタンスが作成可能です
COM サービスが利用できません
ダイレクトバインド
ダウンロードデータが認識できません
プロキシ情報を確認中
受け入れ可能な範囲
過去に実行されたセットアップが完了していません。インストールの前にコンピュータを再起動してください。
インストールする言語の選択
インストールする言語を以下のリストから選択してください
フォルダを作成できません '{0}'
InstallAware ウィザード
テンポラリファイルを削除できません
ファイルを作成できません
内部エラー (不明な圧縮ファイル)
セットアップを開始できません - セットアップファイルが壊れているか、あるいはパスワードが間違っています。このファイルをダウンロードで入手した場合には、ファイルをダウンロードしなおしてください。
セットアップを開始できません - セットアップファイルが壊れているか、あるいはパスワードが間違っています。このファイルをダウンロードで入手した場合には、ファイルをダウンロードしなおしてください。
不明なエラー
設定の読み込みができません
構成に失敗しました
インストーラを展開するためのテンポラリフォルダを作成できません
圧縮されたデータストリームが開けません
アーカイブファイルが見つかりません
ファイルは正しいアーカイブではありません
出力フォルダを作成できません
キャンセルしますか?
InstallAware ウィザード
&OK
キャンセル(&C)
このインストーラはパスワード保護されています。作業を開始するためにパスワードを入力してください(&E):
InstallAware ウィザードはパッケージのコンテンツを確認しています。これには少し時間がかかかります。
Flash ムービーが再生できません
この機能をインストールします(&I)
すべての機能をインストールします(&E)
この機能をインストールしません(&U)
セットアップキャンセル
再試行しますか?
ショートカットを作成できません
旧ファイル日付:
旧ファイルバージョン:
新ファイル日付:
新ファイルバージョン:
上書き
このファイルを上書きしますか?
<不明な日付>
<バージョン情報なし>
|
この "共有文字列リソース" は、Delphi のインストーラで使われているものを改変したものです。
"アプリケーション固有の文字列リソース" の翻訳
"アプリケーション固有の文字列リソース" はアプリケーション毎に翻訳する必要があります。これも面倒なので、Delphi のインストーラから "文字列リソース" を抜いて利用する事にしましょう。
- スタートメニューから Delphi 2007 / 2009 / 2010 / XE / XE2 を探す
- "RAD Studio の変更、修正、アンインストール" を右クリックしてプロパティを表示する。
- "ショートカット" タブ から、"ファイルの場所を開く(F)"ボタン を押す。
- "setup.res" をバイナリエディタにかける。
- "文字列リソース" の日本語部分をテキストエディタにコピー。
この日本語文字列を、アプリケーション用日本語文字列リソース(<エクスポート先>\translations.Japanese) と比較しながら埋めていきます。"InstallAware 簡易翻訳ツール" を使えば、"アプリケーション固有の文字列リソース"翻訳の手間を軽減できます。
インストーラに BDE を含める
BDE をセットアップに含めるには、"BDE マージモジュール" を IAの "マージモジュール(Marge Module)" に含めます。但し、"BDE マージモジュール" は、自分が持つライセンスの "SQL Link" しかコピーしません。つまり、単体では "dBASE / Paradox" しか使えない事になります。詳しくは、"BDE 5.2 ダウンロードサービス" を参考にして下さい。
エリアスはプログラム側で設定するようにすると楽になります。"Inno Setup知識データベース" にある、"エリアスの作成法" を参考にして下さい。
"Setup resource decompression failure" のエラー
エクスポート後に "プロダクト名(Product Name)" を変更してはいけません。また、日本語を使うのもやめましょう。これをやると高確率で "Setup resource decompression failure" のエラーになります。このエラーになったら、構成が何も変更になっていなくてもプロジェクトの作り直し&翻訳のやり直しです(多少楽する方法はあります)。
インストーラで文字が切れる/フォントを変えたい
要は編集したいのですよね?
- インストーラのプロジェクトのあるフォルダへ行く。
- "ファイル名を指定して実行" から "CMD" としてコマンドプロンプトを開く
- "<Delphiのインストールフォルダ>\convert -i -s -t <インストーラのプロジェクトフォルダ>\*.dfm" を実行。
- インストーラのプロジェクトフォルダ にある DFM を Delphi または テキストエディタで編集。
- "<Delphiのインストールフォルダ>\convert -i -s -g <インストーラのプロジェクトフォルダ>\*.dfm" を実行。
InstallAware が吐く DFM は、指定した "テーマ" によって異なります。この DFM がインストーラにリソースとして埋め込まれる訳です。そういう構造なので、この DFM は "バイナリDFM" となっています。DFM を Delphi で直接いじる場合には、Convert.exe でコンバート作業を行う必要はありません。
注意事項
- 可能な限り、"表" や "能" という文字をインストーラ中で使用しないようにしましょう。何故なら、これらの文字はマルチバイト文字で 2バイト目が 0x5C だからです。0x5C は パスデリミタ(\)で、海外製のソフトで問題が起きる原因になっています。InstallAware はこの 0x5C をパスデリミタ以外にも "何かしらのセパレータとして使っている" フシがあります。インストーラのビルド時や、インストーラの実行時にエラーが出たら、まずこの問題を疑ってみましょう。なお、Shift-JIS で 2バイト目が 0x5C になる文字は40文字程あります。
- 翻訳作業はマトモにインストーラが動作するようになってから。
- 翻訳を後で行いたい場合には、"<エクスポート先>\mTranslator.exe" を実行。
- 翻訳をテキストエディタで行いたい場合には、"<エクスポート先>\translations.Japanese" を編集。但し、行数を間違ったり、翻訳してはいけない所まで翻訳しないように
- プロダクト名に日本語を使いたい場合には、"<エクスポート先>\translations.Japanese" をテキストエディタで直接開いて "$Title$" を目的の文字列に全置換した後インポートするといいようです。
- index.htm がどうたらこうたらは、インストーラ実行時用の html を [ユーザーインターフェイス(User Interface) | Cretives] に追加しろという事です。0バイトの index.htm を喰わせてやると真っ白にできます。