2011-02-23 91 views
2

因此,我有一個部署服務的MSI。MSI serviceInstall失敗,服務在某些機器上啓動失敗,但不是其他機器

 <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,服務啓動失敗。

現在,我在兩臺機器上使用完全相同的服務帳戶和密碼(該帳戶在兩臺計算機上都具有管理權限)。事實上,我在兩臺機器上都使用了所有相同的參數,但在一臺機器上使用了相同的參數,另一臺機器則使用了這個參數。

我沒有看到任何從我的服務中記錄的事件,所以它似乎沒有將它傳遞給我的代碼。

什麼可能導致這種差異?

+0

您可以設置Wait ='no'以允許在嘗試啓動服務之前完成安裝。這樣你可以嘗試在本地啓動它。 – user467384 2011-02-23 16:28:46

回答

1

爲自定義用戶帳戶安裝服務時,您需要確保該帳戶具有啓動服務的權限(默認情況下它沒有這些權限)。一個解決方案是通過使用作爲Ntrights.exe的自定義操作來設置這些特權: http://support.microsoft.com/kb/315276

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

ntrights.exe -u [SERVICEACCOUNT] +r SeServiceLogonRight 

您也可以使用DLL自定義操作嘗試這通過自定義代碼設置權限。此自定義操作應該在安裝服務之前運行。

+0

我認爲這對於Server 2008 R2是等效的。 http://technet.microsoft.com/en-us/library/cc794944(WS.10).aspx – user467384 2011-02-23 16:27:39

0

在我的情況下,我也不得不向用戶添加用戶權限。我通過自定義操作和this code。它在Win8和Server 2008 R2上無需添加用戶權限即可運行。它不適用於Win 7或Win XP。希望能幫助到你。

相關問題