Qiita Teams that are logged in
You are not logged in to any team

Log in to Qiita Team
Community
OrganizationEventAdvent CalendarQiitadon (β)
Service
Qiita JobsQiita ZineQiita Blog
0
Help us understand the problem. What are the problem?

posted at

updated at

Delphi 2 ~ 3.1 は 32bit アプリケーションだけどインストーラが 16bit アプリケーションなせいで 64bit Windows へインストールできない件をどうにかする

はじめに

Delphi 2 ~ 3.1 のインストーラは Install Shield 3 で作られており、16bit アプリケーションです。

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

対処方法

■ 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 を使う

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

■ Is3Engine.zip を使う

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

これを解凍してできた setup32.exe をセットアップ CD-ROM 内の INSTALL フォルダに置いて実行します (SETUP.EXEsetup32.exe を同じ場所に置いて実行)。
image.png

もちろんセットアップ CD-ROM に書き込む事はできないので、ローカルにコピーするなり、再度 CD-R に焼くなりします。

setup32.exe を実行してしばらくするとインストーラが起動します。
image.png
image.png
Windows 10 (64bit) でインストーラを実行できました。

■ Is3Engine.zip を使う (検証)

続いて、Windows 11 の Windows Sandbox を使ってインストールを検証してみました。

・Delphi 2

そのままだと OC30.DLL のエラーでインストールが完了しませんでした。
image.png
setup32.exe のショートカットを作り [互換性] タブで Windows 98 / Windows Me に変更し、このショートカットを実行します。
image.png
BDE が設定できなかった旨のエラーは出ましたが、インストーラは完走しました。
image.png
image.png
※ Delphi 2 の BDE はバージョン 3.0 です。多くの場合、付属の BDE が正しくインストールできなくても問題ない気がします 1

・Delphi 3

そのままだと最後に MFC40.DLL / OC30.DLL のエラーが出てしまいます (インストーラは完走します)2
image.png
setup32.exe のショートカットを作り [互換性] タブで Windows 98 / Windows Me に変更し、このショートカットを実行します。
image.png
BDE が設定できなかった旨のエラーは出ましたが、インストーラは完走しました。
image.png
image.png
※ Delphi 3 の BDE はバージョン 4.0、Delphi 3.1 の BDE はバージョン 4.1 です。多くの場合、付属の BDE が正しくインストールできなくても問題ない気がします 1

おわりに

インストーラ全般の話になりますが、インストーラが 16bit アプリケーションの場合には、ファイルのプロパティの [詳細] タブを確認してみましょう。Install Shield 3 で作られていればチャンスはあります。
image.png
インストールされたアプリケーションが 16bit アプリケーションであった場合には OTVDM を使えば動作するかもしれません。

See also:


  1. BDE (Borland Database Engine) の最新版は Delphi 6 以降にバンドルされた バージョン 5.2 です。BDE は同時に異なるバージョンをインストールして使用することができません。インストール時に異なるディレクトリを指定したとしても、BDE の構造上古いバージョンと共存することはできず、必ず最後にインストールされたバージョンが使われます。 

  2. 事前にインストール CD-ROM 内の RUNIMAGE\WINDOWS\SYSTEM32 にある MFC40.DLLOC30.DLLC:\Windows\System32 および C:\Windows\SysWow64 へコピーしてインストーラを実行すれば最後までエラーは出ませんでした。 

Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
0
Help us understand the problem. What are the problem?