我需要能够在一台机器上多次安装相同的服务。我有工作的那部分!但我也需要 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
现在,如果我查看安装日志:
Affected parameters are:
logtoconsole =
logfile = C:\AuditStreams\NW\AuditStreamService.InstallLog
assemblypath = C:\AuditStreams\NW\AuditStreamService.exe
servicename = AuditStream-NW
这看起来是正确的,但是在我的服务的 OnStart 中,我有一行将 ServiceName 输出到个人日志文件。但它说 ServiceName 总是 AuditStreamService
在这种情况下,我希望能说 AuditStream-NW ......谁能看到我做错了什么?
额外:
我希望这些名称不同的原因是因为每个服务还创建一个 MemoryMappedFile,并且最初我设置了它,因此该非持久性 mmf 的名称始终"AuditStream-" + HubName
是(在配置文件中确定),但现在是一个外部程序将通过读取 mmf 来监视服务正在做什么,但除了读取服务配置文件之外,外部应用程序不知道 mmf 的名称。我的目标是使所有名称都相同,ServiceName = MMF Name = ServiceDisplayName
.