Delphi2009にJCL、JVCLをインストール

Delphi2009をようやっと購入できました!

さっそくDelphi2007をアンインストールし、コンポーネントの移植を始めます。

しかし!

もっとも使用率の高いProject JEDIのコンポーネント集JCLとJVCLが入りません。

さまざまな手段を講じ、(半分無理やり)インストールできましたのでいずれくる再インストールに備えて自分のために書いておこうと思います。

まあそのうち本家でも対応されると思いますが・・・

JCLのインストール

まず、ユーザーアカウント(Administrator以外)ではインストールできません。
「管理者権限があるユーザー」でも無理です。

Install.batを起動するとコンパイルはおこわなれたように見えますが、

JediInstaller.dpr(32) 致命的エラー:F2039ファイル’JediInstaller.drf’を作成できません

のエラーが発生します。

drfというファイルは聞いたことがありませんが、「作成できません」のあたりから

・存在しないディレクトリに出力しようとしている
・権限が不足したディレクトリに出力しようとしている

と思われます。管理者権限のユーザーなので「存在しない」ほうが有力かな?と思って調べますが・・・

JediInstaller.dprにもバッチファイルにもdrfファイルの出力先や参照している部分が見当たりません。
たぶんコンパイラが自動で生成しているのでしょう。

さて困った。

 

バッチファイルではdcc32ex.exeというものを使ってJediInstaller.dprをコンパイルしているようです。

この一文

build\dcc32ex.exe –runtime-package-rtl –runtime-package-vcl –preserve-config -q -w -dJCLINSTALL -E..\bin -I..\source\include -U..\source\common;..\source\windows JediInstaller.dpr

をコマンドラインで実行します。

結果は同じ。つまりここで失敗しているのですね。
dcc32exはソースが付属しますので、試しにdcc32ex.exeをDelphi2009でリコンパイルしてみます。

そして実行・・・ダメ。

 

インターネットを調べます。
国外のページでJCLではないですが、drfが生成できないエラーで悩んでいるページを見つけました。
そこでは環境変数%TEMP%が存在しないところを指している場合、TEMPが一杯(?)の場合に失敗すると書いてあります。

うそだろ~と思いながらもわらにもすがる思い出%TEMP%のパスを確認し、TEMPをできるだけ空にします。

そして実行・・・ダメ。

あたりまえだ。

 

ふと以前、OCXの登録がAdministratorで実行しなければできなかったソフトがあったのを思い出しました。

すぐさまログオフし、Administratorで入りなおします。

そしてバッチファイルを起動・・・成功!
ようやっとインストーラが起動しました。

Installボタンを押します。

順調にコンパイルが・・・止まった~~

「RichEditでの行の挿入エラー」が大発生です。

 

さてこれは何だ。

インストーラのメッセージを見ると

「W1057 文字列の暗黙的なキャスト (‘AnsiString’ から ‘string’)
196598 行, 0.98 秒, コ」

と不自然な終わり方をしています。
メッセージの内容も気になりますがまずはこの挿入エラーを何とかしましょう。

インストーラのソースを開きます。
\install\VclGui に JediGUIInstall.dfm があります。
ここを見ると
object InfoDisplay: TRichEdit
の部分が。

IDEでインストーラのプロジェクトを開き、InfoDisplayを消し、TMemoに張替え、NameをInfoDisplayに変えます。
まあインストーラなんで問題ないでしょう。

インストーラをコンパイル。

しかし、バッチファイルから起動したら再構築されてしまうのででjcl\binに戻り、直に「JediInstaller.exe」を起動します。

起動しました!

そしてインストール・・・成功!

 

ついにJCLが入りました!!

 

念のためDelphiを起動してみます。
見慣れたJEDI Code Libraryのアイコンが出ました!

次はJVCLのインストールです。