はじめに
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 の影響を受けない場所にインストールした方がトラブルは少ないと思います。
- ID: 27984, Delphi XE and C++Builder XE ISO
- ID: 28009, Delphi XE and C++Builder XE Complete Installer
- ID: 27986, RAD Studio XE Install from the Web
- Embarcadero Delphi XE および C++Builder XE のインストール ノート (EDN)
Delphi XE のインストーラやアップデータは管理者権限で実行する事をオススメします。
※ 環境によっては事前に [Windows の機能の有効化または無効化]
にて .NET Framework 3.5 を有効にしなければならないかもしれません。
[Windows の機能の有効化または無効化]
は [ファイル名を指定して実行 (〔Win〕+〔R〕)]
から optionalfeatures.exe
を実行する事で素早く開く事ができます。
・BMP のバッファオーバーフロー対策
バッファオーバーフロー対策を行います。$(BDS)\source\Win32\vcl
にある 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;
...
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);
...
{$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:
- Delphi および C++Builder における VCL Bitmap LoadFromFile の脆弱性について (Support Wiki)
- Delphi および C++ Builder の VCL ライブラリのバッファ オーバーフロー (SupportKB)
#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 |
- 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, C++Builder XE, RAD Studio XE 向け Hotfix (EDN)
#3 Help Update 3 for Delphi XE and C++Builder XE
オンラインヘルプのアップデータです。
アーカイブを解凍するとインストーラ ( Help_Setup.exe
) がありますので、このファイルと同じフォルダに setup.cmd
を作成します。
@echo off
cls
Help_Setup /upgrade
setup.cmd
を右クリックし、[管理者として実行] で開きます。
もちろん、管理者権限で開いたコマンドプロンプト (あるいは PowerShell) から Help_Setup /upgrade
を行っても構いません。
- ID: 28256, Help Update 3 for Delphi XE and C++Builder XE
- Readme - Help Update 3 for Delphi and C++Builder XE (DocWiki)
#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 のインストールフォルダに上書きします。
- 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, C++Builder XE, RAD Studio XE 向け Hotfix (EDN)
■ 追加コンポーネント
過去のバージョンで使っていたかもしれないコンポーネントを有効にする方法です。
・[Samples] カテゴリの VCL
インストール時に [サンプルアプリケーション] を選択しなかった場合、TGauge 等の一部のコンポーネントが利用できなくなります。
- スタートメニューから [Embarcadero RAD Studio XE | 変更、修正、アンインストール]
- インストーラのオプションで
[変更
] を選択 - インストールする項目で
サンプルアプリケーション
を選択。
上記手順で後からサンプルコンポーネントをインストールできます。
スタートメニューに 変更、修正、アンインストール
が見当たらない場合には C:\ProgramData\Microsoft\Windows\Start Menu\Programs\Embarcadero RAD Studio XE
を参照してみてください。
・TServerSocket / TClientSocket
古いバージョンでは [Internet] カテゴリにあったコンポーネントです。存在はしますが、デフォルトでは有効になっていません。
- [コンポーネント | パッケージのインストール]
- [追加]ボタンを押下。
-
$(BDS)\bin
3 にあるdclsockets150.bpl
を指定。
上記手順で TServerSocket / TClientSocket が有効になります。
・TShellTreeView / TShellComboBox / TShellListView / TShellChangeNotifier
古いバージョンでは [Samples] カテゴリにあったコンポーネントです。存在はしますが、デフォルトでは有効になっていません。
- [ファイル | プロジェクトを開く]
-
$(BDSCOMMONDIR)\Samples\Delphi\VCL\ShellControls
4 にあるdclshlctrls.dpk
を指定。 - [プロジェクトマネージャ] で
dclshlctrls140.bpl
を右クリックし、コンテキストメニューから [インストール]。
上記手順で 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 を配布するインストーラを作る際に使います。
- ID: 24996, BDE Merge Module for RAD Studio 2007-XE2
- 今更ながら BDE (Borland Database Engine) (ht-deko.com)
・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 です。
・FireDAC 8.0.5
FireDAC が使える後続のバージョンを持っている場合、FireDAC をインストールする事が可能かもしれません。XE4 の FireDAC アドオンパックが利用可能な場合、XE4 ~ Delphi 5 の IDE にインストール可能です。
別記事に詳細があります。
おわりに
使う頻度がそこそこ高い Delphi XE の環境構築方法でした。実行の際には管理者権限があった方がいいような気がします。
Delphi の最新バージョンでは、旧バージョンライセンスを使用することができます。「ソースコードはあるけどコンパイル環境がない!」という場合には同グレードの最新版 Delphi を購入するといいですよ。
See also:
- Delphi 旧バージョン情報 (Embarcadero)
- Supported Versions (Support Wiki)
- Platform Status (Support Wiki)
- Delphi コードのクリーンアップ (Qiita)
- Delphi/C++Builder XE の手動アンインストール (SupportKB)
- Delphi 7 (7.1) を Windows 10 / 11 にインストールする
- Delphi 2007 (R2) for Win32 を Windows 10 / 11 にインストールする
- 「MS Help 2.x ランタイムがインストールされていない」というエラーを解消する