1. 程式人生 > >c# 編寫windows 服務,並制作安裝包

c# 編寫windows 服務,並制作安裝包

階段 其他 編譯 code 工程 component partial 控制臺程序 自定義

  對服務的認識有很多個階段。

  第一階段:當時還在用c++,知道在一個進程裏while(True){},然後裏面做很多很多事情,這就叫做服務了,界面可能當時還用Console控制臺程序。

  第二階段:知道了服務要在後臺執行,一般不會有界面顯示,並且開機自啟動,於是隱藏Console控制臺界面,並且通過使用SC CREATE 將exe變為服務,並且達到開機自啟動的目的。這時候還是c++ 階段。

  第三階段:因項目需求接觸c#,發現有個叫項目模板專門制作windows 服務,嘗試了下,感覺還不錯,省事了許多。通過命令行安裝服務。

  第四階段:發現了一個好東西可以制作安裝包,省去了敲命令行的痛苦,對實施人員來說肯定是個福音

一,編寫windwos 服務

  c# 編寫windows 服務還算是相當簡單的,至少比c++ 要簡單。

  1,新建項目windows 服務。填寫服務名稱TestService

技術分享

  創建成功,項目界面是這樣的

技術分享

  2,編寫服務代碼,右鍵TestService,查看代碼 OnStart,編寫啟動代碼 。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,在右邊空白處右鍵添加安裝程序 ,會出現這樣兩個東西,點擊serviceInstall1 修改服務的名字,以及啟動類型。點擊serviceProcessinstall1,改變Account 為LocalSystem.

技術分享

  4,OK 大功告成,一個簡單的服務已經完成了。接下來,我們測試該服務是否能夠正常跑。右鍵管理員打開命令提示框,數據 installutil TestService(服務名稱) 進行安裝服務,順利的話,會有下面的提示完成的字符。這時會看到F盤忽悠ggg.txt 在寫文件。

技術分享技術分享

  二、制作安裝包

  開始制作安裝包,我們不能每次把這個服務拿出去都用命令行去安裝,不太友好。右鍵解決方案,在其他類型點擊安裝部署,如果發現沒有安裝,就先去安裝這個工具,很簡單,VSI_bundle.exe 只有5M大小。

技術分享

  在應用程序文件夾上右鍵添加項目輸出。

技術分享

  右鍵工程-》視圖-》添加自定義操作-》右鍵添加自定義操作

技術分享

  這個時候,重新編譯Setup 工程就會生成setup.exe,該exe 就是我們的服務安裝包。到此,整個服務編寫打包就已經完成。

技術分享

  good luck

c# 編寫windows 服務,並制作安裝包