6
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

C++Builder 1.0 Client/Server が無償公開されたので Windows 10 (64bit) / 11 にインストールしたいけど、インストーラが 16bit アプリケーションなせいで 64bit Windows へインストールできない件をどうにかして、ついでに 32bit Delphi として使ってみる

Last updated at Posted at 2022-02-26

はじめに

タイトル長ぇな、オイ。

2 年前の 2020年2月14日に Delphi が 25 周年を迎えて、Delphi 1.0 Client/Server (英語版) がアンティークソフトウェアとして無償公開されました。

今回、C++ Builder 25 周年を迎えた 2022年2月26日に C++ Builder 1.0 Client/Server (英語版) がアンティークソフトウェアとして無償公開されました。

インストール

インストール要件は次の通りです。

項目 備考
CPU Intel 486 以上の CPU
OS Windows 95 または Windows NT (3.51 または 4.0)
メモリ 16MB 以上の拡張メモリ (24MB 以上を推奨)
HDD 80~175MB 以上のハードディスク (C/S は 195MB 以上)
その他 CD-ROM ドライブまたは 3.5" フロッピードライブ

C++ Builder 1 C/S のインストーラは Install Shield 3 で作られており、16bit アプリケーションです。

つまり、C++ Builder 1 そのものは 32bit アプリケーションであるにもかかわらず、インストーラの制限によって 64bit Windows へはインストールできません。

See also:

対処方法

■ 32bit Windows へインストールして持ってくる

VM 等の 32bit Windows へ一旦インストールし、ファイルを 64bit Windows へ持ってくる方法です。OS の種類によってはインストールの際に NTVDM が別途インストールされるかもしれません。

NTVDM は [Windows の機能の有効化または無効化] から手動でインストールする事もできます。
[Windows の機能の有効化または無効化][ファイル名を指定して実行 (〔Win〕+〔R〕)] から optionalfeatures.exe を実行する事で素早く開く事ができます。
image.png
NTVDMレガシ コンポーネント の中にあります。
image.png
レジストリも収集する必要がありますが、32bit Windows のレジストリをそのまま 64bit Windows に持ってきても動作しないかもしれません。

See also:

■ RUNIMAGE を使う

アーカイブ内の IMAGE にはセットアップされた状態のファイルが格納されています。
image.png
レジストリについては自前で処理しなければなりません。

■ Is3Engine.zip を使う

インストーラが Install Shield 3 の場合には回避方法があるようです。
以下のサイトから Is3Engine.zip をダウンロードしてきます。

うまく DL できない場合には、Is3Engine.zip の URL をブラウザのアドレスバーに直接入力してみてください。

これを解凍してできた setup32.exe を C++ Builder 1 解凍フォルダ内の SETUP\CBUILDER フォルダに置いて実行します (SETUP.EXEsetup32.exe を同じ場所に置いて実行)。
image.png

Is3Engine.zip を使う (検証)

続いて、Windows 11 の Windows Sandbox を使ってインストールを検証してみました。
image.png
C++ Builder 1 C/S のアーカイブを解凍したものと、Is3Engine.zip を解凍してできた setup32.exe をサンドボックスに持ってきます。そして先述の通り、SETUP.EXEsetup32.exe を同じ場所に置きます。
image.png
setup32.exe のショートカットを作り [互換性] タブで Windows 98 / Windows Me に変更し、さらに管理者権限で実行するようにして、このショートカットを実行します。
image.png

以降、特に指定のない画面では [Next] ボタンを押して先に進めてください。

次の画面で Custom セットアップを選びます。
image.png
次の画面で C++ Builder を選択し、[Options] ボタンを押下します。
image.png
次の画面でリストの下から 2 番目にある Help Files のチェックを外します。
image.png
元の画面に戻って [Next] ボタンを押下します。
image.png
次の画面で [Browse] ボタンを押下します。
image.png
Path:C:\Borland と入力します。64bit 環境だと初期パスがおかしくなるようです。%ProgramFiles% の認識もアヤしいので、C:\Borland のようなフォルダにインストールする事をオススメします。
image.png
パスが存在しないと言われますが、[Yes] を押してそのまま続行します。
image.png
パスが正しくなりました。
image.png
インストールが開始されます。
image.png
BDE が設定できなかった旨のエラーは出ましたが、インストーラは完走しました。
image.png
image.png
メニューに登録されたりはしないので、C:\Borland\CBuilder\BIN にある BCB.EXE を実行します。
image.png
C++ Builder 1 が起動しました。
image.png
※ C++ Builder 1 の BDE はバージョン 3.0 です。多くの場合、付属の BDE が正しくインストールできなくても問題ない気がします。

ヘルプファイルの処理

インストーラのオプションでヘルプファイルをインストール対象から除外したのは、そのままだとインストールの途中でエラーになるからです。
image.png
そもそも Windows 10 / 11 の場合、そのままだと WinHelp を表示できないので、インストールされなかったヘルプファイルは無視していいのですが、気になる方は、アーカイブを解凍した中の IMAGE\BORLAND\CBUILDER\HELP にあるヘルプファイルを C:\Borland\CBuilder\Help に手動でコピーしてください。

