最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

c#開發(fā)的程序安裝時動態(tài)指定windows服務(wù)名稱

 更新時間:2012年06月09日 00:19:19   作者:  
前段時間由于項目的需求,要在Windows里把同樣的組件制作成多個不同名稱的服務(wù),這些服務(wù)完成類似的功能,僅需要修改業(yè)務(wù)配置文件
這下可把我難住了,難道要 在開發(fā)的代碼中一個一個地設(shè)置想要的名稱,然后重新編譯,再注冊成服務(wù)?
但是如果將來又要換個名稱呢?再重新設(shè)置、 編譯、注冊一遍?這樣操作太麻煩了!
于是我就想能不能通過在安裝的時候進行配置,比如加一個xml文件記錄要安裝的服務(wù)的服務(wù)名等信息,每次安裝前修改該xml文件就可以了。
操作:
1、首先添加一個配置文件到服務(wù)主程序的根目錄,取名“ServiceSetting.xml”:
復(fù)制代碼 代碼如下:

<?xml version="1.0" encoding="utf-8" ?>
<Settings>
<ServiceName>testme</ServiceName>
<DisplayName>testmedisplay</DisplayName>
<Description>這里僅僅是個測試而已</Description>
</Settings>

2、然后添加一個類文件到服務(wù)主程序的根目錄,取名"SettingHelper.cs":
復(fù)制代碼 代碼如下:

SettingHelper
#region 文件描述
//-------------------------------------------------------------------------------------------------
// 描述:服務(wù)安裝配置幫助類
// 作者:鮑昊晟
// 時間:2012-05-10
//-------------------------------------------------------------------------------------------------
#endregion
using System;
using System.IO;
using System.Xml;
/// <summary>
/// 服務(wù)安裝配置幫助類
/// </summary>
internal class SettingHelper : IDisposable
{
#region 私有成員
private string _ServiceName;
private string _DisplayName;
private string _Description;
#endregion
#region 構(gòu)造函數(shù)
/// <summary>
/// 初始化服務(wù)配置幫助類
/// </summary>
public SettingHelper()
{
InitSettings();
}
#endregion
#region 屬性
/// <summary>
/// 系統(tǒng)用于標(biāo)志此服務(wù)的名稱
/// </summary>
public string ServiceName
{
get { return _ServiceName; }
}
/// <summary>
/// 向用戶標(biāo)志服務(wù)的友好名稱
/// </summary>
public string DisplayName
{
get { return _DisplayName; }
}
/// <summary>
/// 服務(wù)的說明
/// </summary>
public string Description
{
get { return _Description; }
}
#endregion
#region 私有方法
#region 初始化服務(wù)配置信息
/// <summary>
/// 初始化服務(wù)配置信息
/// </summary>
private void InitSettings()
{
string root = System.Reflection.Assembly.GetExecutingAssembly().Location;
string xmlfile = root.Remove(root.LastIndexOf('\\') + 1) + "ServiceSetting.xml";
if (File.Exists(xmlfile))
{
XmlDocument doc = new XmlDocument();
doc.Load(xmlfile);
XmlNode xn = doc.SelectSingleNode("Settings/ServiceName");
_ServiceName = xn.InnerText;
xn = doc.SelectSingleNode("Settings/DisplayName");
_DisplayName = xn.InnerText;
xn = doc.SelectSingleNode("Settings/Description");
_Description = xn.InnerText;
doc = null;
}
else
{
throw new FileNotFoundException("未能找到服務(wù)名稱配置文件 ServiceSetting.xml!");
}
}
#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
}

3、修改ProjectInstaller.cs文件,在修改構(gòu)造函數(shù)public ProjectInstaller()如下:
復(fù)制代碼 代碼如下:

ProjectInstaller
using System.ComponentModel;
using System.Configuration.Install;
namespace WSInstallTest
{
[RunInstaller(true)]
public partial class ProjectInstaller : Installer
{
public ProjectInstaller()
{
InitializeComponent();
using (SettingHelper setting = new SettingHelper())
{
serviceInstaller1.ServiceName = setting.ServiceName;
serviceInstaller1.DisplayName = setting.DisplayName;
serviceInstaller1.Description = setting.Description;
}
}
//end of class
}
}

4、執(zhí)行安裝命令:
在開始菜單中找到“Microsoft Visual Studio 2008”-->“Visual Studio Tools”-->“Visual Studio 2008 命令提示”,右鍵“以管理員身份運行”。
在命令行中輸入以下命令:
復(fù)制代碼 代碼如下:

Setting environment for using Microsoft Visual Studio 2008 x86 tools.
C:\Windows\system32>installutil /logfile d:\wsinstalltest.exe

5、當(dāng)出現(xiàn)以下文字的時候就表明安裝成功了
復(fù)制代碼 代碼如下:

