Windows服务安装程序 - 服务名称包含无效字符,为空或太长

时间:2016-01-06 11:59:48

标签: c# visual-studio-2013 windows-services windows-installer

我一直关注this MSDN article关于编写Windows服务和随附的安装程序的问题。当我尝试添加安装程序项目时,右键单击“设计视图”并选择“添加安装程序”。我收到以下消息:

Service name contains invalid characters, is empty, or is too long

我的服务名称设置为" UploadManagerService"。这并不包含我所知道的任何无效字符,并且低于指定的80个字符限制。

我已经在这里阅读了几篇关于这个问题的文章。 This answer表明这是因为服务名称未在Visual Studio中设置,尽管这是在我的情况下设置的。我也试过setting the service name in the app.config看看是否有任何区别。还有其他一些我可能会遗漏或解决这个问题吗?

3 个答案:

答案 0 :(得分:1)

我遇到了这个确切的错误,应该一切都很好。您快速阅读错误消息,将其归咎于它,然后开始检查项目的名称,类的名称,然后...等待片刻:

enter image description here

MSDN tutorial将此步骤命名为:

  

在“设计”选项卡中,从快捷菜单中选择“属性”。在“属性”窗口中,将ServiceName值更改为MyNewService。 https://docs.microsoft.com/en-us/dotnet/framework/windows-services/media/windows-service-properties.png

构建服务时,我只是没有遵循教程,所以请记住人们:阅读错误消息并检查它抱怨的每个点!

答案 1 :(得分:0)

我无法理解该名称的问题,但我能够通过几行代码手动编写安装程序来解决问题。

假设您在选择“添加安装程序”后遵循MSDN article并遇到同样的问题:

  • 在解决方案资源管理器中选择“ProjectInstaller.cs”,然后按F7 /右键单击并选择“查看代码”。
  • 如果该类没有构造函数,请添加一个或编辑现有的构造函数 构造

添加以下代码:

var process = new ServiceProcessInstaller {Account = ServiceAccount.LocalSystem};
var serviceAdmin = new ServiceInstaller
{
    StartType = ServiceStartMode.Manual,
    ServiceName = "MyServiceName",
    DisplayName = "My Service Display Name"
};

Installers.Add(process);
Installers.Add(serviceAdmin);

InitializeComponent();

在此之后,我继续使用MSDN文章中的说明,并能够使用InstallUtil.exe安装该服务。

我仍然没有明白为什么这不起作用,但希望这将有助于其他人解决问题。

答案 2 :(得分:0)

我会考虑看这个:

Create and Package a Windows Service using IsWiX

您可以通过取消使用InstallUtil和使用本机MSI功能来真正简化问题。事实上,您会注意到视频只用了2分钟,一半时间用于创建实际服务。