2016-10-19 4 views
0

У меня есть построить инсталлятор с помощью InstallShield 2016 годаInstallshield VBscribt ExitCode не прерывание деинсталляции

У меня есть VB скрипт (работает в пользовательских действиях), который проверяет, является ли база данных пусты, и когда она, деинсталляция может принять мест.

Настройки пользовательского действия являются:

  • Возврат Обработка: Синхронный (проверьте код выхода)
  • В-сценарии исполнения: Немедленное выполнение
  • Выполнение расписания: Всегда выполнять
  • Установка Exec Последовательность: после InstallValidate
  • Установить Exec Условие: УДАЛИТЬ = "ВСЕ"

Обычай действие со сценарием работает и поле Message отображается, но программа установки игнорирует ExitCode = 3.

В.Б. Сценарий:

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 

Спасибо заранее.

+0

Вы не указали свой [Игнорировать код ошибки] (http://helpnet.flexerasoftware.com/isxhelp22/helplibrary/CA_Settings-VBS.htm#ref-views_2820697808_1095910). Так что это, вероятно, неправильно. –

+0

Этот параметр обычно используется в «Обратной обработке». Теперь он настроен на «Синхронный (Проверить код выхода). Другой вариант -« Синхронный (Игнорирует код выхода) ». –

ответ

0

вам необходимо выбрать тип действия, хранящийся в двоичной таблице

Таким образом, вы будете в состоянии заставить выполнение одной функции, а не весь сценарий.