2010-12-23 33 views
6

我有一個帶有windows服務的exe文件。要安裝它,我用命令:安裝帶自定義名稱的windows服務

installutil myService.exe/ShowCallStack

然後,我可以看到「服務1」,在服務窗口中列出。

我的問題是如果可以安裝2個相同服務(使用相同的exe)的實例,但具有不同的名稱。我想在不改變源代碼的情況下做到這一點。

感謝

回答

0

我在過去使用過類似下面的腳本。編輯服務名稱,將其保存爲VBS並運行它。

Const ExistingServiceName = "Service1" 
strComputer = "." 

Set objWMIService = GetObject("winmgmts:" & "{impersonationLevel=impersonate}!\\" & strComputer & "\root\cimv2") 
set objExistingService = objWMIService.Get("Win32_Service.Name='" & ExistingServiceName & "'") 

Set objService = objWMIService.Get("Win32_BaseService") 

Const NewServiceName = "Service2" 

errReturn = objService.Create (NewServiceName, NewServiceName, objExistingService.PathName, OWN_PROCESS ,NOTIFY_USER ,"Manual" , NOT_INTERACTIVE ,".\LocalSystem" ,"") 
2

請問您的服務有ProjectInstaller類?如果您將ProjectInstaller添加到您的服務中,則可以編輯ProjectInstaller的ServiceInstallerDisplayName屬性。這會將名稱從「Service1」更改爲您希望的名稱。 ProjectInstallers上的演練可以在MSDN here上找到。

0

可以服務在安裝過程中使用InstallUtil.exe.config,所以我的骯髒的黑客一直在尋找這樣的:

在ProjectInstaller.designer.cs

 this.Service1.Description = ConfigurationManager.AppSettings["ServiceDescription"] != null ? ConfigurationManager.AppSettings["ServiceDescription"] : "bla, bla, bla"; 
     this.Service1.DisplayName = ConfigurationManager.AppSettings["DisplayName"] != null ? ConfigurationManager.AppSettings["DisplayName"] : "Service One"; 
     this.Service1.ServiceName = ConfigurationManager.AppSettings["ServiceName"] != null ? ConfigurationManager.AppSettings["ServiceName"] : "Service1"; 
在InstallUtil.exe

的.config:

<configuration><appSettings><add key="ServiceName" value="Service1" /><add key="DisplayName" value="Service One" /><add key="ServiceDescription" value="bla, bla, bla" /></appSettings></configuration> 

不能得到如何張貼在這裏

XML

歡呼聲