1
Help us understand the problem. What are the problem?

posted at

updated at

Delphi XE を Windows 10 / 11 にインストールする

はじめに

Delphi XE は 2010 年に Embarcadero からリリースされました 1

  • 純粋な Win32 開発環境としての Unicode Delphi 最終版
  • インストール時間が比較的短くて済む

上記理由により、現在でも VCL アプリケーションのマイグレーション用、あるいはマイグレーションの中間ステップ用として有用なバージョンです 2

Embarcadero 製品のインストーラ及びアップデータは同社のサイト

いずれかからダウンロードできます。しかしながら Delphi XE は古い製品という事もあり、登録製品ポータルからだとダウンロードできないアイテムがあるようです。

本記事は、各種ファイルを登録ユーザダウンロードからダウンロードして Windows 10 / 11 にインストールする手順となっています。

■ インストーラとアップデータとホットフィックス

#1 Delphi XE and C++Builder XE ISO

セットアップ DVD イメージファイル (ISO) です。完全インストーラと ESD インストーラもあります。Update1 が含まれています。

インストール先はデフォルトの %ProgramFiles(x86)%\Embarcadero\RAD Studio\8.0\ ではなく、C:\Embarcadero\Studio\8.0\ のような UAC の影響を受けない場所にインストールした方がトラブルは少ないと思います。
image.png

Delphi XE のインストーラやアップデータは管理者権限で実行する事をオススメします。

※ 環境によっては事前に [Windows の機能の有効化または無効化] にて .NET Framework 3.5 を有効にしなければならないかもしれません。
image.png
image.png
[Windows の機能の有効化または無効化][ファイル名を指定して実行 (〔Win〕+〔R〕)] から optionalfeatures.exe を実行する事で素早く開く事ができます。
image.png

・BMP のバッファオーバーフロー対策

バッファオーバーフロー対策を行います。$(BDS)\source\Win32\vcl にある graphics.pas を次のように改変します。

graphics.pas
function PaletteFromDIBColorTable(DIBHandle: THandle; ColorTable: Pointer;
  ColorCount: Integer): HPalette;

  ...

  begin
    if ColorCount > 256 then                                // ADD
      InvalidGraphic({$IFNDEF CLR}@{$ENDIF}SInvalidBitmap); // ADD
    Pal.palNumEntries := ColorCount;
{$IF DEFINED(CLR)}
    if Length(ColorTable) > 0 then
      for I := 0 to ColorCount - 1 do
        Pal.palPalEntry[I] := ColorTable[I];
{$ELSE}
    Move(ColorTable^, Pal.palPalEntry, ColorCount * 4);
{$IFEND}
  end;

  ...
graphics.pas
procedure TMetafile.ReadEMFStream(Stream: TStream);

...

begin
  NewImage;
  HeaderSize := SizeOf(TEnhMetaheader);
  SetLength(Buffer, HeaderSize);
  Stream.ReadBuffer(Buffer, HeaderSize);
  EnhHeader := TEnhMetaheader(BytesToStructure(Buffer, TypeOf(TEnhMetaheader)));
  if EnhHeader.dSignature <> ENHMETA_SIGNATURE then InvalidMetafile;
  if EnhHeader.nBytes < Sizeof(EnhHeader) then // Add
    InvalidMetafile;                           // Add
  SetLength(Buffer, EnhHeader.nBytes);

  ...
graphics.pas
{$IF NOT DEFINED(CLR)}
procedure TBitmap.ReadDIB(Stream: TStream; ImageSize: LongWord; bmf: PBitmapFileHeader);

  ...

        // Read the color palette
        if biClrUsed = 0 then
          biClrUsed := GetDInColors(biBitCount);
        if (biClrUsed * DIBPalSizes[OS2Format]) > (256 * SizeOf(TRGBQuad)) then // ADD
          InvalidGraphic({$IFNDEF CLR}@{$ENDIF}SInvalidBitmap);                 // ADD
        Stream.ReadBuffer(ColorTable^, biClrUsed * DIBPalSizes[OS2Format]);
        Dec(ImageSize, biClrUsed * DIBPalSizes[OS2Format]);

  ...

改変した graphics.pas をプロジェクトフォルダにコピーして使ってください。

※ バッファオーバーフローの問題は Delphi XE4 以前で発生します。XE5 / XE6 / XE7 には修正パッチが配布されています。現在販売されている Delphi では問題解決済みです。

See also:

#2 Hotfix for Delphi XE, C++Builder XE and RAD Studio XE

Delphi XE Update 1 用のホットフィックスです。SKU 毎にアーカイブが分かれています。

HotFix Starter Professional Enterprise Architect
ID: 28247, RAD Studio XE Hotfix for RAID 280864 (QC 88928) ×
ID: 28248, RAD Studio XE Hotfix for RAID 280988 (QC 89242) × ×
ID: 28249, RAD Studio XE Hotfix for RAID 280988 (QC 89242) × × ×

アーカイブを解凍し、サブフォルダごと Delphi XE のインストールフォルダに上書きします。system32 サブフォルダ内のファイルは次のフォルダに上書きします。

Windows パス
64bit C:\Windows\SysWOW64
32bit C:\Windows\System32

