foo*_*bar 0 windows-installer wix wix3 wix3.5 wix3.6
我是WiX的新手,所以我可能会问一些非常直接的事情,但我找不到很多帮助谷歌搜索它.
我想执行2个customActions,比如ca1和ca2,其中ca2的执行取决于ca1的结果,如下所示:
if ( ca1 == SUCCESS )
{
Perform ca2
}
Run Code Online (Sandbox Code Playgroud)
因此,只有当我的ca1返回成功时才会执行ca2(不会失败).
在WiX中最简单的方法是什么?
您描述的是默认值.如果自定义操作失败,则安装将中止,之后只能执行回滚操作.因此,为了使您的问题有意义,首先您必须忽略或以其他方式屏蔽您的第一个自定义操作的失败.
其次,一个动作知道另一个动作的返回结果的唯一方法是它是否通过调用MsiDoAction(或其某个包装器)来调用它.这样做会模糊自定义操作之间的界限,所以我假设这不是您描述的场景.
这将为您提供第三种也是最后一种方式:找到外部通信渠道.立即采取行动,我建议CA1设置成功后的属性(称之为MsiSetProperty或类似DTF的会话的包装[ 属性 ]),以及钙无论是读取(MsiGetProperty/MsiEvaluateCondition)或直接对着空调该属性的值.对于延迟操作,属性不会传播,因此您必须识别其他一些通道.(也许是提前选择路径的临时文件可行.)
但整个场景对于Windows Installer来说有点不寻常; 我建议避免它.也许合并您的操作,以便在冒泡回到序列之前"内部"处理任何故障情况.或者,您的行动细节可能会导致更具体的建议.
归档时间: |
|
查看次数: |
530 次 |
最近记录: |