【发布时间】: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