ディレクトリ テーブルの使用
ディレクトリ テーブルは、インストールのレイアウトを指定します。 CostFinalize アクション中にディレクトリが解決されると、ディレクトリ テーブルのキーはディレクトリ パスに設定されたプロパティになります。 インストーラーは、システム フォルダー パスに多数の標準プロパティを設定することに注意してください。 システム フォルダーに設定されているプロパティの一覧については、「プロパティ リファレンス」を参照してください。
ディレクトリのターゲットの場所を指定する最善の方法は、このセクションで説明するように、インストール パッケージでディレクトリ テーブルを作成して、適切な場所を指定することです。 インストール時にディレクトリの場所を変更する必要がある場合は、「ディレクトリのターゲットの場所を変更する」セクションも参照してください。
ディレクトリ テーブルの例を次に示します。
ディレクトリ | Directory_Parent | DefaultDir |
---|---|---|
TARGETDIR | SourceDir | |
EXEDIR | TARGETDIR | アプリ |
DLLDIR | EXEDIR | ビン |
DesktopFolder | TARGETDIR | デスクトップ |
ディレクトリ テーブルの各行は、ソースとターゲットの両方のディレクトリを示します。 たとえば、インストール パッケージが \\applications\source\ にあるとします。 最初の行の Directory_Parent フィールドが Null であるため、このレコードはソースとターゲットの両方のルート ディレクトリを示します。 ソースの場合、このディレクトリの値は DefaultDir フィールドによって指定されます。 SourceDir プロパティの既定値は、インストール パッケージの場所です。 したがって、SourceDir プロパティがオーバーライドされない限り、ルート ソース ディレクトリは \\applications\source\ になります。
最初のレコードの Directory フィールドは、ルート ターゲット ディレクトリの場所を示します。 この場合、TARGETDIR プロパティの値は、このディレクトリを示します。 通常、TARGETDIR プロパティの値は、コマンド ラインまたはユーザー インターフェイスを使用して設定されます。 この場合、TARGETDIR プロパティが C:\Program Files\Target\ に設定されているとします。
2 番目のレコードの場合、Directory_Parent フィールドは Null ではありません。 したがって、このレコードは、ソースとターゲットの両方の非ルート ディレクトリを示します。 非ルート ソース ディレクトリの場合、Directory_Parent フィールドに記述されているレコードで示されるソース ディレクトリが親ディレクトリになります。 2 番目のレコードの場合、Directory_Parent フィールドは TARGETDIR です。 前に示したように、TARGETDIR レコードで示されたソース ディレクトリは \\applications\source\ に解決されました。 したがって、2 番目のレコードで示されるソース ディレクトリは \\applications\source\App\ です。
同様のプロセスがターゲット ディレクトリに対して機能します。 2 番目のレコードで説明されているターゲット ディレクトリの親ディレクトリの値は、Directory_Parent フィールドによって解決されるターゲット ディレクトリです。 ここでも、Directory_Parent フィールドには TARGETDIR という値が含まれます。 これは、C:\Program Files\Target\ のターゲット ディレクトリに解決される最初のレコードを示します。 Directory フィールドには、EXEDIR という作成者定義のプロパティが含まれています。 このプロパティが設定されている場合、その値はディレクトリの完全なパスを示します。 したがって、このプロパティが C:\Data\Common\ に設定されている場合、2 番目のレコードによって示されるターゲット ディレクトリの値は C:\Data\Common\ になります。 設定されていない場合、ターゲット ディレクトリは DefaultDir フィールドによって指定された名前を受け取ります。 この場合、ターゲット ディレクトリは C:\Program Files\Target\App\ です。
3 番目のレコードでも同じプロセスが機能します。 EXEDIR と DLLDIR が設定されていない場合、ターゲット ディレクトリは C:\Program Files\Target\App\Bin で、ソース ディレクトリは \\applications\source\App\Bin\ です。
4 番目のレコードでは DesktopFolder プロパティを使用します。 ユーザーのデスクトップの場所が C:\Winnt\Profiles\User\Desktop\ の場合、ターゲット ディレクトリは C:\Winnt\Profiles\User\Desktop\ に解決されます。 ソース ディレクトリは \\applications\source\Desktop\ に解決されます。
Directory テーブルの DefaultDir 列で使用できる追加の構文機能が 2 つあります。 非ルート ソース ディレクトリの場合、DefaultDir 列に入力されたピリオド (.) は、ディレクトリがサブディレクトリなしで親ディレクトリに配置される必要があることを示します。 異なるソース ディレクトリ パスとターゲット ディレクトリ パスを指定するには、[targetpath]:[sourcepath] のように、DefaultDir 列のターゲット パスとソース パスをコロンで区切ります。 これらの機能を組み合わせて使用すると、1 つのディレクトリのソース パスまたはターゲット パスにレベルを追加できます。 Directory テーブルの次の例を参照してください。
ディレクトリ | Directory_Parent | DefaultDir |
---|---|---|
TARGETDIR | SourceDir | |
MyAppDir | TARGETDIR | MyApp |
BinDir | MyAppDir | ビン |
Binx86Dir | BinDir | .:x86 |
BinAlphaDir | BinDir | .:Alpha |
MyAppDir、BinDir、Binx86Dir、および BinAlphaDir 行のソース パスとターゲット パスは、次のように解決されます。
レコード | ターゲット パス | ソース パス |
---|---|---|
MyAppDir: | [TARGETDIR]MyApp | [SourceDir]MyApp |
BinDir: | [TARGETDIR]MyApp\Bin | [SourceDir]MyApp\Bin |
Binx86Dir: | [TARGETDIR]MyApp\Bin | [SourceDir]MyApp\Bin\x86 |
BinAlphaDir: | [TARGETDIR]MyApp\Bin | [SourceDir]MyApp\Bin\Alpha |
Note
Alpha プラットフォームは、Windows インストーラーではサポートされていません。