WIXセットアップでいくつかのカスタムアクションを定義しました。これらのアクションは、アプリケーションが依存するサードパーティEXEを呼び出します。ユーザは、これらのサードパーティアプリケーションを機能ツリーからインストールするか無視するかを決定します。私のCustomActionとバイナリタグは次のようになります。WIXカスタムアクションシーケンス
<InstallExecuteSequence>
<Custom Action="NL220_Action" After="InstallFinalize"><![CDATA[(&Optional_NL220=3)]]></Custom>
<Custom Action="NIC_Action" After="NL220_Action"><![CDATA[(&Optional_NIC=3)]]></Custom>
</InstallExecuteSequence>
すべてが正常に動作します:ユーザーが実行するためにどのサードパーティのインストーラパッケージを選択することができ、これらの
<CustomAction Id='NL220_Action' BinaryKey='NL220EXE' Return='asyncWait' />
<Binary Id="NICEXE" SourceFile="..\NL220.exe" />
<CustomAction Id='NIC_Action' BinaryKey='NICEXE' Return='asyncWait' />
<Binary Id="NICEXE" SourceFile="..\NIC.exe" />
さらに、私のInstallExecuteSequenceタグは次のようになりますインストーラーの終了時に実行されます。問題は、ユーザーが両方のサードパーティインストーラを選択すると、同時に実行されるため、2番目のカスタムアクションのAfter = "NL220_Action"属性が無視されるということです。これはなぜですか?
return属性は、メインスレッドとカスタムアクションスレッドの関係を定義しています(したがって、カスタムアクションはメインスレッドと非同期で実行されます)。戻り値を「チェック」に変更したところ、期待通りに動作します。マイケルに感謝します。 – staterium