Installshield не останавливает службу во время незначительного обновления

В моем установщике у меня есть компонент, который устанавливает службу NT. У меня проблема в том, что при незначительном обновлении служба не останавливается. Я наблюдал, как журнал генерирует installshield во время обновления, и он сообщает, что выполняет действие StopServices, и его код возврата равен 1. Я также запустил процесс хакер для регистрации событий запуска / остановки служб, но служба никогда не останавливается во время обновления. Я также проверил, что во время удаления служба остановлена, а затем удалена. Есть идеи, почему это происходит?

Я использую installshield 2008, но любой ответ, связанный с installshield, будет очень полезен.

2 ответа

Решение

В конце концов я не смог преодолеть эту проблему. Потратил несколько дней, пытаясь выяснить, что именно происходит, и не смог выяснить, почему служба не останавливается и не запускается во время незначительного обновления. Я был вынужден написать пользовательские действия, которые выполняют эти операции и использовал sc.exe для них. Это не первая неразрешимая проблема в installshield, которую я был вынужден исправить с помощью специального действия. Надеюсь, что этот ответ сэкономит кому-то несколько дней.

Это можно сделать установочным скриптом и пользовательским действием, которое его выполняет.

Пример остановки / запуска службы (я использовал ее в IS2016):

#include "ifx.h"

//Function to stop the service
export prototype stopService(HWND);
function stopService(hMSI)
begin
    ServiceStopService ( "my service name" );
end;

//Function to start the service
export prototype startService(HWND);
function startService(hMSI)
begin
    ServiceStartService ( "my service name" ,"");
end;

Чтобы запустить настраиваемое действие только при незначительном обновлении, установите его условие:

REINSTALLMODE=vomus
Другие вопросы по тегам