Завершение программы при запуске установщика, созданного с помощью InstallShield - PullRequest
1 голос
/ 20 сентября 2011

Когда исполняется InstallShield, мы запускаем отдельный установщик (до его установки), который устанавливает небольшой SQL-сервер, имеющий решающее значение для программы.К вашему сведению, SQL-сервер - это Firebird SQL.Когда пользователи переустанавливают программу, нам нужно завершить работу SQL-сервера Firebird, который работает как фоновый исполняемый файл.Мы изучили последствия принудительного завершения exe и не испытали никаких негативных последствий.

Итак, мой вопрос: как определить в InstallShield, запущена ли внешняя программа, и завершить ее, если она есть?Единственная причина, по которой я хотел бы определить, работает ли она, - это избегать любых ошибок, которые могут помешать или вызвать ошибку во время установки.Если это не проблема, мне было бы все равно, если мы определим, работает он или нет.

РЕДАКТИРОВАТЬ: Реально, мы хотим убить exe только потому, что мы переустанавливаем его.Итак, если это возможно, есть ли способ сказать InstallShield, чтобы пропустить выполнение exe, если запущен другой exe?

Ответы [ 2 ]

0 голосов
/ 21 сентября 2011

Есть 2 подхода к этой проблеме:

  1. Пропуск второго продукта (вашего SQL-сервера), если он работает. Для этого вы можете использовать настраиваемое действие, которое обнаруживает запущенный процесс и устанавливает свойство установщика в зависимости от результата. Затем свойство можно использовать для подготовки второго установщика.

  2. Второй подход состоит в том, чтобы полностью удалить, а затем переустановить второй продукт при выполнении ремонта:

    • добавить пользовательское действие, которое удаляет второй продукт
    • условие его запуска только для ремонта (используйте REINSTALL свойство)
    • запланируйте это перед пользовательским действием, которое устанавливает продукт при первой установке
    • изменить условие установки настраиваемого действия, чтобы оно также поддерживало восстановление, например:

НЕ установлен или переустановлен

0 голосов
/ 20 сентября 2011

Установите Firebird как службу, а затем воспользуйтесь таблицей ServiceControl, чтобы остановить службу. Я не могу себе представить ничего хорошего, если прекратить работу механизма SQL-сервера.

Если вы действительно хотите убить его (надеюсь, что вы копируете его в новый файл данных, чтобы не было проблем с повреждением), посмотрите на пример «Список и завершение работы запущенных приложений» на http://www.installsite.org/pages/en/isp_ext.htm

...