Installshield VBscribt ExitCode不会中止卸载

时间:2016-10-19 15:47:39

标签: vb.net installshield

我使用installshield 2016构建了一个安装程序。

我有一个VB脚本(在自定义操作中运行),用于检查数据库是否为空,如果是,则可以进行卸载。

自定义操作的设置为:

  • 退货处理:同步(检查退出代码)
  • 脚本内执行:立即执行
  • 执行计划:始终执行
  • 安装执行顺序:在InstallValidate之后
  • 安装执行条件:REMOVE =" ALL"

运行脚本的自定义操作并显示消息框,但安装程序忽略Exitcode = 3.

VB脚本:

Function CheckService()
    On Error Resume Next

    Set objConnection = CreateObject("ADODB.Connection")
    DB_CONNECT_STRING = "Provider=SQLOLEDB.1;Data Source=localhost;Trusted_Connection=Yes;"

    objConnection.Open DB_CONNECT_STRING

    set rs = objConnection.Execute("SELECT COUNT(*) as cnt FROM master.dbo.sysdatabases WHERE name = 'MonitoringConfiguration'")

    if not rs.EOF then
      recordsCount = cint(rs("cnt"))
    end if

    objConnection.Close

    if recordsCount = 0 then
        CheckService = 1
        Exit Function
    end if

    DB_CONNECT_STRING = "Provider=SQLOLEDB.1;Data Source=localhost;Initial Catalog=MonitoringConfiguration;Trusted_Connection=Yes;"

    objConnection.Open DB_CONNECT_STRING

    set rs = objConnection.Execute("SELECT COUNT(*) as cnt from ServerSettings")

    if not rs.EOF then
      recordsCount = cint(rs("cnt"))
    end if

    objConnection.Close

    if recordsCount <> 0 then
        x=MsgBox("There are still monitoring services deployed. Please remove them first before remvoing System Monitoring",0,"Unable to Uninstall application")
        CheckService = 3
        Exit Function
    else
        CheckService = 1
        Exit Function
    end if

End Function

提前谢谢你。

1 个答案:

答案 0 :(得分:0)

您需要选择存储在二进制表

中的操作类型

这样你就可以强制执行单个函数而不是整个脚本。