2013-03-27 92 views
1

所以..我有这个CA错误获取属性

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

然而,当这个CA被调用时,显示一个消息框,说:“错误获取属性”,这是假的,因为财产是正确设置和以后访问。 (除了搞砸我试图完全自动化安装的事情之外,什么都不做)我通过一个启动程序运行.msi,启动/qr以帮助完成此操作。

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

但是,我更感兴趣的是任何可能的方式来抑制或修复这个动作,当然。

+0

事实证明,这个错误信息来自一个不同的CA,它共享'<一些其他格式完全相同的数据>,并且不会识别其后的额外属性。幸运的是_seems_可以像Rob的帖子所描述的那样传递变量,并且仍然可以同时访问CustomActionData中的'shared'变量 - 但不确定是否是最佳实践。 – Izzy 2013-03-28 10:44:02

回答

2

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属性访问值<some other data that's formatted exactly the same> /webconftmploc="value_of_WEBCONFIGIMPLOC_goes_here"。你可以在这里阅读更多关于这方面的信息:http://msdn.microsoft.com/en-US/library/2w2fhwzz(v=VS.80).aspx

+0

我发誓WiX标签应该解析为你的名字,Rob。 :) – Izzy 2013-03-28 08:53:20

+0

呐,还有很多其他人在WiX工具集上做出了出色的工作。我很高兴成为他们中的一员。 :) – 2013-03-28 12:22:29