我在VS.net 2008和VB.net中开发了一个简单的Windows服务。当我从命令提示符使用Installutil.exe安装服务时,它就像魅力一样。
当我尝试添加一个安装项目并设置输出并构建并安装它虽然它已成功安装,但它没有显示在服务中。
事件日志显示已成功安装。我刚刚检查了注册表,它确实将程序集放在HKEY_CURRENT_USER \ Software \ Microsoft \ installer \ assemblies中。
但我不明白为什么它没有出现在服务列表中。我刷新并重新启动。
有什么想法吗?
由于
答案 0 :(得分:12)
找到解决方案 您必须在MSI项目中添加自定义操作。 因此,在自定义操作中,将服务的输出添加到“安装”部分。然后,这将运行您的服务所需的安装代码。即与installutil.exe的作用相同
感谢所有帮助
答案 1 :(得分:6)
我遇到了同样的问题,并且在创建安装项目之前没注意到该部分。 http://msdn.microsoft.com/en-us/library/zt39148a(v=VS.100).aspx
为您的服务创建安装程序
在Solution Explorer中,右键单击Service1.vb或Service1.cs,然后选择View Designer。
单击设计器的背景以选择服务本身,而不是其任何内容。
在设计器处于焦点的情况下,右键单击,然后单击“添加安装程序”。
默认情况下,包含两个安装程序的组件类将添加到项目中。该组件名为ProjectInstaller,它包含的安装程序是服务的安装程序和服务相关进程的安装程序。
在ProjectInstaller的“设计”视图中,单击“ServiceInstaller1”或“serviceInstaller1”。
在“属性”窗口中,确保将ServiceName属性设置为MyNewService。
将StartType属性设置为Automatic。
在设计器中,单击ServiceProcessInstaller1(对于Visual Basic项目)或serviceProcessInstaller1(对于Visual C#项目)。将Account属性设置为LocalSystem。这将导致服务安装并在本地服务帐户上运行。
答案 2 :(得分:1)
一些想法:
您是否在尝试运行它的同一Windows帐户下安装?您是否将Setup Project的“InstallAllUsers”属性设置为True?
您确定在Setup Project中正确设置了ProductName和Title属性吗?也许服务以不同的名称显示在列表中,即“SetupProject1”或其他东西。
类似地,在服务的ProjectInstaller类中,在设计视图中,查看ServiceInstaller的属性,并确保将ServiceName和DisplayName属性设置为您想要的属性。