JScript 和 VBScript 自定义操作的返回值

用 JScript 或 Visual Basic、Scripting Edition (VBScript) 编写的自定义操作可以调用可选函数。 这些函数必须返回下表中显示的值之一。

返回值 说明
msiDoActionStatusNoAction 0 未执行操作。
msiDoActionStatusSuccess IDOK = 1 操作已成功完成。
msiDoActionStatusUserExit IDCANCEL = 2 用户过早终止。
msiDoActionStatusFailure IDABORT = 3 无法恢复的错误。 如果在分析或执行 JScript 或 VBScript 期间出错,则返回。
msiDoActionStatusSuspend IDRETRY = 4 挂起的序列,稍后恢复。
msiDoActionStatusFinished IDIGNORE = 5 跳过剩余的操作。 不属于错误。

 

请注意,Windows Installer 在将返回值写入日志文件时,会转换所有操作的返回值。 例如,如果操作返回值在日志文件中显示为 1(一),则表示操作返回了 msiDoActionStatusSuccess。 有关此转换的详细信息,请参阅操作返回值的日志记录

若要从脚本自定义操作返回成功以外的值,必须为自定义操作使用函数目标。 目标函数可在 CustomAction 表的 Target 列中指定。

以下脚本示例演示了如何从 VBScript 自定义操作返回成功或失败。

Function MyVBScriptCA()

    If Session.Property("CustomErrorStatus") <> "0" Then
        'return error
        MyVBScriptCA = 3
        Exit Function
    End If

    ' return success
    MyVBScriptCA = 1
    Exit Function

End Function

如果此 VBScript 作为 MyCA.vbs 嵌入到安装包的 Binary 表中,则脚本的 CustomAction 表条目将如下所示:

操作 类型 目标
MyCustomAction 6 MyCA.vbs MyVBScriptCA