c# 编写windows 服务,并制作安装包
對(duì)服務(wù)的認(rèn)識(shí)有很多個(gè)階段。
第一階段:當(dāng)時(shí)還在用c++,知道在一個(gè)進(jìn)程里while(True){},然后里面做很多很多事情,這就叫做服務(wù)了,界面可能當(dāng)時(shí)還用Console控制臺(tái)程序。
第二階段:知道了服務(wù)要在后臺(tái)執(zhí)行,一般不會(huì)有界面顯示,并且開機(jī)自啟動(dòng),于是隱藏Console控制臺(tái)界面,并且通過使用SC CREATE 將exe變?yōu)榉?wù),并且達(dá)到開機(jī)自啟動(dòng)的目的。這時(shí)候還是c++ 階段。
第三階段:因項(xiàng)目需求接觸c#,發(fā)現(xiàn)有個(gè)叫項(xiàng)目模板專門制作windows 服務(wù),嘗試了下,感覺還不錯(cuò),省事了許多。通過命令行安裝服務(wù)。
第四階段:發(fā)現(xiàn)了一個(gè)好東西可以制作安裝包,省去了敲命令行的痛苦,對(duì)實(shí)施人員來說肯定是個(gè)福音
一,編寫windwos 服務(wù)
c# 編寫windows 服務(wù)還算是相當(dāng)簡(jiǎn)單的,至少比c++ 要簡(jiǎn)單。
1,新建項(xiàng)目windows 服務(wù)。填寫服務(wù)名稱TestService
創(chuàng)建成功,項(xiàng)目界面是這樣的
2,編寫服務(wù)代碼,右鍵TestService,查看代碼OnStart,編寫啟動(dòng)代碼 。OnStop編寫停止代碼
namespace TestService
{
public partial class TestService : ServiceBase
{
FileStream fs = null;
StreamWriter sw = null;
Thread td = null;
public TestService()
{
InitializeComponent();
}
protected override void OnStart(string[] args)
{
td = new Thread(WorkThread);
td.Start();
}
protected void WorkThread()
{
fs = new FileStream(@"f://ggg.txt", FileMode.OpenOrCreate, FileAccess.Write);
sw = new StreamWriter(fs);
while (true)
{
sw.WriteLine(DateTime.Now.ToString());
sw.Flush();
Thread.Sleep(2000);
}
}
protected override void OnStop()
{
if(td != null)
{
td.Abort();
}
sw.Close();
fs.Close();
}
}
}
3,雙擊TestService.cs,在右邊空白處右鍵添加安裝程序 ,會(huì)出現(xiàn)這樣兩個(gè)東西,點(diǎn)擊serviceInstall1 修改服務(wù)的名字,以及啟動(dòng)類型。點(diǎn)擊serviceProcessinstall1,改變Account 為LocalSystem.
4,OK 大功告成,一個(gè)簡(jiǎn)單的服務(wù)已經(jīng)完成了。接下來,我們測(cè)試該服務(wù)是否能夠正常跑。右鍵管理員打開命令提示框,數(shù)據(jù) installutil TestService(服務(wù)名稱) 進(jìn)行安裝服務(wù),順利的話,會(huì)有下面的提示完成的字符。這時(shí)會(huì)看到F盤忽悠ggg.txt 在寫文件。
二、制作安裝包,
開始制作安裝包,我們不能每次把這個(gè)服務(wù)拿出去都用命令行去安裝,不太友好。右鍵解決方案,在其他類型點(diǎn)擊安裝部署,如果發(fā)現(xiàn)沒有安裝,就先去安裝這個(gè)工具,很簡(jiǎn)單,VSI_bundle.exe 只有5M大小。
在應(yīng)用程序文件夾上右鍵添加項(xiàng)目輸出。
右鍵工程-》視圖-》添加自定義操作-》右鍵添加自定義操作
這個(gè)時(shí)候,重新編譯Setup 工程就會(huì)生成setup.exe,該exe 就是我們的服務(wù)安裝包。到此,整個(gè)服務(wù)編寫打包就已經(jīng)完成。
good luck
總結(jié)
以上是生活随笔為你收集整理的c# 编写windows 服务,并制作安装包的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 备份到云端,准备好了吗?
- 下一篇: 沈南鹏:从五大物理定律看新商业法则