仅当安装中断或错误完成时,如何对自定义操作进行排序?
是否有任何 Windows 安装程序属性返回当前安装状态(失败/成功)?
仅当安装中断或错误完成时,如何对自定义操作进行排序?
是否有任何 Windows 安装程序属性返回当前安装状态(失败/成功)?
元素的OnExit
属性<Custom>
就是您要查找的内容。Before
它与、After
和属性互斥,Sequence
可以有以下值:success
、cancel
、error
、suspend
。
更新:基本上,这就是我的意思:
1)定义一个自定义操作,它将完成您希望它完成的工作(收集一些失败数据)。请注意,您必须定义 N 个指向同一目标的自定义操作,因为CustomAction MSI 表需要Id
作为主键(假设它是 DLL CA):
<CustomAction Id="LogFailureOnCancel" BinaryKey="CustomActions" DllEntry="LogFailure" ... />
<CustomAction Id="LogFailureOnError" BinaryKey="CustomActions" DllEntry="LogFailure" ... />
注意:两个定义都指向相同的实际操作(DllEntry
属性)。
2) 适当安排这些自定义操作:
<Custom Action="LogFailureOnCancel" OnExit="cancel" />
<Custom Action="LogFailureOnError" OnExit="error" />
在 Windows Installer 允许的范围内,这仅在计划回滚的自定义操作期间才有可能。但是回滚仅适用于延迟脚本,因此它仅适用于在 InstallInitialize 和 InstallFinalize 之间安排的操作。如果此调度窗口之外的立即模式操作导致安装中止,则不应用回滚。
假设您正在使用 C++ 或 InstallScript 操作,您可以通过调用MsiGetMode来确定是否启用了回滚,以及是否处于回滚状态- 分别使用MSIRUNMODE_ROLLBACKENABLED
或MSIRUNMODE_ROLLBACK
。