我试图使用安装Windows服务,并且想避免使用InstallUtil.exe。 安装程序似乎正常(可执行文件和DLL是正确的目录)工作,但服务没有在计算机管理中出现。
这是我到目前为止已经完成:
服务类名是默认 - 服务1。
在项目安装,服务安装的服务名称相匹配的类名 - 服务1。
下的自定义动作,加入服务的主输出到安装,提交,回滚和卸载。
我使用http://support.microsoft.com/kb/816169作为参考。
有任何想法吗?
我试图使用安装Windows服务,并且想避免使用InstallUtil.exe。 安装程序似乎正常(可执行文件和DLL是正确的目录)工作,但服务没有在计算机管理中出现。
这是我到目前为止已经完成:
服务类名是默认 - 服务1。
在项目安装,服务安装的服务名称相匹配的类名 - 服务1。
下的自定义动作,加入服务的主输出到安装,提交,回滚和卸载。
我使用http://support.microsoft.com/kb/816169作为参考。
有任何想法吗?
请问您的服务项目有一个安装程序类? 你应该有一个看起来是这样的:
[RunInstaller(true)]
public partial class Service1Installer : Installer
{
public Service1Installer()
{
InitializeComponent();
ServiceProcessInstaller process = new ServiceProcessInstaller();
process.Account = ServiceAccount.LocalSystem;
ServiceInstaller serviceAdmin = new ServiceInstaller();
serviceAdmin.StartType = ServiceStartMode.Manual;
serviceAdmin.ServiceName = "Service1";
serviceAdmin.DisplayName = "Service1";
serviceAdmin.Description = "Service1";
Installers.Add(serviceAdmin);
}
}
请确保你已经创建了一个服务项目的ServiceInstaller和ServiceProcessInstaller类。 (检查此链接获取更多信息)。
关闭计算机管理和服务窗口,再次运行安装程序,并重新打开服务窗口。
如果还是不行,请重新启动计算机。 你可能有锁定了一些文件。
不用说,你可能需要对计算机的管理权限使其正常工作。
我想我已经想通了。 这可能是与设计代码中的错误,也许我错过了一步。
我觉得在设计器代码,在InitializeComponent()方法,它应该补充:
this.Installers.AddRange(new System.Configuration.Install.Installer[] {this.serviceProcessInstaller1, this.serviceInstaller1});
这是不存在的,所以我说这在ProjectInstaller构造函数:
Installers.Add(serviceInstaller1);
Installers.Add(serviceProcessInstaller1);
现在在安装时,它的上市在计算机管理的服务。