如何从延迟的CustomAction(c ++ dll)

时间:2018-01-26 10:21:02

标签: c++ wix deferred custom-action

我有一个WiX安装程序,它在c ++ dll中运行extern函数作为自定义操作(Execute="deferred")。我通过设置属性将所需的属性值传递给它,该属性的名称与CustomAction的ID相同( custActID 在下面的示例中)。

<CustomAction Id="SetOutputProperty" Property="custActID"
          Value="ONE=[ONE];TWO=[TWO];THREE=[THREE];" />
<CustomAction Id="custActID"
          BinaryKey="BIN_NWCONFIGDLL"
          DllEntry="dllEntryFunction"
          Impersonate="no"
          Execute="deferred"
          Return="check" 
          HideTarget='yes' />

然后我可以使用:

获取c ++ dll中的所有数据
 MsiGetProperty(hInstall, "CustomActionData")

我的问题是否可以通过此dll在WIX中设置一些属性

所以: 我有这个问题,请在Wix中说THREE。我将它传递给dll。 Dll将从用户那里获取一些数据(如果他们正确的话,以某种特殊方式验证它们)并最终更新此rproperty THREE。我想把它传回给WIX。

1 个答案:

答案 0 :(得分:2)

不,延迟的自定义操作无法设置属性。运行延迟自定义操作时,已设置自定义操作数据,因此自定义操作不会影响传递给以后自定义操作的数据。