WIX自定义操作序列

时间:2011-12-22 11:46:32

标签: wix windows-installer

我在我的WIX设置中定义了一些自定义操作,这些操作调用我们的应用程序所依赖的第三方EXE。用户决定从功能树中安装或忽略这些第三方应用程序。我的CustomAction和二进制标签如下所示:

<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标记如下所示:

<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>

一切正常:用户可以选择要运行的第三方安装程序包,然后在安装程序完成时运行这些程序包。问题是,如果用户同时选择了第三方安装程序,则它们会同时运行,从而忽略第二个自定义操作的 After =“NL220_Action”属性。任何想法为什么会这样?

1 个答案:

答案 0 :(得分:2)

Custom Action Return Processing Options,asyncWait的等待发生在序列的末尾。使用此值意味着您需要操作才能成功,但您并不完全关心它何时成功。如果它在继续之前等待自定义操作完成,那么它将是同步的。如果您需要在运行第二个操作之前等待第一个操作完成,那么您需要使第一个操作同步,或者可能将两个操作组合成一个异步操作,该操作本身按顺序运行两个子操作。