2011年12月4日日曜日

VistaでBorland C++ が使えるか?

昔作ったソフトを修正する必要があるとき、古い環境をどう再構築するか悩ましいことがあります。今回は、Borland C++ 5.02J (C++ビルダーでは無い) が必要となり、Vista上での再構築にチャレンジした記録をここに残すことにしました。

用意するもの

  • Borland C++ 5.01J CD-ROM
  • 5.02Jアップデートパッチ

手順

まず、Borland C++5.01J をインストールする
具体的には、CD-ROMルートのSETUP.EXEを起動し、Borland C++ 5.01と書かれたボタンをクリックする。
その後はインストーラの指示に従う。
インストーラのウインドウ切替が少し遅く感じるが、作業を進めることは出来る。
今回は用途が限定されているので、カスタムインストールを選択した。
インストールディレクトリはデフォルトとした。やたらと長い名称や日本語名称のディレクトリへのインストールは避けた方がよいかも知れない。
ターゲットプラットホームは 32bit Windowsのみとした。
インストールするグループでは、使用見込みがないので Borland Database Engine を外した。
また、Turbo Debugger も使ったことがないので今後も使わないだろうと言うことで外した。
ライブラリでは、データベース関係はやらないので Visual Database Tools を外した。
サンプルは無くても動作には影響ないが、何かと参考になるので必要なものはインストールした。ちなみに外したのは、MFCのサンプル。Borlandのコンパイラをわざわざインストールする人がMFCなんて使いません(^^;;
ヘルプについても同様に不要なものを外しておく。

さて、特に問題なくインストールできたようです。
ただし、Windows95にインストールしたときは、スタートメニュー上でヘルプファイルをまとめたサブフォルダを生成してその下にヘルプが配置されましたが、Vistaではサブフォルダが生成されず、すべて Borland C++ 5.01 フォルダに配置されました。動作には影響ないですが、気になる場合は手動で直すしかないです。ただし、手動でいじるとアンインストール時にゴミとして残る可能性があります。その場合は、手動で消せば良いです。

次に、5.02Jへのアップデートパッチを当てます。
まず、インストーラメニューを終了します。
次に、5.02Jアップデートパッチに含まれている、UPDATE.BAT に、Borland C++ 5.01J をインストールしたパスを引数として指定して実行します。
インストーラのデフォルトディレクトリへインストールした場合は、
UPDATE C:\BC5
となります。
※ 詳しくは、UPDATE.TXT に説明されています。

さて、単純に上記のようにアップデートを実行しようとすると、
"アクセスが拒否されました。"
のオンパレードになってしまいます。。。
原因は、BC5ディレクトリ以下が『読取専用』属性になってしまっているからです。
ここはインストーラがうまく処理できなかったようです。 単なるコピーとして処理してしまったのでしょうか。CD-ROM上のファイルは属性が『読取専用』であるため、属性がそのままコピーされてしまったものと考えます。

というわけで、BC5ディレクトリの読取専用属性を解除しましょう。



BC5ディレクトリ以下すべてを対象に、読取専用属性を外します。

さて、再チャレンジ。。。

まただめだ・・・
あ、わかった! コマンドプロンプトを管理者権限で実行する必要がありました!

・・・ まただめ?
ああ、そうか、CD-ROMから直接起動したからだめなのでした。
普通、パッチはネットからダウンロードしてくるので、自然とHDDからの実行になり問題になることはあまり無いのですが、私の場合、CD-ROMに保存していたため、ついそのまま実行したのでした。
このUPDATEツールは、実行フォルダにログを保存しようとするため、CD-ROMに書き込めずエラーになるのでした。
というわけで、アップデートパッチ一式をHDDへコピーして再実行!

今度はうまくいきました。
なお、5.02Jパッチを当てても、スタートメニューのフォルダ名は5.01のままです。

気になる人は手動で修正です。ただし、アンインストール時は・・・、まあいいですよね。手動で消せますから。

では、起動してみましょうか。
念のため再起動しておきます。
さて、Borland C++ 5.02J を起動!
あれ? BDT52CF.DLL が無い、と怒られました。
データベース関係のオプションは外してインストールしたのでいらないはずですが、チェックしてしまっているようです。
仕方がないので、CD-ROMのBC5\BINディレクトリから、 BDT50CF.DLL をコピーして、再度UPDATEを実行し、 BDT52CF.DLL を生成させます。
これで Borland C++ 5.02J を起動したところ、エラー表示が出なくなりました。

過去の適当なプロジェクトをロードして・・・
はい、コンパイル成功!


結論

Vistaでも動作可能であることが判明しました。
100%は保証できませんが、大抵のことは出来るのではないでしょうか。

なお、関連付けによるide起動は、うまくいかないようです。