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

rea*_*pen 4 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> 
Run Code Online (Sandbox Code Playgroud)

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

"Product:*"部分中未解决的符号'WixAction:InstallUISequence/Next'的引用.

如何解决是个问题,任何人都可以帮助我点击Next Button后如何调用CustomAction.

Yan*_*nko 8

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

请按照以下步骤操作:

  • 创建自定义操作.它必须是immediate(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>
Run Code Online (Sandbox Code Playgroud)

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

<CustomAction Id="WixUIPrintEula" BinaryKey="WixUIWixca" DllEntry="PrintEula" Return="ignore" Execute="immediate" />
Run Code Online (Sandbox Code Playgroud)

希望这可以帮助.