在阅读了SetProperty上的页面并查看了我在这里和其他地方找到的尽可能多的示例之后,我仍然无法让我的SetProperty与After或Before设置为我的一个自定义操作ID。关于这个问题的文档似乎非常简单和直接(哈!),但是我得到了“找到一个不存在的动作后的ActionRow:MyWonderfulCA”而不是幸福(这正是我所追求的:)这里是表示我的代码是什么样的:
<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职业选手,你是我唯一的希望......
答案 0 :(得分:41)
我不确定,但以下事情看起来很可疑。
<SetProperty>
(link)元素具有 Sequence
属性,这是可选的。如果您没有指定它(就像您发布的示例中一样),则会获得both
的值,这意味着custom action of type 51(这是SetProperty
转换为的)被安排到InstallUISequence
和InstallExecuteSequence
。
但是,据我所知,您只需将MyWonderfulCA
安排到InstallExecuteSequence
。因此,我认为当WiX尝试将SetProperty
安排到InstallUISequence
时,它无法找到After
属性中指定的自定义操作并失败。
通过明确指定Sequence='execute'
或通过将精彩CA安排到两个序列来检查这一点。如果是这种情况,那么只需从这两种方法中选择最合适的方式。