3

仅当安装中断或错误完成时,如何对自定义操作进行排序?

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

4

2 回答 2

7

元素的OnExit属性<Custom>就是您要查找的内容。Before它与、After和属性互斥,Sequence可以有以下值:successcancelerrorsuspend

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

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" />
于 2012-07-17T10:32:21.197 回答
0

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

假设您正在使用 C++ 或 InstallScript 操作,您可以通过调用MsiGetMode来确定是否启用了回滚,以及是否处于回滚状态- 分别使用MSIRUNMODE_ROLLBACKENABLEDMSIRUNMODE_ROLLBACK

于 2012-07-17T12:09:52.913 回答