MSI serviceInstall失败,服务无法在某些计算机上启动,但在其他计算机上启动失败

时间:2011-02-23 00:07:44

标签: windows-services wix windows-installer

所以我有一个部署服务的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 个答案:

答案 0 :(得分:1)

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

例如,您可以使用以下命令行:

ntrights.exe -u [SERVICEACCOUNT] +r SeServiceLogonRight

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

答案 1 :(得分:0)

在我的情况下,我还必须向用户添加用户权限。我是通过自定义操作和this code完成的。它无需在Win8和Server 2008 R2上添加用户权限即可使用。它在Win 7或Win XP上不起作用。希望它有所帮助。