在阅读了SetProperty上的页面并查看了我在此处和其他地方可以找到的尽可能多的示例之后,我仍然无法将SetProperty设置为自定义操作ID的After或Before来使用。该文档看起来很简单,而且很简单(哈!),但是我得到的是“找到一个不存在的After Action:MyWonderfulCA的ActionRow”,而不是幸福(这实际上是我想要的:)我的代码的外观表示形式:
<CustomAction Id="MyWonderfulCA" BinaryKey="MyWonderful.dll" DllEntry="MyWonderfulCA" Execute="immediate" />
<InstallExecuteSequence>
<Custom Action="MyWonderfulCA" After="LaunchConditions" />
</InstallExecuteSequence>
<Property Id="SOMEPROPERTY" />
<SetProperty Id="SOMEPROPERTY" After="MyWonderfulCA" Value="[SOMEOTHERPROPERTY]the\yellow\brick\road">WEAREHUNKYDORY</SetProperty>
所以无论如何,请救我SOF wix专家,您是我唯一的希望...
最佳答案
我不确定,但以下内容看起来可疑。<SetProperty>
(link)元素具有 Sequence
属性,该属性是可选的。如果您不指定它(例如在您发布的示例中),它将获取both
的值,这意味着custom action of type 51(即SetProperty
转换为)被调度为InstallUISequence
和InstallExecuteSequence
。
但是,据我所知,您仅将MyWonderfulCA
安排在InstallExecuteSequence
中。因此,让我认为,当WiX尝试将SetProperty
安排到InstallUISequence
中时,它找不到After
属性中指定的自定义操作,并且失败。
通过显式指定Sequence='execute'
或通过将精彩的CA安排到两个序列中来进行检查。如果是这样,则只需从这两种方法中选择最合适的方法即可。
关于wix - wix SetProperty After属性不会采取自定义操作ID,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17181719/