安裝成功提示信息
Microsoft (R) .NET Framework 安裝實用工具版本 2.0.50727.5420
版權(quán)所有(C) Microsoft Corporation。保留所有權(quán)利。
正在運行事務(wù)處理安裝。
正在開始安裝的“安裝”階段。
查看日志文件的內(nèi)容以獲得 d:\wsinstalltest.exe 程序集的進度。
該文件位于 。
正在安裝程序集“d:\wsinstalltest.exe”。
受影響的參數(shù)是:
logtoconsole =
assemblypath = d:\wsinstalltest.exe
logfile =
正在安裝服務(wù) testme...
已成功安裝服務(wù) testme。
正在日志 Application 中創(chuàng)建 EventLog 源 testme...
“安裝”階段已成功完成,正在開始“提交”階段。
查看日志文件的內(nèi)容以獲得 d:\wsinstalltest.exe 程序集的進度。
該文件位于 。
正在提交程序集“d:\wsinstalltest.exe”。
受影響的參數(shù)是:
logtoconsole =
assemblypath = d:\wsinstalltest.exe
logfile =
“提交”階段已成功完成。
已完成事務(wù)處理安裝。
C:\Windows\system32>

可以進入“服務(wù)”程序中查看剛才安裝的服務(wù)已經(jīng)安裝好了。
6、備注:
運行“sc start testme”啟動服務(wù);
運行“sc stop testme”停止服務(wù);
運行“sc delete testme”刪除服務(wù)。

相關(guān)文章

  • C#開啟線程的四種示例

    C#開啟線程的四種示例

    這篇文章主要介紹了C#開啟線程的四種方法,幫助大家更好的理解和使用c#,感興趣的朋友可以了解下
    2020-10-10
  • C#使用ScrapySharp快速從網(wǎng)頁采集數(shù)據(jù)

    C#使用ScrapySharp快速從網(wǎng)頁采集數(shù)據(jù)

    這篇文章介紹了使用ScrapySharp快速從網(wǎng)頁采集數(shù)據(jù)的方法,文中通過示例代碼介紹的非常詳細。對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2022-06-06
  • C#的泛型方法解析

    C#的泛型方法解析

    本文講解了C#2.0引入的泛型知識,主要包含泛型類、泛型接口、泛型委托,并且重點講解了泛型方法,已經(jīng)泛型的約束分類。最后給了一些利用泛型方法操作xml的方法。希望對大家有所幫助
    2016-12-12
  • C# linq查詢之動態(tài)OrderBy用法實例

    C# linq查詢之動態(tài)OrderBy用法實例

    這篇文章主要介紹了C# linq查詢之動態(tài)OrderBy用法,實例分析了C#采用linq方式查詢時動態(tài)排序的相關(guān)技巧,需要的朋友可以參考下
    2015-06-06
  • WPF實現(xiàn)繪制餅狀統(tǒng)計圖的示例代碼

    WPF實現(xiàn)繪制餅狀統(tǒng)計圖的示例代碼

    這篇文章主要為大家詳細介紹了如何使用WPF實現(xiàn)繪制簡單的餅狀統(tǒng)計圖,文中的示例代碼講解詳細,感興趣的小伙伴可以跟隨小編一起學(xué)習(xí)一下
    2024-10-10
  • 手動編譯C#代碼的方法

    手動編譯C#代碼的方法

    在本文里小編給大家分享的是關(guān)于手動編譯C#代碼的方法和步驟,對此有需要的朋友們可以學(xué)習(xí)下。
    2018-12-12
  • 詳解WPF的InkCanvas選擇模式

    詳解WPF的InkCanvas選擇模式

    這篇文章主要介紹了WPF InkCanvas選擇模式的相關(guān)資料,幫助大家更好的理解和學(xué)習(xí)使用c# wpf,感興趣的朋友可以了解下
    2021-04-04
  • C# 預(yù)處理器指令的用法

    C# 預(yù)處理器指令的用法

    本文主要介紹了C# 預(yù)處理器指令的用法,文中通過示例代碼介紹的非常詳細,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2023-04-04
  • c#枚舉值增加特性說明(推薦)

    c#枚舉值增加特性說明(推薦)

    這篇文章主要介紹了c#枚舉值增加特性說明(推薦),需要的朋友可以參考下
    2017-05-05
  • C#面向切面編程之AspectCore用法詳解

    C#面向切面編程之AspectCore用法詳解

    AspectCore?是Lemon名下的一個國產(chǎn)Aop框架,提供了一個全新的輕量級和模塊化的Aop解決方案,下面我們就來深入了解下AspectCore在C#中的具體使用吧
    2024-01-01

最新評論

二连浩特市| 四平市| 二手房| 贡觉县| 阜南县| 丹江口市| 宜阳县| 灵武市| 邮箱| 巴彦淖尔市| 安西县| 河津市| 东乌| 南郑县| 江油市| 永仁县| 广饶县| 三明市| 托克逊县| 永昌县| 潢川县| 赣州市| 珲春市| 区。| 松溪县| 宁陕县| 广州市| 东乌珠穆沁旗| 镇江市| 岗巴县| 扎赉特旗| 万山特区| 濉溪县| 连州市| 藁城市| 霍邱县| 泰和县| 河源市| 启东市| 闵行区| 洛宁县|