2011-09-19 26 views
1

我們正試圖自動化部署我們創建的一些服務。我們不想將用戶名和密碼硬編碼到應用程序安裝程序中。不硬編碼用戶名和登錄的問題是它會使發行版的自動化出現問題。在自動執行服務部署時,設置用戶服務運行的最佳做法是什麼?

你會如何在MSI封裝Windows服務這樣的:

  1. 該服務被安裝到在一個特定的用戶名來運行,這取決於環境的實例。即在生產環境中,它在DOMAIN_NAME \ ProductionServiceUser下運行,但如果我們將相同的服務部署到分段中,則該服務在DOMAIN_NAME \ StagingServiceUser下運行。

  2. 如果您通過「添加刪除程序」卸載該服務,該服務將被刪除。

回答

0

要自動安裝和卸載,您可以使用Windows安裝程序支持服務:

Visual Studio安裝項目不支持該服務的表。因此,如果您正在使用它,則需要編寫安裝和卸載管理服務的自定義操作。其他設置創作工具提供對服務的直接支持。

要動態設置服務帳戶,您可以使用自定義installer property,例如SERVICE_ACCOUNT。在安裝期間,您可以將此屬性設置爲您想要的帳戶。這可以通過多種方式完成:自定義操作,對話框控件,命令行等。

只有在爲其設置了log on as a service policy(即使它是管理員帳戶)時,服務才能在自定義用戶帳戶下運行。此政策可以在安裝過程中使用ntrights.exe作爲自定義操作進行設置。

+0

我應該更清楚。這是一個非託管C++服務。我想我們可以有一個C#庫項目來執行服務安裝,但是自定義操作有一些問題,因爲MS由於某種原因認爲自定義操作不能像正在執行的用戶那樣運行是一個好主意安裝。 – bpeikes

+0

我不知道我明白這是如何違揹我的建議。如果您想使用Visual Studio,唯一的解決方案是自定義操作。如果您不想使用自定義操作,則無法使用Visual Studio(您需要一個支持服務的不同安裝創作工具)。 –

+0

自定義操作沒問題,它們是我們正在使用的,但是我更多地詢問如果您希望服務在特定用戶帳戶下運行,您將如何自動部署msi。 – bpeikes

相關問題