安装失败后的自定义操作

时间:2012-07-17 08:42:24

标签: wix windows-installer installshield custom-action

如果仅在安装中断或错误完成时才自动执行自定义操作?

是否有任何Windows安装程序属性返回当前安装状态(失败/成功)?

2 个答案:

答案 0 :(得分:7)

<Custom>元素的OnExit属性是您正在寻找的。它与BeforeAfterSequence属性互斥,并且可以包含以下值:successcancelerror,{ {1}}。

更新:基本上,这就是我的意思:

1)定义一个自定义操作,它将执行您希望的工作(收集一些故障数据)。请注意,您必须定义指向同一目标的N个自定义操作,因为CustomAction MSI table期望suspend作为主键(让我们假设它是DLL CA):

Id

注意:这两个定义都指向相同的真实操作(<CustomAction Id="LogFailureOnCancel" BinaryKey="CustomActions" DllEntry="LogFailure" ... /> <CustomAction Id="LogFailureOnError" BinaryKey="CustomActions" DllEntry="LogFailure" ... /> 属性)。

2)适当地安排这些自定义操作:

DllEntry

答案 1 :(得分:0)

在Windows Installer允许的范围内,只有在为回滚计划的自定义操作期间才可以执行此操作。但是,回滚仅适用于延迟脚本,因此它仅适用于在InstallInitialize和InstallFinalize之间安排的操作。如果此调度窗口之外的立即模式操作导致安装中止,则回滚不适用。

假设您正在使用C ++或InstallScript操作,您可以查看是否已启用回滚,如果您正在回滚,则调用MsiGetMode - 使用MSIRUNMODE_ROLLBACKENABLED或{{1分别。