Unicode 版 Delphi (2009 以降) に最新版の Indy10 をインストールする
序論
Indy はバグが多く、最新版でのみバグが修正されている事が多いです。ところがどっこい、Indy はアップデータの形では提供されず、自前でインストールしなくてはなりません。これが面倒。とにかく面倒。やり方を間違うとインストールができなかったりします。
バグ報告をしようとすると、こっちの前提は製品版ベースですが、あちらさんはリリースベースなのだそうですよ。こちとらナイトリービルドを追いかけられる程ヒマじゃねーよ。それに Stable は未だに Indy 9 じゃねーか。大体、「最新版インストールせれ」と言いながら、用意されている FullD12.bat がマトモに動作しないってどういう事よ?
...気を取り直して。そんな訳で、最新版の導入が必須らしいです。唯一の救いは Indy 10 が Delphi 5 から対応している事です。他にも Kylix や FreePascal に対応しています。
既存の環境のバックアップ
まず、バックアップフォルダを作成します。"C:\INDY_BACKUP" 等のフォルダを作成し、ここに
という3つのフォルダを作成しておきます。
次に Delphi を起動します。
Delphi 2009 の場合
"%ProgramFiles%\CodeGear\RAD Studio\6.0\bin\bds.exe" /pDelphi /ns /np
|
Delphi 2010 の場合
"%ProgramFiles%\Embarcadero\RAD Studio\7.0\bin\bds.exe" /pDelphi /ns /np
|
Delphi XE の場合
"%ProgramFiles%\Embarcadero\RAD Studio\8.0\bin\bds.exe" /pDelphi /ns /np
|
Delphi XE2 の場合
"%ProgramFiles%\Embarcadero\RAD Studio\9.0\bin\bds.exe" /pDelphi /ns /np
|
Delphi が起動したら [コンポーネント | パッケージのインストール] で
Delphi 2009 の場合
- Indy 10 Core Design Time
- Indy 10 Protocols Design Time
Delphi 2010 / XE / XE2 の場合
- Indy 10 コア設計時
- Indy 10 プロトコル設計時
という2つのパッケージがあるので削除します。
削除が終わったら、[OK]ボタンを押し、Delphi を終了させます。
Delphi の "$(BDS)\bin" フォルダに移動し、ここにある "Indy" と名の付くファイルをすべてバックアップフォルダの "bin" へ移動します。具体的には以下のファイル群になります。
Delphi 2009 の場合
- dclindy120.bpl
- dclindy120.jdbg
- dclIndyCore120.bpl
- dclIndyProtocols120.bpl
- indy120.bpl
- indy120.jdbg
- IndyCore120.bpl
- IndyProtocols120.bpl
- IndySystem120.bpl
Delphi 2010 の場合
- dclIndyCore140.bpl
- dclIndyCore140.de
- dclIndyCore140.fr
- dclIndyCore140.ja
- dclIndyProtocols140.bpl
- dclIndyProtocols140.de
- dclIndyProtocols140.fr
- dclIndyProtocols140.ja
- indy140.bpl
- IndyCore140.bpl
- IndyProtocols140.bpl
- IndySystem140.bpl
Delphi XE の場合
- dclIndyCore150.bpl
- dclIndyCore150.de
- dclIndyCore150.fr
- dclIndyCore150.ja
- dclIndyProtocols150.bpl
- dclIndyProtocols150.de
- dclIndyProtocols150.fr
- dclIndyProtocols150.ja
- indy150.bpl
- IndyCore150.bpl
- IndyProtocols150.bpl
- IndySystem150.bpl
Delphi XE2 の場合
- dclIndyCore160.bpl
- dclIndyCore160.de
- dclIndyCore160.fr
- dclIndyCore160.ja
- dclIndyProtocols160.bpl
- dclIndyProtocols160.de
- dclIndyProtocols160.fr
- dclIndyProtocols160.ja
- indy160.bpl
- IndyCore160.bpl
- IndyProtocols160.bpl
- IndySystem160.bpl
同じくDelphi の "$(BDS)\lib" フォルダに移動し、ここにある "Indy10" フォルダごとバックアップフォルダの "lib" へ移動します。
同じくDelphi の "$(BDS)\source" フォルダに移動し、ここにある "Indy" フォルダ (XE は "Indy10") ごとバックアップフォルダの "source" へ移動します。
"$(BDS)\Projects\Bpl" に Indy 関係のファイルがあれば、こちらはもれなく削除して下さい。
移動してなくなった下記2つのフォルダを生成しておきます。
- "$(BDS)\lib\Indy10"
- "$(BDS)\source\Indy\Indy10" (2009 / 2010)
- "$(BDS)\source\Indy10" (XE / XE2)
これで既存環境のバックアップが完了しました。
Indy 10 のダウンロード
Indy 10 のダウンロードは GitHub から行います。以前の SVN サーバーは使えなくなった模様です。
アーカイブの解凍と配置
アーカイブを適当な場所に解凍したら、"<解凍先>\Indy10_xxxx\Lib" に移動します。
ここにあるフォルダの内、
を、"$(BDS)\source\Indy\Indy10" へコピーします (XE / XE2 の場合は "$(BDS)\source\Indy10")。
コンパイルとインストール
まず、以下のファイルをコンパイル(再構築)します。
Delphi 2009 の場合
- "$(BDS)\source\Indy\Indy10\System\IndySystem120.dpk"
- "$(BDS)\source\Indy\Indy10\Core\IndyCore120.dpk"
- "$(BDS)\source\Indy\Indy10\Protocols\IndyProtocols120.dpk"
Delphi 2010 の場合
- "$(BDS)\source\Indy\Indy10\System\IndySystem140.dpk"
- "$(BDS)\source\Indy\Indy10\Core\IndyCore140.dpk"
- "$(BDS)\source\Indy\Indy10\Protocols\IndyProtocols140.dpk"
Delphi XE の場合
- "$(BDS)\source\Indy10\System\IndySystem150.dpk"
- "$(BDS)\source\Indy10\Core\IndyCore150.dpk"
- "$(BDS)\source\Indy10\Protocols\IndyProtocols150.dpk"
Delphi XE / XE2 の場合
- "$(BDS)\source\Indy10\System\IndySystem160.dpk"
- "$(BDS)\source\Indy10\Core\IndyCore160.dpk"
- "$(BDS)\source\Indy10\Protocols\IndyProtocols160.dpk"
コマンドプロンプトから実行すると楽でしょう。
Delphi 2009 の場合
"%ProgramFiles%\CodeGear\RAD Studio\6.0\bin\bds.exe" -pDelphi "%ProgramFiles%\CodeGear\RAD Studio\6.0\source\Indy\Indy10\System\IndySystem120.dpk"
|
"%ProgramFiles%\CodeGear\RAD Studio\6.0\bin\bds.exe" -pDelphi "%ProgramFiles%\CodeGear\RAD Studio\6.0\source\Indy\Indy10\Core\IndyCore120.dpk"
|
"%ProgramFiles%\CodeGear\RAD Studio\6.0\bin\bds.exe" -pDelphi "%ProgramFiles%\CodeGear\RAD Studio\6.0\source\Indy\Indy10\Protocols\IndyProtocols120.dpk"
|
Delphi 2010 の場合
"%ProgramFiles%\Embarcadero\RAD Studio\7.0\bin\bds.exe" -pDelphi "%ProgramFiles%\Embarcadero\RAD Studio\7.0\source\Indy\Indy10\System\IndySystem140.dpk"
|
"%ProgramFiles%\Embarcadero\RAD Studio\7.0\bin\bds.exe" -pDelphi "%ProgramFiles%\Embarcadero\RAD Studio\7.0\source\Indy\Indy10\Core\IndyCore140.dpk"
|
"%ProgramFiles%\Embarcadero\RAD Studio\7.0\bin\bds.exe" -pDelphi "%ProgramFiles%\Embarcadero\RAD Studio\7.0\source\Indy\Indy10\Protocols\IndyProtocols140.dpk"
|
Delphi XE の場合
"%ProgramFiles%\Embarcadero\RAD Studio\8.0\bin\bds.exe" -pDelphi "%ProgramFiles%\Embarcadero\RAD Studio\8.0\source\Indy10\System\IndySystem150.dpk"
|
"%ProgramFiles%\Embarcadero\RAD Studio\8.0\bin\bds.exe" -pDelphi "%ProgramFiles%\Embarcadero\RAD Studio\8.0\source\Indy10\Core\IndyCore150.dpk"
|
"%ProgramFiles%\Embarcadero\RAD Studio\8.0\bin\bds.exe" -pDelphi "%ProgramFiles%\Embarcadero\RAD Studio\8.0\source\Indy10\Protocols\IndyProtocols150.dpk"
|
Delphi XE2 の場合
"%ProgramFiles%\Embarcadero\RAD Studio\9.0\bin\bds.exe" -pDelphi "%ProgramFiles%\Embarcadero\RAD Studio\9.0\source\Indy10\System\IndySystem160.dpk"
|
"%ProgramFiles%\Embarcadero\RAD Studio\9.0\bin\bds.exe" -pDelphi "%ProgramFiles%\Embarcadero\RAD Studio\9.0\source\Indy10\Core\IndyCore160.dpk"
|
"%ProgramFiles%\Embarcadero\RAD Studio\9.0\bin\bds.exe" -pDelphi "%ProgramFiles%\Embarcadero\RAD Studio\9.0\source\Indy10\Protocols\IndyProtocols160.dpk"
|
注意ですが、各パッケージプロジェクトを開いたら、コンパイル(再構築)の前にプロジェクトオプションを変更しなくてはなりません。
- DCP出力ディレクトリ
$(BDS)\lib\Indy10
- パッケージの出力ディレクトリ
$(BDS)\bin
- ユニット出力ディレクトリ
$(BDS)\lib\Indy10
最後に、以下のファイルをコンパイル(再構築)し、インストールします。
Delphi 2009 の場合
- "$(BDS)\source\Indy\Indy10\Core\dclIndyCore120.dpk"
- "$(BDS)\source\Indy\Indy10\Protocols\dclIndyProtocols120.dpk"
Delphi 2010 の場合
- "$(BDS)\source\Indy\Indy10\Core\dclIndyCore140.dpk"
- "$(BDS)\source\Indy\Indy10\Protocols\dclIndyProtocols140.dpk"
Delphi XE の場合
- "$(BDS)\source\Indy10\Core\dclIndyCore150.dpk"
- "$(BDS)\source\Indy10\Protocols\dclIndyProtocols150.dpk"
Delphi XE2 の場合
- "$(BDS)\source\Indy10\Core\dclIndyCore160.dpk"
- "$(BDS)\source\Indy10\Protocols\dclIndyProtocols160.dpk"
コマンドプロンプトから実行すると楽でしょう。
Delphi 2009 の場合
"%ProgramFiles%\CodeGear\RAD Studio\6.0\bin\bds.exe" -pDelphi "%ProgramFiles%\CodeGear\RAD Studio\6.0\source\Indy\Indy10\Core\dclIndyCore120.dpk"
|
"%ProgramFiles%\CodeGear\RAD Studio\6.0\bin\bds.exe" -pDelphi "%ProgramFiles%\CodeGear\RAD Studio\6.0\source\Indy\Indy10\Protocols\dclIndyProtocols120.dpk"
|
Delphi 2010 の場合
"%ProgramFiles%\Embarcadero\RAD Studio\7.0\bin\bds.exe" -pDelphi "%ProgramFiles%\Embarcadero\RAD Studio\7.0\source\Indy\Indy10\Core\dclIndyCore140.dpk"
|
"%ProgramFiles%\Embarcadero\RAD Studio\7.0\bin\bds.exe" -pDelphi "%ProgramFiles%\Embarcadero\RAD Studio\7.0\source\Indy\Indy10\Protocols\dclIndyProtocols140.dpk"
|
Delphi XE の場合
"%ProgramFiles%\Embarcadero\RAD Studio\8.0\bin\bds.exe" -pDelphi "%ProgramFiles%\Embarcadero\RAD Studio\8.0\source\Indy10\Core\dclIndyCore150.dpk"
|
"%ProgramFiles%\Embarcadero\RAD Studio\8.0\bin\bds.exe" -pDelphi "%ProgramFiles%\Embarcadero\RAD Studio\8.0\source\Indy10\Protocols\dclIndyProtocols150.dpk"
|
Delphi XE2 の場合
"%ProgramFiles%\Embarcadero\RAD Studio\9.0\bin\bds.exe" -pDelphi "%ProgramFiles%\Embarcadero\RAD Studio\9.0\source\Indy10\Core\dclIndyCore160.dpk"
|
"%ProgramFiles%\Embarcadero\RAD Studio\9.0\bin\bds.exe" -pDelphi "%ProgramFiles%\Embarcadero\RAD Studio\9.0\source\Indy10\Protocols\dclIndyProtocols160.dpk"
|
こちらもコンパイル(再構築)の前にプロジェクトオプションを変更しなくてはなりません。
インストールして完了となります。
Delphi 2010 / XE / XE2 での注意事項
バックアップした3つのフォルダそれぞれの中にある "de / fr /ja" のみを書き戻す事によりエラーメッセージ等の言語切り替えが可能ですが、最新版と内容が一致しない可能性がありますので、リソース文字列の言語切り替えは諦めた方が良さそうです。どうしてもメッセージを言語切り替えしたいのであれば、最新版をベースに自前で翻訳するしかないでしょう。
トラブルシューティング
"dclIndyProtocolsXXX.dpk" インストールの際に "プロシージャ エントリ ポイント @Idheadercoderindy@initialization$qqrv がダイナミック リンク ライブラリ IndyProtocolsXXX.bpl から見つかりませんでした。" が出たら、旧 Indy のバックアップ漏れ(ちゃんと移動できているか?)を疑ってください。