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