ディレクトリのターゲットの場所の変更
可能であれば、ディレクトリのターゲットの場所を指定する最善の方法は、インストール パッケージに Directory テーブルを作成して、正しい場所を提供することです。 詳しくは、「ディレクトリ テーブルの使用」をご覧ください。
インストール時にディレクトリの場所を変更する必要がある場合は、次のオプションがあります。
- コマンド ラインでパブリック プロパティの値を設定して、ディレクトリの場所を指定します。 CostFinalize アクションの間に、インストーラーによって使われる内部ディレクトリ パスは、Directory テーブルにキーとして列記されているプロパティの値に更新されます。 詳しくは、「プロパティの使用」と「コマンド ラインでのパブリック プロパティ値の設定」をご覧ください。
- カスタム アクションを使って、ディレクトリの場所を指定します。 カスタム アクションが CostFinalize アクションの前に実行するようになっている場合は、カスタム アクションの種類 51 を使って、書式設定されたテキスト文字列からプロパティの値を設定できます。 カスタム アクションが CostFinalize アクションの後に実行する場合は、カスタム アクションの種類 35 を使って、書式設定されたテキスト文字列からディレクトリ パスの値を設定できます。 完全な UI と基本的な UI のインストールの両方でフォルダーが変更されるように、システム フォルダーのプロパティのいずれかを変更するカスタム アクションを、実行シーケンス テーブル (InstallExecuteSequence テーブルまたは AdminExecuteSequence テーブル) とユーザー インターフェイス シーケンス テーブル (InstallUISequence テーブルと AdminUISequence テーブル) の両方に含める必要があります。
- インストールで完全な UI が実行されている場合は、MsiSetTargetPath または SetTargetPath ControlEvent を使ってディレクトリ パスを設定できます。 MsiSetTargetPath または SetTargetPath ControlEvent を呼び出す前に、ProductState プロパティを調べて、このコンポーネントを含む製品が既にインストールされているかどうかを確認します。 そのパスを使うコンポーネントが現在のユーザーまたは別のユーザーに対して既にインストールされている場合は、ターゲット ディレクトリ パスの変更を試みないでください。
上記のすべてのオプションに、次の制限が適用されます。
- そのパスを使うコンポーネントが現在のユーザーまたは別のユーザーに対して既にインストールされている場合は、ターゲット ディレクトリ パスの変更を試みないでください。
- メンテナンス インストールの間は、ターゲット ディレクトリ パスを変更しようとしないでください。