【发布时间】: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