2017-08-07 138 views
7

在延迟(与impoersonate =否)的值发送给WIX到CA,我使用设置属性和值维克斯自定义动作的设定值,以维克斯

和使用会话在CA收集数据。 CustomActionData [ “键”];

有什么办法将数据从CA

<Property Id="RESTART" Secure="yes" Value="false" /> 

在我眼前,用发回维克斯,

session["RESTART"] = "true" 

...如何在推迟CA

实现这一目标
+0

这对我来说似乎很彻底:https://stackoverflow.com/questions/11233267/how-to-pass-customactiondata-to-a-customaction-using-wix – PhilDW

+0

我的问题是相反的,我想从CA到WIX XML – asvignesh

+0

您是否尝试将值写入注册表并从那里读取它? –

回答

4

您无法通过延迟自定义操作修改会话;那时候,MSI正在执行它的脚本,并没有会话可言。所以你不能设置一个属性。您需要一些其他机制来沟通状态。 WiX的本地库包含用于标记需要重新引导的功能WcaDeferredActionRequiresReboot以及用于在InstallFinalize之后安排的立即定制动作的WcaDidDeferredActionRequireReboot以检测重新启动状态。

1

您可以添加一个InstallFinalize即时自定义操作,该操作位于所有延迟操作之后,您可以将该软件包的(XML)“RESTART”重置为任何想要的操作,因为会话将可用再次。

+0

值重新启动是否为真只能通过该特定方法处理,无法传递值 – asvignesh

+1

您可以在延迟操作中设置CustomActionData上的值。然后,在InstallFinalize立即自定义操作从相同的CustomActionData读取此值并将其写入会话[“RESTART”]。 –

+1

否,不应使用InstallFinalize之后的立即模式自定义操作。他们当然不应该改变系统 - 不应该立即模式自定义动作,并且当静默地运行安装程序(无GUI)时它们将被完全跳过。此外,他们可能会在安装程序运行时触发权限问题(普通用户运行安装程序)。至少在几年前我尝试过时 - 我从未使用这个构造。我认为还有其他问题,目前我不记得。也许尝试按照上面所述写入注册表,然后回读。 –