【问题标题】:MSI serviceInstall fails with service failed to start on some machines, but not othersMSI serviceInstall 失败,服务无法在某些机器上启动,但在其他机器上没有
【发布时间】:2011-02-23 00:07:44
【问题描述】:

所以我有一个部署服务的 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,服务无法启动。

现在,我在两台机器上使用完全相同的服务帐户和密码(该帐户在两台机器上都具有管理员权限)。事实上,我在两台机器上都使用了所有相同的参数,但在一台机器上它通过了,而在另一台机器上却失败了。

我没有从我的服务中看到任何事件记录,所以它似乎没有进入我的代码。

什么可能导致这种差异?

【问题讨论】:

  • 您可以设置 Wait='no' 以允许安装在尝试启动服务之前完成。这样你就可以尝试在本地启动它。

标签: windows-services wix windows-installer


【解决方案1】:

为自定义用户帐户安装服务时,您需要确保该帐户具有启动服务的权限(默认情况下没有这些权限)。一种解决方案是使用 ntrights.exe 作为自定义操作来设置这些权限: http://support.microsoft.com/kb/315276

例如,你可以使用这个命令行:

ntrights.exe -u [SERVICEACCOUNT] +r SeServiceLogonRight

您也可以尝试使用通过自定义代码设置权限的 DLL 自定义操作。此自定义操作应在安装服务之前运行。

【讨论】:

【解决方案2】:

就我而言,我还必须为用户添加用户权限。我通过自定义操作和this code 做到了。它无需在 Win8 和 Server 2008 R2 上添加用户权限即可工作。它不适用于 Win 7 或 Win XP。希望对您有所帮助。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2022-08-20
    • 1970-01-01
    • 1970-01-01
    • 2017-08-01
    • 1970-01-01
    • 2016-03-17
    • 2014-06-26
    • 2017-05-24
    相关资源
    最近更新 更多