我需要能夠在單臺機器上多次安裝相同的服務。 那部分我有工作!但我也需要ServiceName的不同。那部分不是。ServiceName沒有正確更改
下面是我Installer.cs中的代碼:
[RunInstaller(true)]
public partial class ProjectInstaller : System.Configuration.Install.Installer
{
public ProjectInstaller()
{
InitializeComponent();
}
public override void Install(IDictionary stateSaver)
{
RetrieveServiceName();
base.Install(stateSaver);
}
public override void Uninstall(IDictionary savedState)
{
RetrieveServiceName();
base.Uninstall(savedState);
}
private void RetrieveServiceName()
{
var serviceName = Context.Parameters["servicename"];
if(!string.IsNullOrEmpty(serviceName))
{
auditStreamServiceInstaller.ServiceName = serviceName;
auditStreamServiceInstaller.DisplayName = serviceName;
}
}
}
和我用下面的CMD安裝服務
C:\Windows\Microsoft.Net\Framework\v4.0.30319> installutil /servicename="AuditStream-NW" d:AuditStreamService.exe
現在,如果我看installlog:
Affected parameters are:
logtoconsole =
logfile = C:\AuditStreams\NW\AuditStreamService.InstallLog
assemblypath = C:\AuditStreams\NW\AuditStreamService.exe
servicename = AuditStream-NW
這看起來是正確的,但在我的服務的OnStart中,我有一行將ServiceName輸出到個人日誌文件。但它說,服務名稱是始終AuditStreamService
我希望有說AuditStream-NW在這種情況下...任何人都可以看到我有錯嗎?
EXTRA: 我想這些名稱不同的原因是因爲每個服務還創建了一個MemoryMappedFile,和我原本它設置,使非持續性MMF的名字總是"AuditStream-" + HubName
(這是配置中的確定文件),但現在外部程序將通過讀取mmf來監視服務正在執行的操作,但除了讀取服務配置文件外,外部應用程序不知道mmf的名稱。我的目標是使所有的名字相同,ServiceName = MMF Name = ServiceDisplayName
。
它實際上安裝爲(檢查services.msc)是什麼?我敢打賭它正確安裝,但你的日誌行從錯誤的地方獲取ServiceName。 –
內SERVICES.MSC好是列爲AuditStream-NW像我想要的,但是我覺得這個名字的顯示名稱... – Zholen