Delphi Programming / Object Pascal
サイトのトップページへ リンクのページへ ロゴマーク
[掲載 2011年11月08日] [更新 2014年05月15日] コンポーネントのインストール方法(登録方法)等
   
コンポーネントの登録方法等
登録用パッケージのインストール
動作確認等 Delphi 2005 以降用の記事







パッケージ dclusr.dpk のインストール ( Delphi 2005 以降 )


コンポーネントはどこかのパッケージに登録して使用することになります.パッケージに登録しなくても使用できますが,その場合,実行時に生成(動的に生成)して使用することになります.
この [コンポーネントのインストール方法等] の各ページの説明では,dclusr.dpk を登録用のパッケージとしています.

Delphi 7 までは,このパッケージ dclusr.dpk はインストール済でしたが,Delphi 2005 以降,初期状態ではインストールされていません.パッケージにコンポーネントを登録するには,このパッケージをインストールしておかなければなりせん.パッケージのインストールそのものは,パッケージ形式で提供されている他のコンポーネントと同じです.
以下の説明は,Delphi 2010 のものです.


[備考]
.dpk ファイルを開くと,プロジェクトマネージャでの拡張子は .bpl となります.これはコンパイル済みの拡張子名です.
新規に VCL フォームアプリケーションの作成の状態にすると,コンパイルしていないのに,プロジェクトマネージャで表示される拡張子が .exe となるのと同じです.実際にコンパイルしないと .exe ファイルはできません.それと同じで,パッケージもインストールやコンパイルをしないと,.bpl ファイルは実際には作成されません.



図1
パッケージを開く
  • dclusr.dpk ファイルの場所については後述の記事を参照
  • Delphi XE2 以降では,[Win32] のフォルダにあるが,パッケージそのもには,32 ビット用と 64 ビット用の区別はない 
図2
インストール実行
  • パッケージ名のところを選択
  • この図ではコンパイル済みの名前 (拡張子が .bpl) となっている
  • マウス右ボタンで現れるメニューで [インストール] をクリック
図3
確認ダイアログ
  • この表示パスが dclusr.dpk のコンパイル済ファイルの場所
  • .dpk の場所とは違うので注意
図4
必ず [上書き保存]
  • パッケージ名のところを選択
  • この図ではコンパイル済みの名前 (拡張子が .bpl) となっている
  • マウス右ボタンで現れるメニューで [上書き保存] をクリック
図5
[上書き保存] を忘れた場合
  • IDE を閉じる時に確認ダイアログを表示
  • もちろん [はい(Y)] をクリック




新規にパッケージを作成する場合


新規にコンポーネント登録用のパッケージを作成した場合も同様にインストールしておきます.

パッケージの requires 部には,そのパッケージで必要なパッケージ名を記述します.新規にパッケージを作成した場合,rtl ぐらいしかありません.
designide については,下記のリンクの Owl's perspective の記事を参考にしてください.






一般的なパッケージのインストール方法


dclusr.dpk 以外の一般的なパッケージのインストール方法の手順も,dclusr.dpk と全く同じです.違うのはパッケージの名前と,インストール (登録) するコンポーネント類です.

複数のパッケージで提供されているコンポーネント類の場合は注意が必要です.
全てのパッケージのコンパイルは必要ですが,インストールは特定のパッケージだけでいい場合もあります.コンパイルやインストールに順番の指定があることもあります.これは,コンポーネントファイル等に依存関係があるからです.これを無視すると,ファイルが見つからない等のエラーが発生し,正常にインストールできないことがあります.

また,インストール用のプログラム (バッチファイルも含む) が提供されている場合もあります.インストール用のプログラムは,管理者権限で実行しないと正常に実行またはインストールできないのが普通です.
提供されているパッケージには,ほとんどの場合説明書きが添付されています.それに手順が書いてあります.


[備考 1]
パッケージの .dpk 内のコードに Delphi のバージョン依存コードがなく,コンポーネントのソースコードが添付されていれば,そのパッケージは他のバージョンの Delphi にもインストールできます.もちろん,コンポーネント類のソースコードに Delphi のバージョンに依存する部分がある場合は修正が必要となります.

[備考 2]
コンパイル済みで提供されているパッケージは,他のバージョンの Delphi にはインストールできません.コンパイル済みのファイルは,バージョン依存ファイルです.
コンパイル済の 32 ビットのパッケージは 64 ビットのアプリの作成には使用できません.コンパイル済の 64 ビットのパッケージは,32 ビットのアプリの作成には使用できません.






