InstallFiles アクション
InstallFiles アクションは、ファイル テーブルで指定されたファイルをソース ディレクトリからコピー先ディレクトリにコピーします。
シーケンスの制限
InstallFiles アクションは、InstallValidate アクションの後、およびファイルに依存するアクションの前に行う必要があります。
ActionData のメッセージ
フィールド | アクション データの説明 |
---|---|
[1] | インストールされているファイルの識別子。 |
[6] | インストール対象のファイルのサイズ (バイト単位)。 |
[9] | インストールされているファイルを保持しているディレクトリの識別子。 |
解説
InstallFiles アクションは、ファイル テーブルで指定されたファイルに対して動作します。 各ファイルは、コンポーネント テーブル内のファイルに関連付けられているコンポーネントのインストール状態に基づいてインストールされます。 コンポーネントが msiInstallStatelocal 状態に解決済みのファイルのみがコピーの対象となります。
InstallFiles アクションは、ファイル テーブルの次の列を実装します。
- [FileName] 列は、ターゲット ファイル名を指定します。
- [Version] 列は、ファイルのバージョンを指定します。
- [Attributes] 列は、ファイルおよびインストール属性フラグ ビットを指定します。
- [File] 列は、一意のファイル トークンを指定します。
- [FileSize] 列は、圧縮されていないファイル サイズをバイト単位で指定します。
- [Language] 列は、ファイル言語識別子を指定します。
- [Sequence] 列は、メディアのシーケンス番号を指定します。
InstallFiles アクションは、コンポーネント テーブルの次の列を実装します。
- [Directory_] 列は、ディレクトリ テーブル項目への参照を指定します。
- [Component] 列は、コンポーネント項目の一意の名前を指定します。
指定されたファイルは、次のいずれか 1 つに当てはまる場合にのみコピーされます。
- ファイルが現在ローカル コンピューターにインストールされていない。
- ファイルはローカル コンピューター上にあるが、ファイル テーブルのファイルよりも小さいバージョン番号である。
- ファイルはローカル コンピューター上にあるが、関連付けられているバージョン番号はない。
コピーする各ファイルのソース ディレクトリは sourceMode によって決まります。これは、メディア テーブルの [Cabinet] 列の値によって異なります。 ソース モードの詳細については、「メディア テーブル」をご覧ください。
コピーするファイルのソース ディレクトリがフロッピー ディスクや CD-ROM などのリムーバブル メディアに存在する場合、InstallFiles アクションでは、ファイルのコピーを試みる前に、適切なソース メディアが挿入されていることが確認されます。 InstallFiles により、メディア テーブルの [VolumeLabel] 列に指定された値と一致する "ボリューム" ラベルを持つ同じリムーバブル型のメディアが検索されます。 一致するマウント済みのボリュームが見つかった場合は、ファイルのコピー処理が続行されます。 一致するものが見つからない場合、ダイアログ ボックスはユーザーに適切なメディアの挿入を要求します。 この場合、ダイアログ ボックスでは、プロンプトの一部としてメディア テーブルの [DiskPrompt] 列にあるメディア名が使用されます。
InstallFiles アクションにより、元のファイルが削除され置き換えられないことがあるため、注意が必要です。 これは、InstallFiles アクションにより古いファイルが置き換えられる際にエラーが発生し、ユーザーがエラーを無視することを選択した場合に発生します。 インストーラーの既定の動作では、新しいファイルが正しくコピーされるようにする前に、古いファイルが削除されます。
インストーラーで使用されるファイルのバージョン管理規則については、「ファイルのバージョン管理規則」をご覧ください。