Installer.cs>>
public Installer() { InitializeComponent(); /* 服務未注冊前,System.Configuration.ConfigurationManager.AppSettings讀取無效。 //serviceInstaller1.ServiceName = "ChinaHN.XHService." + System.Configuration.ConfigurationManager.AppSettings["Service_ID"]; //serviceInstaller1.DisplayName = System.Configuration.ConfigurationManager.AppSettings["Service_DisplayName"]; //serviceInstaller1.Description = System.Configuration.ConfigurationManager.AppSettings["Service_Description"]; */ /* 指定該服務的啟動模式:自動,手動,禁用 serviceInstaller1.StartType = System.ServiceProcess.ServiceStartMode.; */ using (SettingHelper setting = new SettingHelper()) { //系統用於標志此服務名稱(唯一性) serviceInstaller1.ServiceName = setting.ServiceName; //向用戶標志服務的顯示名稱(可以重復) serviceInstaller1.DisplayName = setting.DisplayName; //服務的說明(描述) serviceInstaller1.Description = setting.Description; } }
配置類:SettingHelper.cs
using System; using System.Collections.Generic; using System.Linq; using System.Text; using System; using System.IO; using System.Xml; //------------------------------------- // 描述:初始化服務配置幫助類 // 作者:fooo // 完成時間:2013-12-16 //------------------------------------- namespace XHService { public class SettingHelper : IDisposable { #region 私有成員 private string _ServiceName; private string _DisplayName; private string _Description; #endregion #region 構造函數 /// <summary> /// 初始化服務配置幫助類 /// </summary> public SettingHelper() { InitSettings(); } #endregion #region 屬性 /// <summary> /// 系統用於標志此服務的名稱 /// </summary> public string ServiceName { get { return _ServiceName; } } /// <summary> /// 向用戶標志服務的友好名稱 /// </summary> public string DisplayName { get { return _DisplayName; } } /// <summary> /// 服務的說明 /// </summary> public string Description { get { return _Description; } } #endregion #region 私有方法 #region 初始化服務配置信息 /// <summary> /// 初始化服務配置信息 /// </summary> private void InitSettings() { string root = System.Reflection.Assembly.GetExecutingAssembly().Location; string xmlfile = root.Remove(root.LastIndexOf('\\') + 1) + "XHService.exe.config"; if (File.Exists(xmlfile)) { //系統用於標志此服務名稱(唯一性) _ServiceName = "XHService." + Get_ConfigValue(xmlfile , "Service_ID"); //向用戶標志服務的顯示名稱(可以重復) _DisplayName = Get_ConfigValue(xmlfile, "Service_DisplayName"); //服務的說明(描述) _Description = Get_ConfigValue(xmlfile, "Service_Description"); } else { throw new FileNotFoundException("未能找到服務名稱配置文件 ChinaHN.XHService.exe.config!路徑:" + xmlfile); } } /// <summary> /// 讀取 XML中指定節點值 /// </summary> /// <param name="configpath">配置文件路徑</param> /// <param name="strKeyName">鍵值</param> /// <returns></returns> protected static string Get_ConfigValue(string configpath, string strKeyName) { using (XmlTextReader tr = new XmlTextReader(configpath)) { while (tr.Read()) { if (tr.NodeType == XmlNodeType.Element) { if (tr.Name == "add" && tr.GetAttribute("key") == strKeyName) { return tr.GetAttribute("value"); } } } } return ""; } #endregion #endregion #region IDisposable 成員 private bool disposed = false; public void Dispose() { Dispose(true); GC.SuppressFinalize(this); } protected virtual void Dispose(bool disposing) { if (!this.disposed) { if (disposing) { //managed dispose _ServiceName = null; _DisplayName = null; _Description = null; } //unmanaged dispose } disposed = true; } ~SettingHelper() { Dispose(false); } #endregion } }
