今更聞けない Delphi のコト (パッケージ編)

 知っているようで知らないパッケージの話です。

基礎知識

 パッケージは Delphi 3 から導入された概念です。コンポーネントをパッケージという器に押し込んで、パッケージ毎に付け外しが可能となります。パッケージのソースは "*.dpk" で、ここへ VCL を登録する事になります。登録されたパッケージの情報はレジストリに保存されます。

パッケージの作り方 (旧IDE)

 [コンポーネント | コンポーネントのインストール] でコンポーネントを登録すると、デフォルトで "dcluser.dpk" というパッケージソースが "$(Delphi)\Lib" に生成されます。これは "Borland(Delphi) User Components" という名前のパッケージとなります。

 新規にパッケージを作るには、[コンポーネント | コンポーネントのインストール] の"新規パッケージに追加" タブで作成するか、[ファイル | 新規作成 | その他] で作成します。[ファイル | 新規作成 | その他] でパッケージを作成すると、その時に開いていたプロジェクトグループに組み込まれてしまいますので、[ファイル | 新規作成 | アプリケーション] を事前に行ってすべてのファイルをプロジェクトから除去してから行うか、Delphiを "$(Delphi)\bin\delphi32.exe /np" のように(プロジェクトを読み込まない)スイッチを指定して起動してからパッケージを生成して下さい。

パッケージの作り方 (ガリレオ IDE)

 旧 IDE の [コンポーネント | コンポーネントのインストール] と完全に同等の機能はガリレオ IDE に存在しません。但し "dcluser.dpk" というユーザパッケージは "$(BDS)\Lib" 内にちゃんと存在しますので VCL は通常、このパッケージを開いてからインストールする事になります。

 新規にパッケージを作るには、[ファイル | 新規作成 | パッケージ] で作成します。パッケージを作成すると、その時に開いていたプロジェクトグループに組み込まれてしまいますので、[ファイル | 新規作成 | アプリケーション] を事前に行ってすべてのファイルをプロジェクトから除去してから行うか、Delphiを "$(BDS)\bin\BDS.exe /np" のように (プロジェクトを読み込まない) スイッチを指定して起動してからパッケージを生成して下さい。

コンポーネントのインストール

 当トピックはパッケージについてなので、ここではコンポーネントのインストールについての詳細な説明はしません。

パッケージ

 パッケージソース (*.dpk) をコンパイルすると、旧 IDE の場合には "$(Delphi)\Projects\Bpl" に、ガリレオ IDE では "$(BDSCOMMONDIR)\Bpl" 以下にパッケージ (*.bpl) が生成されます。パッケージの保存先は [ツール | 環境オプション...]の"ライブラリ"タブ (旧 IDE ) または、[ツール | オプション...] の [環境オプション | Delphi オプション | ライブラリ - Win32] (ガリレオ IDE) で変更する事ができます。

 パッケージ配布の際に *.bpl を配布するのもテですが、メンテナンス性を考慮するなら、パッケージソース (*.dpk) と VCL 一式を配布すべきでしょう。

パッケージの追加と削除

 パッケージの追加と削除は [コンポーネント | パッケージのインストール] で行います。

パッケージの有効 / 無効の指定

 パッケージの有効 / 無効の指定も [コンポーネント | パッケージのインストール] で行います。が、保存先が旧 IDE とガリレオ IDE で異なっています。

 旧 IDE の場合、無効にされたパッケージの情報は、プロジェクトフォルダにある *.dof に保存されます。*.dof は Ini ファイル形式で、無効されたパッケージが [Excluded Packages] セクションに保存されます。

 ガリレオ IDE の場合、無効にされたパッケージの情報は、レジストリの "HKEY_CURRENT_USER\Software\CodeGear\BDS\6.0\Disabled Packages" に保存されます (D2009 の場合。D2007 だと "HKEY_CURRENT_USER\Software\Borland\BDS\5.0\Disabled Packages" になります)。

パッケージを付け外しするのが面倒だ!

 ガリレオ IDE のみでいいのなら、"Delphi Launcher" を使ってみるといいかもしれません。


 BACK