2012-01-30 115 views

回答

9

Installutil是必要的,但爲了使事情更容易,您可以創建一個安裝項目,以便您只需運行一個.msi來安裝該服務。 (這使用installutil引擎蓋下,但它極大地簡化了安裝。)

一個初排是在這裏:http://support.microsoft.com/kb/816169

而另一個是在這裏:http://msdn.microsoft.com/en-us/library/zt39148a(VS.80).aspx

兩者之間的主要區別在於代碼量在樣品中。他們都走過了同樣的過程。

鏈接的文章很舊,但仍適用於VS2010。上週我用第二篇文章介紹了VS2010服務的流程。

+0

感謝您的演練。我還用第二篇文章取得了巨大成功。然而,在我的服務中,我有一個名爲filepath的變量,它決定了我的服務創建的文件的輸出位置。無論如何,我可以讓用戶能夠輸入他們想要的位置嗎? – Simon 2012-01-31 21:10:17

+0

或者我應該通過.bat fle找sintall? – Simon 2012-01-31 21:11:50

+1

如果這些值位於.config文件中,您可以這樣做。這裏有一個教程,演示如何修改安裝項目安裝場景中的app.config值。我沒有使用它,但它看起來很刺激。 http://raquila.com/software/configure-app-config-application-settings-during-msi-install/ – David 2012-01-31 21:24:15

4

爲什麼你想避免installutils?

你可以嘗試使用sc命令,如sc create ...

編輯:下面是一個MSDN頁面吧:http://support.microsoft.com/?kbid=251192

DESCRIPTION: 
     Creates a service entry in the registry and Service Database. 
USAGE: 
     sc <server> create [service name] [binPath= ] <option1> <option2>... 

OPTIONS: 
NOTE: The option name includes the equal sign. 
     A space is required between the equal sign and the value. 
type= <own|share|interact|kernel|filesys|rec> 
     (default = own) 
start= <boot|system|auto|demand|disabled|delayed-auto> 
     (default = demand) 
error= <normal|severe|critical|ignore> 
     (default = normal) 
binPath= <BinaryPathName> 
group= <LoadOrderGroup> 
tag= <yes|no> 
depend= <Dependencies(separated by/(forward slash))> 
obj= <AccountName|ObjectName> 
     (default = LocalSystem) 
DisplayName= <display name> 
password= <password> 
+0

這是一個很好的。我忘記了這一點。在我發現如何起訴MSI文件之前,我在第一次服務中使用了該服務。這使您可以執行InstallUtil無法執行的操作,如設置要在其下運行的服務的默認用戶名和密碼。 +1。 – David 2012-01-30 20:18:56

+0

要特別注意[binPath =]在=和路徑起點之間必須有空格。這讓我無數次。 – AndyM 2016-01-23 08:35:43

2

您可以隨時與註冊表項做到這一點。
鑰匙位於HKLM\SYSTEM\CurrentControlSet\services

您創建的密鑰名稱是您的服務處理程序中服務的嵌入名稱。下面的值是相關的:

DisplayName =這被顯示在服務管理器

ImagePath =服務可執行

Start(DWORD)=啓動類型(3 =自動啓動)

的FQ名文本

DelayedAutoStart(DWORD)=(1 =延遲)

WOW64(DWORD)=(0 = 64位應用程序,1 = 32位應用程序)

ErrorControl(DWORD)= 0

ObjectName = {用戶名}下(本地系統爲系統帳戶)

運行有很多其他的價值,但應該讓你開始。

相關問題