如果仅在安装中断或错误完成时才自动执行自定义操作?
是否有任何Windows安装程序属性返回当前安装状态(失败/成功)?
答案 0 :(得分:7)
<Custom>
元素的OnExit
属性是您正在寻找的。它与Before
,After
和Sequence
属性互斥,并且可以包含以下值:success
,cancel
,error
,{ {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分别。