我在c#中创建了一个Windows服务。
与我参与过的其他一些相比,它相对简单。
我构建了一个安装项目来安装它进行一些测试。
我添加了服务项目的主要输出,并且正确添加了所有依赖项。
我去了View>自定义操作并将我的主输出添加到安装,提交,回滚和卸载。
项目已构建,我右键单击该项目并单击“安装”。
安装回来成功了,我可以在添加/删除程序下的控制面板上查看服务,但是当我进入服务管理器时......没有......
任何人都可以提供一些内容或任何其他可能导致成功安装的服务不显示在服务管理器上。
答案 0 :(得分:4)
如果不言而喻,请原谅我,但您没有提到您在自定义操作中执行的代码。您的服务程序集必须具有派生自System.Configuration.Install.Installer的类,并且该类必须具有[RunInstaller(true)]属性。在该类中,您需要创建System.ServiceProcess.ServiceInstaller和System.ServiceProcess.ServiceProcessInstaller的实例,在这些实例上设置适当的参数,并将它们添加到Installers集合中。 ServiceInstaller和ServiceProcessInstaller MSDN页面有一个非常基本的示例,但如果需要,它应该足以让您到达那里。
答案 1 :(得分:1)
确保您在“Display name
”属性中提供了一些值。
在命令提示符下使用以下命令“sc query <service_name>
”查看Windows服务是否已正确安装。如果您不确定服务名称,请在执行此命令后使用以下命令“sc query state= all >c:\ServicesList.txt
”搜索C:\驱动器中的ServicesList.txt。
如果这也不起作用,请尝试在HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services
答案 2 :(得分:1)
您说您已将主要输出添加到Install等。但您是否创建了一个Installer派生类来执行Windows服务的实际安装?我不是在谈论安装项目本身,但是在你的项目中应该有一个安装程序类,它实际上为你安装了服务。
我的博客上有一篇关于为易于安装的服务创建框架的帖子,它有关于创建isntaler类的示例。
答案 3 :(得分:0)
就我而言,问题的解决方案很简单,我忘了在课堂上添加访问修饰符'Public'。添加访问修饰符后,服务现在可以在服务列表中看到。