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 アクションにより古いファイルが置き換えられる際にエラーが発生し、ユーザーがエラーを無視することを選択した場合に発生します。 インストーラーの既定の動作では、新しいファイルが正しくコピーされるようにする前に、古いファイルが削除されます。

インストーラーで使用されるファイルのバージョン管理規則については、「ファイルのバージョン管理規則」をご覧ください。