【问题标题】:Error Getting Property获取属性时出错
【发布时间】:2013-03-27 17:23:36
【问题描述】:

所以.. 我有这个 CA

<CustomAction Id="InstallSetProp" Property="CustomActionData" Value="<some other data that's formatted exactly the same> /webconftmploc="[WEBCONFIGTMPLOC]"" />

但是,当调用此 CA 时,会显示一个消息框,显示“错误获取属性”,这是虚假的,因为该属性已正确设置并且以后可以访问。 (除了搞乱我完全自动化安装的尝试之外什么都不做)我正在通过一个引导程序运行 .msi,该引导程序切换 /qr 来帮助解决这个问题。

删除/webconftmploc="[WEBCONFIGTMPLOC]" 时不会显示消息框错误,因为记录[WEBCONFIGTMPLOC] 是绝对文件路径或“未设置”,我想知道是否有任何特殊原因导致此行为发生。

不过,当然,我对任何可能的方式来抑制或修复此操作更感兴趣。

【问题讨论】:

  • 事实证明,错误消息来自另一个共享<some other data that's formatted exactly the same> 并且无法识别其后的额外属性的 CA。幸运的是,似乎您可以按照 Rob 的帖子所述传递变量,同时仍然可以访问 CustomActionData 中的“共享”变量 - 不过不确定这是否是最佳实践。

标签: wix wix2


【解决方案1】:

CustomAction 只设置了一个属性。它不可能显示错误消息。如果没有定义任何属性,它们只会解析为空白。必须有其他东西显示错误消息。

但是,由于您使用了特别命名的 CustomActionData,您似乎正试图将数据传递给延迟的自定义操作。不过,这并不是使用CustomActionData 的方式。相反,Property 属性应该设置为您也想传递数据的CustomActionId。假设使用该属性值的自定义操作类似于:

<CustomAction Id='MyDeferredCustomAction' Execute='deferred' ... />

要将您尝试发送的字符串传递给它,您可以这样写:

<CustomAction Id="InstallSetProp"
              Property="MyDeferredCustomAction"
              Value="<some other data that's formatted exactly the same> /webconftmploc=&quot;[WEBCONFIGTMPLOC]&quot;" />

请注意,第二个自定义操作正在设置一个与延迟自定义操作同名的属性:MyDeferredCustomActionMyDeferredCustomAction 可以通过神奇的CustomActionData 属性访问值&lt;some other data that's formatted exactly the same&gt; /webconftmploc="value_of_WEBCONFIGIMPLOC_goes_here"。你可以在这里阅读更多信息:http://msdn.microsoft.com/en-US/library/2w2fhwzz(v=VS.80).aspx

【讨论】:

  • 我发誓 WiX 标签应该只解析你的名字,Rob。 :)
  • 不,还有很多其他人在 WiX 工具集上做得非常出色。我很高兴成为他们中的一员。 :)
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-08-18
  • 1970-01-01
  • 2013-12-01
  • 2017-11-29
相关资源
最近更新 更多