MSI serviceInstall завершается неудачно, служба не запускается на некоторых компьютерах, но не на других - PullRequest
2 голосов
/ 23 февраля 2011

Итак, у меня есть MSI, который развертывает службу.

        <ServiceInstall Id='ServiceInstall' ErrorControl='ignore' Type='ownProcess' DisplayName='MetricsReportingService' Description='It does metrics reporting' Name='MetricsReportingService' Start='auto' Account='[SERVICEACCOUNT]' Password='[SERVICEACCOUNTPASSWORD]' /> 
        <ServiceControl Id='MetricsReportingService' Remove='uninstall' Name='MetricsReportingService' Start='install' Stop='both' Wait='yes' />

Когда я развертываю эту службу на своих собственных компьютерах, развертывание работает отлично, но когда я развертываю на компьютере другого человека, я получаю ошибку 1920, служба не запускается.

Теперь яЯ использую одинаковую учетную запись службы и пароль на обеих машинах (учетная запись имеет права администратора на обеих машинах).На самом деле, я использую все одинаковые параметры на обеих машинах, но на одном он проходит, а на другом я получаю этот сбой.

Я не вижу никаких журналов событий из моего сервиса, поэтому он неПохоже, это не в моем коде.

Что может быть причиной этого несоответствия?

Ответы [ 2 ]

1 голос
/ 23 февраля 2011

При установке службы для пользовательской учетной записи пользователя необходимо убедиться, что у учетной записи есть привилегии для запуска служб (по умолчанию они не имеют их). Решением является установка этих привилегий с помощью ntrights.exe в качестве настраиваемого действия: http://support.microsoft.com/kb/315276

Например, вы можете использовать эту командную строку:

ntrights.exe -u [SERVICEACCOUNT] +r SeServiceLogonRight

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

0 голосов
/ 22 ноября 2013

В моем случае мне также пришлось добавить права пользователя для пользователя. Я сделал это с пользовательским действием и этот код . Это работало без добавления прав пользователя на Win8 и Server 2008 R2. Это не сработало на Win 7 или Win XP. Надеюсь, это поможет.

...