#3 Help Update 3 for Delphi XE and C++Builder XE

オンラインヘルプのアップデータです。

アーカイブを解凍するとインストーラ ( Help_Setup.exe ) がありますので、このファイルと同じフォルダに setup.cmd を作成します。

setup.cmd
@echo off
cls
Help_Setup /upgrade

setup.cmd を右クリックし、[管理者として実行] で開きます。

もちろん、管理者権限で開いたコマンドプロンプト (あるいは PowerShell) から Help_Setup /upgrade を行っても構いません。

#4 Hotfix 2 for Delphi XE, C++Builder XE and RAD Studio XE

Delphi XE Update 1 用のホットフィックス 2 です。SKU 毎にアーカイブが分かれています。

HotFix Starter Professional Enterprise Architect
ID: 28257, RAD Studio XE Hotfix for QC 90864 (RAID 281617) × × ×
ID: 28258, RAD Studio XE Hotfix for QC 90864 (RAID 281617) × × ×
ID: 28259, RAD Studio XE Hotfix for QC 90864 (RAID 281617) × ×

アーカイブを解凍し、サブフォルダごと Delphi XE のインストールフォルダに上書きします。

■ 追加コンポーネント

過去のバージョンで使っていたかもしれないコンポーネントを有効にする方法です。

・[Samples] カテゴリの VCL

インストール時に [サンプルアプリケーション] を選択しなかった場合、TGauge 等の一部のコンポーネントが利用できなくなります。

  1. スタートメニューから [Embarcadero RAD Studio XE | 変更、修正、アンインストール]
  2. インストーラのオプションで [変更] を選択
  3. インストールする項目で サンプルアプリケーション を選択。

上記手順で後からサンプルコンポーネントをインストールできます。

スタートメニューに 変更、修正、アンインストール が見当たらない場合には C:\ProgramData\Microsoft\Windows\Start Menu\Programs\Embarcadero RAD Studio XE を参照してみてください。

・TServerSocket / TClientSocket

古いバージョンでは [Internet] カテゴリにあったコンポーネントです。存在はしますが、デフォルトでは有効になっていません。
image.png

  1. [コンポーネント | パッケージのインストール]
  2. [追加]ボタンを押下。
  3. $(BDS)\bin 3 にある dclsockets150.bpl を指定。

上記手順で TServerSocket / TClientSocket が有効になります。

・TShellTreeView / TShellComboBox / TShellListView / TShellChangeNotifier

古いバージョンでは [Samples] カテゴリにあったコンポーネントです。存在はしますが、デフォルトでは有効になっていません。
image.png

  1. [ファイル | プロジェクトを開く]
  2. $(BDSCOMMONDIR)\Samples\Delphi\VCL\ShellControls 4 にある dclshlctrls.dpk を指定。
  3. [プロジェクトマネージャ] で dclshlctrls140.bpl を右クリックし、コンテキストメニューから [インストール]。
    image.png
    上記手順で TShellTreeView / TShellComboBox / TShellListView / TShellChangeNotifier が有効になります。

■ その他のダウンロード可能ファイル

その他、Delphi XE で有用なファイル群です。

・Embarcadero RAD Studio XE Partner DVD ISO

パートナー DVD です。無償で使えるサードパーティ製コンポーネント等が含まれています。

TMS Smooth Controls pack も含まれていますが、この後のバージョン以降含まれておらず、Windows 10 / 11 で実行すると GDI+ のエラーが出る事があります。

・BDE Merge Module for RAD Studio 2007-XE2

BDE マージモジュールです。アプリケーションと共に BDE を配布するインストーラを作る際に使います。

・Indy (Internet Direct)

Indy に関しては別記事があります。

・IntraWeb (VCL for the Web)

IntraWeb に関しては別記事があります。

・IP*Works for Delphi XE

Delphi XE 用の IP*Works です。

・DB Optimizer XE IDE Plug-in for Delphi XE and C++Builder XE

Delphi XE 用の DB Optimizer XE です。

・FinalBuilder for Delphi, C++Builder and RAD Studio XE

Delphi XE 用の FinalBuilder です。

おわりに

使う頻度がそこそこ高い Delphi XE の環境構築方法でした。実行の際には管理者権限があった方がいいような気がします。
image.png
Delphi の最新バージョンでは、旧バージョンライセンスを使用することができます。「ソースコードはあるけどコンパイル環境がない!」という場合には同グレードの最新版 Delphi を購入するといいですよ。

See also:

  1. Starter Edition は 2011 年です。

  2. 残念ながら 32bit コンパイラのみなので、64bit コンパイラが必要な場合には最新版の使用をおすすめします。

  3. $(BDS) は Delphi インストールフォルダを表します。[ツール | オプション...] の [環境変数] で実際のパスを確認する事ができます。

  4. $(BDSCOMMONDIR) は標準で C:\Users\Public\Documents\RAD Studio\8.0 です。[ツール | オプション...] の [環境変数] で実際のパスを確認する事ができます。

Register as a new user and use Qiita more conveniently

  1. You can follow users and tags
  2. you can stock useful information
  3. You can make editorial suggestions for articles
What you can do with signing up
1
Help us understand the problem. What are the problem?