インストール済みパッケージの開き方


パッケージのある場所から開いても構いませんが,以下のように [コンポーネント] [パッケージのインストール] から開けばディレクトリを辿る必要がありません.
このダイアログで表示される名前は次のようになっています.
  • Borland User Components (Delphi 6, 7)
  • CodeGear User Components (Delphi 2007, 2009)
  • Embarcadero User Components (Delphi 2010, XE, XE2)
  • CodeGear User Components (Delphi XE3, XE4, XE5)
パッケージのインストールは,このダイアログからも行えます.[追加] ボタンをクリックします.


図6
パッケージの開き方
  • [コンポーネント]
    [パッケージのインストール] で
  • [... User Components] を選択
  • [編集] をクリック
図7
パッケージの開き方 (XE3, XE4)
  • [コンポーネント]
    [パッケージのインストール] で
  • [... User Components] を選択
  • [編集] をクリック




dclusr.dpk ファイルの場所  -  32 ビット用と 64 ビット用の区別はない


Delphi のインストール先がデフォルトままであった場合,以下のフォルダの階層下の,下図の場所にあります.
  • Program Files
  • Program Files (x86) (64 ビット版の Windows 7 の場合)
Delphi XE2 では,32 ビットと 64 ビットのアプリが開発できるようになりましたが,パッケージには,32 ビット用と 64 ビット用の区別はありません.同じものを使用します.
つまり,コードは 32 ビットと 64 ビットで共通に使用することになります.ユニットのコードが 64 ビットで使用可能かどうかは,コードによります.このことは,コンポーネントのソースコードに限りません.Delphi のコード全体に言えることです.


図8
Delphi 6
図9
Delphi 7
図10
Delphi 2007
図11
Delphi 2009
図12
Delphi 2010
図13
Delphi XE
図14
Delphi XE2, XE3, XE4, XE5
  • XE2 は,9.0 フォルダ内にある
  • XE3 は,10.0 フォルダ内にある
  • XE4 は,11.0 フォルダ内にある
  • XE5 は,12.0 フォルダ内にある
