【问题标题】:How to set WiX property from deferred CustomAction (c++ dll)如何从延迟的 CustomAction 设置 WiX 属性(c++ dll)
【发布时间】:2019-08-08 19:17:51
【问题描述】:

我有一个 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_MY_DLL"
          DllEntry="dllEntryFunction"
          Impersonate="no"
          Execute="deferred"
          Return="check" 
          HideTarget='yes' />

然后我可以使用以下方法获取 c++ dll 中的所有数据:

 MsiGetProperty(hInstall, "CustomActionData")

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

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

【问题讨论】:

  • 您可以发挥创意并将所需的值存储在临时文件或易失性注册表项中,因为您的延迟操作具有提升。但是,如果不是完全必要的话,这可能应该避免。

标签: c++ wix deferred custom-action


【解决方案1】:

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

【讨论】:

    猜你喜欢
    • 2010-11-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-04-27
    • 1970-01-01
    • 2019-03-19
    相关资源
    最近更新 更多