我已阅读 How do I pass msiexec properties to a WiX C# custom action? ,但这并没有回答我的问题,或者我只是不明白我做错了什么。
我的安装包安装失败,日志显示在自定义操作集合中找不到我的属性。我的代码是:
<CustomAction Id="SetCustomActionDataValue" Return="check" Property="Itp.Configurator.WixCustomAction" Value="G=G2" />
<CustomAction Id="CreateDatabase" BinaryKey="Binary1" DllEntry="CreateDatabase" Execute="deferred" Return="check" />
<InstallExecuteSequence>
<Custom Action='SetCustomActionDataValue' After="InstallFiles"/>
<Custom Action='CreateDatabase' After="SetCustomActionDataValue">
NOT Installed AND NOT PATCH
</Custom>
</InstallExecuteSequence>
自定义操作中的代码是:
string Property1 = session.CustomActionData["G"];
最佳答案
您的第一个元素中的属性名称必须与您要将值传递给的延迟自定义操作的名称完全相同。因此,如果延迟操作是 CreateDatabase,则第一个元素应如下所示:
<CustomAction Id="SetCustomActionDataValue" Return="check" Property="CreateDatabase" Value="G=G2" />
关于properties - 无法将属性传递给 WiX 自定义操作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5701274/