Delphi 2007 (R2) for Win32 を Windows 10 / 11 にインストールする

# はじめに
**Delphi 2007 for Win32** は Borland の開発部門を分社化した CodeGear から 2007 年にリリースされました [^1]。

 - ANSI Delphi 最終版
 - QuickReport が利用可能
 - Delphi 2 ～2006 の多くのコードがそのまま動作
 - UAC 対応可能

上記理由により、今でもマイグレーション用、あるいはマイグレーションの中間ステップ用に使われる事が多いです。

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

 - [登録製品ポータル](https://my.embarcadero.com/)
 - [登録ユーザダウンロード](https://cc.embarcadero.com/myreg)

いずれかからダウンロードできます。しかしながら Delphi 2007 (R2) は古い製品という事もあり、[登録製品ポータル](https://my.embarcadero.com/)からだとダウンロードできないアイテムがあるようです。

本記事は、各種ファイルを[登録ユーザダウンロード](https://cc.embarcadero.com/myreg)からダウンロードして Windows 10 / 11 にインストールする手順となっています。

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

## \#1 RAD Studio 2007 ISO (Dec 2007)
セットアップ DVD イメージファイル (ISO) です。以前にリリースされたアップデータとホットフィックスを含めた `December 2007 Update` が適用された状態です。

インストーラが自動起動した場合にはそれを閉じ、Explorer で **install.exe** を右クリックしたら <font color="Crimson">\[管理者として実行\]</font> で開きます。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/21785/898d1374-93cc-00e8-41cd-9e48aad6f060.png)
インストール先も、デフォルトの `%ProgramFiles(x86)%\CodeGear\RADStudio\5.0\` ではなく、`C:\Embarcadero\Studio\5.0\` のような UAC の影響を受けない場所にインストールした方がトラブルは少ないと思います。

 - [ID: 26067, CodeGear RAD Studio 2007 ISO (Dec 2007)](https://cc.embarcadero.com/item/26067)
 - [ID: 25238, December 2007 Update for CodeGear RAD Studio 2007](http://cc.embarcadero.com/item/25238)
 - [RAD Studio 2007 December Update のコアバグ修正リスト (EDN)](http://edn.embarcadero.com/article/37496)

※ 環境によっては事前に `[Windows の機能の有効化または無効化]` にて .NET Framework 2.0 を有効にしなければならないかもしれません。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/21785/c177e39f-ab3d-5636-119c-498352456a7f.png)
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/21785/f3e84b63-c6d6-a858-3489-4f7e7b5f3ecc.png)
`[Windows の機能の有効化または無効化]` は `[ファイル名を指定して実行 (〔Win〕+〔R〕)]` から `optionalfeatures.exe` を実行する事で素早く開く事ができます。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/21785/f6e93983-73d2-fd77-9c78-e5376b231535.png)

### ・Blackfish SQL のサービス停止

**Delphi 2007 R2** をインストールした場合、恐らくもう使わないであろう **Blackfish SQL** がサービスとして起動しますので、スタートアップの種類を `手動` にした上で停止しておくとよいでしょう [^2]。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/21785/75396ee2-a1dd-5c5c-01a8-011b15dfbd50.png)

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

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

```pascal: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;
    Move(ColorTable^, Pal.palPalEntry, ColorCount * 4);
  end;

  ...
```

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

...

  NewImage;
  Stream.ReadBuffer(EnhHeader, Sizeof(EnhHeader));
  if EnhHeader.dSignature <> ENHMETA_SIGNATURE then InvalidMetafile;
  if EnhHeader.nBytes < Sizeof(EnhHeader) then // Add
    InvalidMetafile;                           // Add
  GetMem(Buf, EnhHeader.nBytes);

  ...
```


```pascal:graphics.pas
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)](https://docwiki.embarcadero.com/Support/ja/Delphi%E3%81%8A%E3%82%88%E3%81%B3C%2B%2BBuilder%E3%81%AB%E3%81%8A%E3%81%91%E3%82%8BVCL_Bitmap_LoadFromFile%E3%81%AE%E8%84%86%E5%BC%B1%E6%80%A7%E3%81%AB%E3%81%A4%E3%81%84%E3%81%A6)
 - [Delphi および C++ Builder の VCL ライブラリのバッファ オーバーフロー (SupportKB)](https://support.embarcadero.com/article/44089)

## \#2 April 08 Hotfix for CodeGear RAD Studio 2007
`December 2007 Update` が適用された環境用のホットフィックスです。
アーカイブを解凍するとインストーラ ( `radstudio2007apr08hotfix.exe` ) がありますのでこれを右クリックし、<font color="Crimson">\[管理者として実行\]</font> で開きます [^3]。

 - [ID: 25495, April 08 Hotfix for CodeGear RAD Studio 2007](https://cc.embarcadero.com/item/25495)
 - [リリースノート: Apr08 Hotfix for CodeGear RAD Studio 2007 (EDN)](http://edn.embarcadero.com/article/37880)

## \#3 Updated Deployment Terms for CodeGear RAD Studio 2007
配布可能ファイル一覧の更新です。アーカイブを解凍し、インストールフォルダの `deploy.htm` を上書きします。
ライセンスの話なので `deploy.htm` を更新しなくとも、動作に影響はありません。

 - [ID: 25620, Updated Deployment Terms for CodeGear RAD Studio 2007](http://cc.embarcadero.com/item/25620)

## \#4 May/June 08 Help Update 4 for CodeGear RAD Studio 2007
オンラインヘルプのアップデータです。

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

```bat:setup.cmd
@echo off
cls
Help_Setup /upgrade
```

`setup.cmd` を右クリックし、<font color="Crimson">\[管理者として実行\]</font> で開きます。

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

 - [ID: 25688, May/June 08 Help Update 4 for CodeGear RAD Studio 2007](http://cc.embarcadero.com/item/25688)
 - [RAD Studio 2007 ヘルプアップデート インストールおよびリリースノート (EDN)](http://edn.embarcadero.com/article/37603)


## \#5 June 08 Linker Hotfix for CodeGear RAD Studio 2007

`link32.exe` で、特定の種類の obj ファイルをリンクするときに発生するアクセス違反エラーに対応したホットフィックスです。
アーカイブを解凍してできた `link32.exe` をインストールフォルダの `bin` サブフォルダへ上書きコピーします。

 - [ID: 25694, June 08 Linker Hotfix for CodeGear RAD Studio 2007](https://cc.embarcadero.com/item/25694)

## \#6 GIF and JPG source files for CodeGear RAD Studio 2007
GIF / JPG サポート用ソースファイルです。インストールフォルダの `Source` サブフォルダに `Extras` フォルダごとコピーしておきます。[^4]

 - [ID: 25696, GIF and JPG source files for CodeGear RAD Studio 2007](http://cc.embarcadero.com/item/25696)

## \#7 Updated Deployment Licenses for Blackfish SQL 8
Blackfish SQL の更新された配布ライセンスです。現在ではダウンロードできないかもしれませんが、動作に影響はありません。

 - [ID: 25650, Updated Deployment Licenses for Blackfish SQL 8](https://cc.embarcadero.com/item/25650)

## \#8 Remote Debugger for CodeGear RAD Studio 2007
`December 2007 Update` が適用された環境用のリモートデバッガです。
リモートデバッグするターゲット環境で実行してインストールします。リモートデバッグを行わないのであれば不要です。

 - [ID: 24995, Remote Debugger for CodeGear RAD Studio 2007](https://cc.embarcadero.com/item/24995)
 - [リモートデバッグを行う (ht-deko.com)](https://ht-deko.com/tech031.html)

## \#9 RAD Studio 2007 Debugger Fix
64bit 環境でデバッグ実行すると `bordbk105N.dll`　が `Assertion failure: "(!"SetThreadContext failed")"` のエラーを吐く問題を解決します。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/21785/b50bc3b2-9286-41ea-7094-e6aaef0fc942.png)
アーカイブを解凍してできた `bordbk105N.dll` をインストールフォルダの `bin` サブフォルダへ上書きコピーします。

<font color="Crimson">64bit Windows 環境では必須のホットフィックス</font>なのですが、Unofficial 扱いとなっているために[登録製品ポータル](https://my.embarcadero.com/)からも[登録ユーザダウンロード](https://cc.embarcadero.com/myreg)からもダウンロードできないという罠があります。

 - [ID: 27521, RAD Studio 2007 Debugger Fix for Windows 7](https://cc.embarcadero.com/item/27521)

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

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

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

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

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

## ・TServerSocket / TClientSocket
古いバージョンでは **\[Internet\]** カテゴリにあったコンポーネントです。存在はしますが、デフォルトでは有効になっていません。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/21785/2a5b1852-4d6c-1c00-699d-830f8da5dcad.png)
 1. \[コンポーネント | パッケージのインストール\]
 2. \[追加\]ボタンを押下。
 3. `$(BDS)\bin` [^5] にある `dclsockets100.bpl` を指定。

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

## ・TShellTreeView / TShellComboBox / TShellListView / TShellChangeNotifier
古いバージョンでは **\[Samples\]** カテゴリにあったコンポーネントです。存在はしますが、デフォルトでは有効になっていません。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/21785/81446ac3-9b6d-4283-19c8-5fcd8327e646.png)
 1. \[ファイル | プロジェクトを開く\]
 2. `$(BDSCOMMONDIR)\Demos\DelphiWin32\VCLWin32\ShellControls` [^6] にある `dclshlctrls.dpk` を指定。
 3. \[プロジェクトマネージャ\] で `dclshlctrls110.bpl` を右クリックし、コンテキストメニューから \[インストール\]。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/21785/4b3d3788-50c6-dc70-0c96-3c576ad180e5.png)
上記手順で TShellTreeView / TShellComboBox / TShellListView / TShellChangeNotifier が有効になります。


# ■ その他のダウンロード可能ファイル
その他、Delphi 2007 で有用なファイル群です。

## ・QuickReport 4 Standard for Delphi
レポートツール **QuickReport** の RAD Studio 2007 バンドル版である **QuickReport 4 Standard for Delphi** です。

 - [ID: 25002, QuickReport 4 Standard for Delphi](https://cc.embarcadero.com/item/25002)
 - [Delphi 2007 に QuickReport をインストール (ht-deko.com)](https://ht-deko.com/tech012.html)


## ・Source code of QRChart control (QuickReport chart) packages for BDS 2006
上記 QuickReport 用 **TeeChart (QRChart)** です。BDS 2006 用ですが、少々の改変で Delphi 2007 でも使えます。
QuickReport をインストールしないのであれば不要です。

 - [Source code of QRChart control (QuickReport chart) packages for BDS 2006 (steema.com)](http://www.steema.com/support/teechart/7/QuickReport/)
 - [Delphi 2007 に QuickReport をインストール (ht-deko.com)](https://ht-deko.com/tech012.html)

## ・Rave Reports BE for CodeGear RAD Studio 2007
レポートツール **Rave Reports** の RAD Studio 2007 バンドル版である **Rave Reports BE for CodeGear RAD Studio 2007** です。

 - [ID: 24998, Rave Reports BE for CodeGear RAD Studio 2007](http://cc.embarcadero.com/item/24998)

## ・Indy (Internet Direct)
**Indy** に関しては別記事があります。

 - [ANSI 版 Delphi (5～2007) に最新版の Indy10 をインストールする (ht-deko.com)](https://ht-deko.com/tech034.html)

## ・IntraWeb (VCL for the Web)
**IntraWeb** に関しては別記事があります。

 - [Delphi に最新版の IntraWeb (VCL for the Web) をインストールする (Qiita)](https://qiita.com/ht_deko/items/e75d56487ff2395103a5)

Delphi 2007 以前にインストール可能な IntraWeb 9 は Enterprise 版が無償となっています。

 - [IntraWeb 9 が無償に (Owl's perspective)](http://owlsperspective.blogspot.jp/2011/08/intraweb9-is-now-free.html)
 - [IntraWeb 9 Enterprise Free Edition is available now (atozed.com)](https://www.atozed.com/2011/01/20110716a-en/)
 - [IntraWeb 9.0.42 (atozed.com)](https://www.atozed.com/2017/01/9-0-42/)

## ・InstallAware Express CodeGear Edition
インストーラ作成ツール **InstallAware** の RAD Studio 2007 バンドル版である **InstallAware 6 CodeGear Special Edition** です。

最新版の Delphi をお持ちの方はこれよりも新しいバージョンのバンドル版である **InstallAware 2012 RAD Studio Edition** を使うといいでしょう。英語版ではありますが、UAC のエレベーション (権限昇格) に対応しています。

 - [ID: 24997, InstallAware Express CodeGear Edition](http://cc.embarcadero.com/item/24997)
 - [InstallAware (ht-deko.com)](https://ht-deko.com/tech023.html)

## ・BDE Merge Module for RAD Studio 2007-XE2
BDE マージモジュールです。アプリケーションと共に BDE を配布するインストーラを作る際に使います。

 - [ID: 24996, BDE Merge Module for RAD Studio 2007-XE2](http://cc.embarcadero.com/item/24996)
 - [今更ながら BDE (Borland Database Engine) (ht-deko.com)](https://ht-deko.com/tech024.html)

## ・RAD Studio Help Update 1 CHM files - Japanese
HTML Help (\*.CHM) 形式のヘルプファイルです。
`May/June 08 Help Update 4` に比べると内容は古いのですが、Html-Help2 (Document Explorer) よりも快適に閲覧できると思います。

 - [ID: 25267, RAD Studio Help Update 1 CHM files - Japanese](https://cc.embarcadero.com/item/25267)

## ・FireDAC 8.0.5
FireDAC が使える後続のバージョンを持っている場合、FireDAC をインストールする事が可能かもしれません。XE4 の FireDAC アドオンパックが利用可能な場合、XE4 ～ Delphi 5 の IDE にインストール可能です。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/21785/c381a109-0d24-9931-4a45-a849df8abe05.png)
別記事に詳細があります。

 - [旧バージョンの Delphi に FireDAC をインストールするには？ (Qiita)](https://qiita.com/ht_deko/items/ab472231ec6a8681991a)
## ・IDE Fix Pack 2007  または dzEditorLineEndsFix

Windows 7 / 8.x で IDE 起動時に起こる `EditorLineEnds.ttr` エラーを回避します。Windows 10 以降では発生しないと思われるのですが、一応紹介しておきます。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/21785/27a1a46f-21ae-4087-4a71-81564f8dd45f.png)

```
---------------------------
エラー
---------------------------
ファイル "C:\Users\user\AppData\Local\Temp\EditorLineEnds.ttr" を作成できません。プロセスはファイルにアクセスできません。別のプロセスが使用中です。.
---------------------------
OK   
---------------------------
```

 - [IDE Fix Pack 2007 (Andy's Blog and Tools)](https://www.idefixpack.de/blog/ide-tools/ide-fix-pack-2007/)
 - [dzEditorLineEndsFix (sourceforge.net)](https://sourceforge.net/projects/dzeditorlineendsfix/)
 - [「"EditorLineEnds.ttr"を作成できません。プロセスはファイルにアクセスできません。別のプロセスが使用中です。｣ (SupportKB)](https://support.embarcadero.com/jp/article/44023)
 - ["EditorLineEnds.ttr"エラーについて(続報) (SupportKB)](https://support.embarcadero.com/jp/article/44044)
 - [「EditorLineEnds.ttr を作成できません」の対処方法 (Qiita: @CYonezawa)](https://qiita.com/CYonezawa/items/c8e2299e5f96f233de0d)


# おわりに
使う頻度がそこそこ高い Delphi 2007 (R2) の環境構築方法でした。Delphi 2007 (R2) の実行の際にも管理者権限で実行するようにしてくださいね。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/21785/57f9ccaf-68e6-b92a-8c75-9c66a189402e.png)
それと、Windows 8.1 や Windows 10 / 11 はちょっと大きめのアップデートがあると、Delphi 2007  (R2) が使っている .NET アセンブリを削除するので注意が必要です。
![image.png](https://qiita-image-store.s3.amazonaws.com/0/21785/ad92ac74-f70f-b1ea-9ab1-79596223976a.png)
Delphi の最新バージョンでは、旧バージョンライセンスを使用することができます。「ソースコードはあるけどコンパイル環境がない！」という場合には同グレードの最新版 Delphi を購入するといいですよ。

**See also:**

 - [Delphi 旧バージョン情報 (Embarcadero)](https://www.embarcadero.com/jp/products/delphi/previous-versions)
 - [Supported Versions (Support Wiki)](https://docwiki.embarcadero.com/Support/en/Supported_Versions)
 - [Platform Status (Support Wiki)](https://docwiki.embarcadero.com/PlatformStatus/en/Main_Page)
 - [Windows 8.x / 10 / 11 が Delphi 2007 の .target ファイルを消すのでどうにかする (Qiita)](https://qiita.com/ht_deko/items/1b1e80e8476c05fed372)
 - [Delphi コードのクリーンアップ (Qiita)](https://qiita.com/ht_deko/items/9cc54ba5802f034c58a6)
 - [Delphi 2007 – Serial Number が不正のエラーについて (SupportKB)](https://support.embarcadero.com/article/36545)
 - [Delphi 2007 - HAS_SLIP エラーについて (SupportKB)](https://support.embarcadero.com/article/36660)
 - [インストールエラー 1580 について (SupportKB)](https://support.embarcadero.com/article/36961)
 - [RAD Studioのアンインストール (SupportKB)](https://support.embarcadero.com/article/37469)
 - [Delphi 7 (7.1) を Windows 10 / 11 にインストールする](https://qiita.com/ht_deko/items/a815f81c83068ba2fb7c)
 - [Delphi XE を Windows 10 / 11 にインストールする](https://qiita.com/ht_deko/items/84b5b0b0d591757ae129)
 - [「MS Help 2.x ランタイムがインストールされていない」というエラーを解消する](https://qiita.com/ht_deko/items/be1fb0aa801abbcdaa5c)

[^1]: 後に BlackfishSQL を同梱した R2 がリリースされました。
[^2]: BlackfishSQL は 2010/09 でサポートが切れています。
[^3]: シールドアイコンの付いた EXE は普通にダブルクリックしても管理者権限で実行されますが、たまにシールドアイコンの付いていないアップデータがあるため、明示的に右クリックから管理者権限で実行する事をオススメします。 
[^4]: Delphi での PNG サポートは 2009 からとなります。Delphi 2007 で PNG を扱う際は[こちらを参照](https://github.com/JackTrapper/pngdelphi)してください。
[^5]: `$(BDS)` は Delphi インストールフォルダを表します。\[ツール | オプション...\] の \[環境変数\] で実際のパスを確認する事ができます。
[^6]: `$(BDSCOMMONDIR)` は標準で `C:\Users\Public\Documents\RAD Studio\5.0` です。\[ツール | オプション...\] の \[環境変数\] で実際のパスを確認する事ができます。