1

installShield 2012 で、マネージド メソッドを呼び出す遅延/システム コンテキスト カスタム アクションを作成しました。このアセンブリはバイナリ テーブルに格納されますが、必要に応じて製品と共にインストールされるように変更できます。次の目的で、パラメーターをマネージド メソッドに渡したいと考えています。

1) パブリック プロパティの値を取得する

2) おそらく Windows インストーラーのログ ファイルに書き込みます。

私はこの記事をガイダンスとして使用してきましたが、あいまいすぎてあまり役に立たないと思います (または単に理解していないだけです)。デフォルトのメソッド シグネチャと独自のメソッド シグネチャの両方を試しました。デフォルトを使用すると実際に何が起こるかは明確ではありません..たとえば、msihandle パラメーターを使用してメソッドを呼び出すと言われていますが、マネージ コードでその msihandle を取得し、それを使用して何か役立つことを行うにはどうすればよいでしょうか??

私の検索が欠落しているという良い例はありますか? プロパティ値のような単純なものを取得できない場合、マネージ カスタム アクションを使用してもほとんど意味がありません。

4

2 に答える 2

2

ドキュメントマネージ カスタム アクション サンプルは、InstallShield のマネージ コード カスタム アクション サポートのほとんどの使用法をカバーしています。これと関連するサンプル コードはSamples\WindowsInstaller\Managed Custom Actions、InstallShield インストールのサブフォルダーにあります。

を直接使用する場合MSIHANDLEは、非カスタム シグネチャを使用し、関数のパラメーターを宣言し、、UInt32などの呼び出しに P/Invokes を宣言して、これらの P/Invokes にハンドルを渡します。availableを使用して P/Invokes を提供する場合は、Managed Custom Action Sample もこれに対応しています。に示すヘルパー クラスの使用例を含みます。MsiGetPropertyMsiProcessMessageUInt32InstallShield.Interop.MsiCustomActionHandleMsiWrapper.cs

カスタム シグネチャ サポートを使用したい場合は、関数に渡すプロパティごとに文字列パラメーターを作成し、各位置で渡すプロパティを指定するだけです。この場合、MsiHandle も渡さない限り、ログ ファイルに書き込むことはできません。

于 2013-10-25T21:40:12.830 に答える