在下一步之后进行WIX CUSTOM ACTION CALL

时间:2013-06-21 03:44:51

标签: wix

单击“下一步”按钮时,如何调用自定义操作dll?目前我正在做的事情如下:

<CustomAction Id="TestingAction" BinaryKey="BIN_CustomAction" DllEntry="TestValue" Execute="deferred" Return="check" />
<Control Id="Next" Type="PushButton" X="236" Y="243" Width="56" Height="17" Default="yes" Text="&amp;Next"></Control>
<Custom Action="TestingAction" After="Next"></Custom> 

当我给出After ="Next"这是我的下一个按钮时,我在构建应用程序后遇到错误。

  

未解决的对符号'WixAction:InstallUISequence / Next'的引用   部分'产品:*。

如何解决问题,任何人都可以帮助我在单击“下一步按钮”后如何调用CustomAction。

1 个答案:

答案 0 :(得分:8)

您要做的是将延迟的自定义操作安排到某个序列,并在名为Next的自定义操作之后运行它,这显然不存在。您应该采用完全不同的方式在按钮单击时调用自定义操作。

请按照以下步骤操作:

  • 创建自定义操作。它必须是立即的(execute='immediate'),永远不应该改变目标系统的状态
  • 作者Control元素 - 您要触发事件的按钮
  • 最后,将Publish元素作为Control的子元素,发布DoAction事件

以下是来自WiX来源的完整示例,如何通过点击按钮打印EULA:

<Control Id="Print" Type="PushButton" X="88" Y="243" Width="56" Height="17" Text="!(loc.WixUIPrint)">
  <Publish Event="DoAction" Value="WixUIPrintEula">1</Publish>
</Control>

显然,Control元素应该是Dialog元素的子元素。 自定义操作的定义如下:

<CustomAction Id="WixUIPrintEula" BinaryKey="WixUIWixca" DllEntry="PrintEula" Return="ignore" Execute="immediate" />

希望这有帮助。