図15
Delphi XE6, XE7
  • XE6 は,14.0 フォルダ内にある
  • XE7 は,15.0 フォルダ内にある




  • パッケージインストール後のファイル類とその場所


    ユーザパッケージ,dclusr.dpk をインストールすると,拡張子が dproj, dproj.loccal 等のファイルができます.作成されるファイルの種類はバージョンによって違います.

    パッケージそのもののコンパイル済みファイルは,dclusrXXXX.bpl となります.パッケージに含まれているコンポーネントのユニット類もインストール時にコンパイルされます.ユニットのコンパイル済み拡張子は dcu です.パッケージにコンポーネントを追加して,[ビルド] あるいは [再構築] すると,bpl, dcu が再作成されることになります.
    dclusrXXX.bpl の XXX の部分は,[パッケージバージョン] の番号です.[パッケージバージョン] の値は,[コンパイラ バージョン - RAD Studio] のページで確認できます.

    パッケージのインストールで作成されるこれらのファイルの場所は,パッケージのインストールの項の記事で確認できるように,dpk ファイルとは別の場所に保存されます.
    この仕様は,マイクロソフトの指針によるものです.[Windows Vista 以降の OS で Delphi] の参考゜リンクの記事で確認してください.

    不要になったパッケージを削除する場合,状況によっては,インストール時に作成された,これらのファイルも削除しないと,トラブルの原因となることがあります.





    新しいバージョンの Delphi をインストールした場合の扱い例


    新しいバージョンの Delphi をシステムにインストールした場合,前のバージョンの Delphi に多くのコンポーネント類をインストール (登録) していると,それら全てのコンポーネント類を,新しいバージョンの Delphi に登録するのは結構面倒です.
    以下は,パッケージのソースコードを編集して,コンポーネントをまとめて登録する方法です.


    [備考]
    Delphi の再インストールをする時のことを考えて,dclusr.dpk のバックアップファイルを作成しておいて,別の場所に保存しておくと便利です.


    リスト1
    Delphi XE4(UP1) インストール直後の dclusr.dpk の内容
    package dclusr;
    
    {$R *.res}
    {$IFDEF IMPLICITBUILDING This IFDEF should not be used by users}
    {$ALIGN 8}
    {$ASSERTIONS ON}
    {$BOOLEVAL OFF}
    {$DEBUGINFO OFF}
    {$EXTENDEDSYNTAX ON}
    {$IMPORTEDDATA ON}
    {$IOCHECKS ON}
    {$LOCALSYMBOLS OFF}
    {$LONGSTRINGS ON}
    {$OPENSTRINGS ON}
    {$OPTIMIZATION ON}
    {$OVERFLOWCHECKS OFF}
    {$RANGECHECKS OFF}
    {$REFERENCEINFO ON}
    {$SAFEDIVIDE OFF}
    {$STACKFRAMES OFF}
    {$TYPEDADDRESS OFF}
    {$VARSTRINGCHECKS ON}
    {$WRITEABLECONST ON}
    {$MINENUMSIZE 1}
    {$IMAGEBASE $51000000}
    {$DEFINE DEBUG}
    {$ENDIF IMPLICITBUILDING}
    {$DESCRIPTION 'CodeGear User Components'}
    {$LIBSUFFIX '180'}
    {$DESIGNONLY}
    {$IMPLICITBUILD ON}
    
    requires
      rtl,
      vcl,
      designide;
    
    end.


    筆者の場合,コンポーネント,ユニット類,全て特定の同じフォルダに格納し,全ての Delphi のバージョンで共有して使用しています.そして,パッケージで提供されているコンポーネント類以外は,全て同じパッケージに登録しています.具体的にはユーザパッケージ (dclusr.dpk) です.

    今回,Delphi XE4(UP1) をインストールし,以下の手順でコンポーネント類を登録しました.
    Delphi XE4 のユーザパッケージ名は dclusr.dpk で,コンパイル済み名は dclusr180.bpl です.
    • (1) Delphi XE4 を起動
    • (2) [ファイル] [新規作成] [VCL フォームアプリケーション] にする
    • (3) [ツール] [オプション] でコンポーネントを格納しているフォルダにパスを通す
    • (4) [ファイル] [開く] で dclusr.dpk を開き,ソースを表示する
    • (5) 古いバージョンの dclusr.dpk をテキストエディタで開く
    • (6) この古いバージョンの dclusr.dpk のリソース部分 {$R ...} と contains 部分をコピーして,Delphi XE4 の dclusr.dpk のソースコードの該当部分に貼り付ける
    • (7) Delphi XE4 の dclusr.dpk をインストールし,上書き保存
    • (8) インストールの際にエラーが発生したら,該当部分を修正し,ビルドして上書き保存

    これで,全てのコンポーネント類を同時にパッケージに登録しました.
    [タイプライブラリの取り込み] 等で作成したユニット類は,Delphi XE4 の該当部分,これはデフォルトでは Imports フォルダです.ここにコピーし,Delphi XE4 の dclusr.dpk の該当ソースのパス名を編集しておきます.

    パッケージのインストールまたはビルドの際に,下図のダイアログが表示されたら,[OK] をクリックして閉じます.
    実際には,コンポーネントのインストール等の記事を書く都合上,それらの動作を個別に確認した後で上記の作業を行っています.



    図16
    追加パッケージ類

    一度 Delphi XE4 の IDE を閉じて,再度起動し,[表示] [ツールバー] で [コンポーネント] をチェックしました.下図のように,コンポーネントパレットにコンポーネントが登録されたことを確認しました.

    • 図17
    • [plXRAY] に登録されたコンポーネント群
    • 1 つづつ登録しないで,dclusr.dpk を編集して,一気に登録




    .dpk ファイルをテキストエディタで編集する際の注意


    パッケージファイル (.dpk ファイル) は,テキストエディタで編集することもできます.
    その場合,Windows Vista 以降では,テキストエディタを管理者権限で実行します.そうしないと,編集結果が保存できなかったり,IDE で編集した結果も表示できない場合があります.
    たとえ編集結果が保存できなくても,Windows Viata 以降では,必ずしもアクセス拒否等のエラーが発生するとは限りません.

    テキストエディタを一般ユーザで起動して .dpk ファイルを編集して保存する際,アクセス拒否のエラーが発生しない場合,そのファイルは,別の場所に保存されます.
    この現象は,Windows Vista で実装されたファイルの仮想化によるものです.例えば Delphi XE の場合は,以下の場所に保存されます.

    このことは,.dpk ファイルだけではなく,システム関係のフォルダや,Program Files フォルダにあるファイルを操作する際の一般的な注意事項です.


    C:\Users\アカウント名\AppData\Local\VirtualStore\Program Files (x86)\Embarcadero\RAD Studio\8.0\lib\win32\release\dclusr.dpk"