4

当我单击下一步按钮时,如何调用我的自定义操作 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。

4

1 回答 1

9

您要做的是将延迟的自定义操作安排到某个序列,并在名为 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" />

希望这可以帮助。

于 2013-06-21T09:48:25.750 回答