2017-03-01 9 views
0

InstallShield 2016のWIX DTFカスタムアクションdllで関数を使用しようとしています。このプロセスは、 "Managed Code"タイプのカスタムアクションで遅延カスタムアクションを実行するのと同じです。 DTFアクセスの場合、「新しいMSI DLL」タイプのカスタムアクションを作成する必要があります。カスタムアクションのプロパティ名は、参照されるカスタムアクションdllの関数の名前と一致する必要があります。一致しない場合、CustomActionDataは空になります。InstallShield - C#WIX DTFカスタムアクションdllのCustomActionDataへのアクセス

いずれかのカスタムアクションタイプでは、最初にCustomActionDataの値を設定する「プロパティ設定」アクションを実行する必要があります。次に、カスタムアクションに関連付けられた関数が実行され、以前にCustomActionDataで設定された値が取得されます。

私のプロパティとmy関数は同じ名前(SetRegionalServerUrl)を持ち、カスタムアクションの機能がその内容を読み込もうとするとCustomActionDataは空です。

"管理コード"タイプのカスタムアクションdllを使用するとうまくいくので、誰かが試してみるべきことを示唆したり、迷っているものを指摘したりすることができます。

ありがとうございました。

+0

FYI、私は関数からSession.Log()呼び出しを行うことができ、MSIログはそのsession.CustomActionData.Keys.Count = 0を示しています。 – Vince

答えて

0

遅延コンテキストでアクションを実行すると、通常の変数は使用できません。あなたはCustomActionDataにそれらのすべてをラップする必要があります。 http://helpnet.flexerasoftware.com/isxhelp22/helplibrary/ActionExecutionOptions.htm

は何がしたいことは、あなたの実際の行動でそれを解析し、その後元のプロパティの照合に等しくなるようにCustomActionDataを定義しています。

+0

返信ありがとう....私はこれを述べました遅延アクションであり、この遅延アクションの直前に「セットプロパティ」カスタムアクションを呼び出します。私の理解では、これは、遅延カスタムアクションに関連付けられている関数からアクセスできるようにCustomActionDataを設定することです。これも、「管理コード」タイプのカスタムアクションではうまく動作しますが、WIX DTFカスタムアクションDLLを呼び出すカスタムアクションの「新しいmsi」タイプでは機能しません。後者のために必要なものがあれば、私はあなたが提供できる情報を感謝します。 – Vince

+0

CustomActionDataがまだ定義されておらず、プロパティ値を設定する前に宣言する必要があると思われるかもしれませんか?これは私が読んだことすべてを矛盾させるので、私はあなたが意味していたことを誤解していると思います。 – Vince

関連する問題