エラーの内容だと、C:\Windows 以下に何かのヘルプファイルを保存しようとしてエラーになっている感じですが、C:\Windows\SysWOW64 にはすべてのヘルプファイルがコピーされています。

See also:

OpenHelp

OpenHelp もインストールされないようなので、アーカイブを解凍した中の IMAGE\COMMON\BORLAND\OPENHELPC:\Borland\OPENHELP に手動でコピーしてください。

ショートカット

インストーラでショートカットが作られなかった環境で使えるショートカットを用意しました。C:\ProgramData\Microsoft\Windows\Start Menu\Programs\%APPDATA%\Microsoft\Windows\Start Menu\Programs\ にコピーしてお使いください。

image.png

C++ Builder 1 を Delphi 2 相当として使う

C++ Builder には Delphi コンパイラが含まれるため Delphi として使う事もできなくはありません。
image.png
...なのですが、C++ Builder 1 では Pascal のフォームをデザイナで編集できないのと、フォームファイルがバイナリ形式であるため、最近の C++ Builder みたいな事はできません。
image.png
フォームファイルは C++ Builder でユニットを作成して保存すれば作られるため、次のような Pascal (Delphi) ユニットを作れば、コンポーネントの動的作成によるなんちゃって Delphi は達成できます。

unit Unit1;

interface

uses
  Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms,
  Dialogs;

type
  TForm1 = class(TForm)
  private
    { Private declarations }
  public
    { Public declarations }
  end;

var
  Form1: TForm1;

implementation

{$R *.dfm}

end.

フォームに関する事はフォームデザイナのコンテキストメニューで View as Text を選択し、その中で貼り付ければコンポーネントの作成もやれない事はないです。C++ フォームでデザインして、それを View as Text で Pascal フォームへ貼り付けて...
image.png
つまりは、そのような...とても涙ぐましい努力をしなければならないので、C++ Builder 1 は素直に C++ として使うのがいいと思います。Delphi 2.0 があれば、そちらで作ったユニットを混在できるのですが...。
image.png
See also:

コマンドラインコンパイラなら...

コマンドラインコンパイラを使って、Object Pascal の学習用環境を作ってみます。

C:\DELPHI というフォルダの下に次に示すサブフォルダを作成し、C++ Builder 1 C/S のアーカイブを解凍したフォルダからファイルを持ってきます。

ローカルフォルダ アーカイブ
BIN IMAGE\BORLAND\CBUILDER\BIN から DCC32.EXERLINK32.DLL
※ GREP.EXE や TOUCH.EXE もコピーしてくるといいかも。面倒だったらフォルダの中をすべてコピー。
LIB IMAGE\BORLAND\CBUILDER\LIB\OBJ の中をすべて
SOURCE
(任意)
IMAGE\BORLAND\CBUILDER\SOURCE\TOOLSAPI
IMAGE\BORLAND\CBUILDER\SOURCE\VCL をフォルダごと
C:\DELPHI
├─BIN
│      DCC32.EXE
│      RLINK32.DLL
├─LIB
│      *.DCU 他
└─SOURCE
    ├─TOOLSAPI
    │      *.pas 他
    └─VCL
           *.pas 他

BIN フォルダに DCC32.CFG というファイルを作ります。

DCC32.CFG
-U"C:\DELPHI\LIB"

これで、コマンドラインからコンパイルできます。

hello.dpr
program Hello(Output);
begin
  Writeln('Hello, world.');
end.

hello.dpr をコンパイルしてみます。コンソールアプリケーションなので -CC オプションが必要です。

C:\DELPHI\BIN>dcc32 -cc hello.dpr
Delphi for Win32  Version 9.3  Copyright (c) 1983,97 Borland International
hello.dpr(1)
2 lines, 0.00 seconds, 3324 bytes code, 1241 bytes data.

C:\DELPHI\BIN>hello
Hello, world.

P_IDE を使うと、より簡単にコマンドラインコンパイラを扱えます。
image.png
C++Builder 1 (Delphi 2.0 相当) の Delphi コンパイラはかなり古く、動的配列すら使えないシロモノですが、インストーラを実行せずに使える Object Pascal コンパイラが無償で入手可能になった点は歓迎すべき事だと思います。

...何のしがらみもなければ、普通に Delphi Comunity Edition で学習すればいいんですけどね。

See also:

おわりに

今までにやった Delphi / C++ Builder インストールの知識を総動員したような記事になってしまいました。なんとか C++ Builder 1 C/S が 64bit Windows で動作するようになってホッとしました。

今年で C++ Builder 25 周年です。25 周年記念サイトや、記念 Blog 記事があったりしてなかなか盛り上がっているようです。
image.png
See also:

6
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
6
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?