日期:2014-05-17  浏览次数:20814 次

Windows 服务按照常见问题
今天写了一个简单的WindowService 服务,在本机安装时,出现两个问题,随笔记录下来,如下:

问题一:安装时,提示没有 RunInstallerAttribute.Yes 的公共安装程序。在 F:\WindowService\WMP.FlowActionWindows\WMP.FlowActionWindows.exe 程序集中可能可以找到“Yes”属性。没有安装程序,因此移除 InstallState 文件。

问题原因:该服务缺少安装程序类。

解决方案:在你的项目中添加一个安装程序类,在*.Designer.cs中添加如下代码

 

/// <summary> /// /// </summary> private System.ServiceProcess.ServiceProcessInstaller WorkProcessInstaller; /// <summary> /// /// </summary> private System.ServiceProcess.ServiceInstaller WorkServiceInstaller; /// <summary> /// 必需的设计器变量。 /// </summary> private System.ComponentModel.IContainer components = null; /// <summary> /// 清理所有正在使用的资源。 /// </summary> /// <param name="disposing">如果应释放托管资源,为 true;否则为 false。</param> protected override void Dispose(bool disposing) { if (disposing && (components != null)) { components.Dispose(); } base.Dispose(disposing); } #region 组件设计器生成的代码 /// <summary> /// 设计器支持所需的方法 - 不要 /// 使用代码编辑器修改此方法的内容。 /// </summary> private void InitializeComponent() { this.WorkProcessInstaller = new System.ServiceProcess.ServiceProcessInstaller(); this.WorkServiceInstaller = new System.ServiceProcess.ServiceInstaller(); //// //// WorkListProcessInstaller //// this.WorkProcessInstaller.Account = System.ServiceProcess.ServiceAccount.LocalSystem; this.WorkProcessInstaller.Password = null; this.WorkProcessInstaller.Username = null; //// //// WorkListServiceInstaller //// this.WorkServiceInstaller.Description = "服务名称"; this.WorkServiceInstaller.DisplayName = "服务名称"; this.WorkServiceInstaller.ServiceName = "服务名称"; this.WorkServiceInstaller.StartType = System.ServiceProcess.ServiceStartMode.Automatic; //// //// ProjectInstaller //// this.Installers.AddRange(new System.Configuration.Install.Installer[] { this.WorkProcessInstaller, this.WorkServiceInstaller}); } #endregion

 

问题二:错误14001

问题原因:发现这个基本上应该去我们的日志管理器查看就能看出原因。我的这个问题是XML格式导致的。

解决方案:检查配置文件的XML格式是否正确。