1

関連: DTF (マネージド カスタム アクション) からの InstallShield "サポート ファイル" へのアクセス

プロパティSUPPORTDIRを読み取る必要があります。このフォーラム ( http://community.flexerasoftware.com/showthread.php?t=180742&page=3 ) によると、MsiGetProperty を使用する必要があります。

DTF から MsiGetProperty を呼び出すにはどうすればよいですか?

4

2 に答える 2

2

DTF の Session クラスには次のメソッドがあります。

public string this[文字列プロパティ] get: set:

これは、MsiGetProperty と MsiSetProperty を呼び出すアンマネージ C++ 側にリモートで渡されます。これは、VBScript の Session.Property("SUPPORTDIR") のようなもので、単純なだけです。

InstallShield は、ISSetupFilesExtract と呼ばれるカスタム アクションをスケジュールする必要があります。インストールをログに記録し、実行中かどうか、およびプロパティへのパスを割り当てているかどうかを確認します。

私が考えることができる唯一の他の落とし穴は、UI を昇格させずに実行シーケンスを昇格させるという適切な UAC ストーリーを実行している場合、SUPPORTDIR が SecureCustomProperties プロパティにリストされていることを確認することです。UI シーケンスで値を取得する「セキュア」プロパティのみが実行シーケンスに引き継がれます。「PUBLIC」プロパティは、デフォルトで、インストーラーが実行を開始したときの状態に戻ります。

DTF カスタム アクションで SUPPORTDIR を (直接、場合によっては CustomActionData シリアル化を介して) 使用しており、問題はありません。

于 2011-01-13T13:51:35.320 に答える
0

私のコメントからの情報を複製して、DTF (マネージド カスタム アクション) からの InstallShield "サポート ファイル" へのアクセスに拡張するには:

DTFのカスタムアクションには、Sessionクラスのオブジェクトが渡されます。session["SUPPORTDIR"] を使用して、プロパティ値にアクセスします (即時アクション用)。遅延アクションの場合は、CustomActionData を介して渡す必要があります。また、即時 CA の場合、CostFinalize の後に SUPPORTDIR を読み取るアクションをスケジュールしたことを確認してください。これは、ディレクトリ テーブルのすべてのエントリがプロパティとしてアクセス可能になる時点です。

于 2011-01-13T10:05:26.067 に答える