【问题标题】:Installshield VBscribt ExitCode not aborting uninstallInstallshield VBscrit ExitCode 未中止卸载
【发布时间】:2023-03-23 21:14:01
【问题描述】:

我已经使用 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

提前谢谢你。

【问题讨论】:

  • 您没有提及您的Ignore Error Code 选择。所以很可能是错的。
  • 这个选项通常在“退货处理”中。现在它设置为“同步(检查退出代码)。另一个选项是“同步(忽略退出代码)。

标签: vb.net installshield


【解决方案1】:

您需要选择存储在二进制表中的动作类型

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

【讨论】:

    猜你喜欢
    • 2011-02-24
    • 1970-01-01
    • 2023-04-09
    • 2012-01-27
    • 2012-02-12
    • 1970-01-01
    • 1970-01-01
    • 2013-12-10
    • 1970-01-01
    相关资源
    最近更新 更多