建立、安裝、除錯windows service(附詳細步驟)
最近專案中需要做一個定時執行某個服務的功能,剛開始想用Oracle JOB做,但是後來發現程式的主要邏輯不是寫在儲存過程中的,所以決定用Windows Service來做。倒騰倒騰了半天,也算是圓滿成功。
先介紹一下我的開發平臺,VS 2005(有點老哦,專案是升級原來的系統,所以平臺也是2005)、windows 7、Oracle等等。好了話不多說,進入正題……
*Step1 ——建立windows service*
1.在解決方案上新增新建項,選擇Windows 服務,改好名字後點擊確定(本文用到的名字為WindowsService1.cs)
新增完成後,會發現VS已經建立了windows service必要的引用關係和檔案(建議修改Service1.cs名稱)。
2.接下來,我們可以看到Service1.cs中出現OnStart()和OnStop()兩個事件,當然,ServiceBase還提供了OnPause/OnContinue的方法類,可以按照字面意思去理解,基於本次需求,只用到了OnStart()和OnStop()兩個事件,在這兩個事件裡面寫了具體的方法(根據需要編寫)
新增完OnStart()和OnStop()中的方法後,還可以看看Program.cs中的程式碼,核實ServicesToRun中對應的服務名是否和服務名稱一致。最後生成一下,就可以看到Service1.exe檔案了……接下來我們要進行下一步,建立安裝程式。
(PS:這一切都完成後,服務還是沒有辦法雙擊就執行,它需要一個安裝類(Installer)來輔助)
*Step2——建立service安裝類*
1.在Windows Service解決方案下新增安裝程式類(自己命名)
2.新增完成後在Installer的設計器中先宣告兩個引用serviceProcessInstaller1和serviceInstaller1,他們作用於Service和InstallUtil.exe的執行。
private System.ServiceProcess.ServiceProcessInstaller serviceProcessInstaller1;
private System.ServiceProcess.ServiceInstaller serviceInstaller1;3.我們需要在這個安裝類中建立一個service安裝程序和service安裝類:
private void InitializeComponent()
{ this.serviceProcessInstaller1 = new System.ServiceProcess.ServiceProcessInstaller();
this.serviceInstaller1 = new System.ServiceProcess.ServiceInstaller();}
4.然後再設定安裝類對應服務的名稱以及相關配置
this.serviceInstaller1.ServiceName = "YourServiceName";//填寫你的服務的名稱this.serviceInstaller1.Description = "Your Description";//填寫你的服務的描述
this.serviceInstaller1.StartType =
System.ServiceProcess.ServiceStartMode.Automatic;//Automatic代表服務的啟動方式為自動啟動
this.serviceProcessInstaller1.Account =
this.serviceProcessInstaller1.Password = null;System.ServiceProcess.ServiceAccount.LocalSystem;//LocalSystem表示用本地系統賬戶啟動(不需要使用者名稱和密碼)
this.serviceProcessInstaller1.Username = null;
this.Installers.AddRange(new System.Configuration.Install.Installer[]
5.編寫完成之後生成以下,安裝類也就這樣完成了,下一步我們進入widnows service的安裝環節。{this.serviceInstaller1,this.serviceProcessInstaller1});
*Step3 ——Widnows Service的安裝*
Widnows Service的安裝可以用一下兩種形式實現:
1.CMD的DOS命令列
輸入C:/Windows/Microsoft.NET/Framework/v2.0.50727/InstallUtil.exe 你的service.exe存放路徑\你的service名稱.exe來執行安裝服務;
輸入...installutil.exe /u ..路徑\你的service名稱.exe來解除安裝service安裝
2.利用txt文件編寫安裝和解除安裝的bat執行檔案(檔案內容如下)
安裝:
解除安裝:
3.安裝完成後,可以在服務中看到自己安裝的服務程序,則代表安裝成功
*Step4 ——除錯Widnows Service*
Widnows Service的除錯可是有點揪心,不過按照網友的方法,現學現賣也是除錯進去了,步驟如下:
1.首先編譯好服務,在合適的地方加上斷點
2.啟動(或者重啟)服務,用bat或者命令列都可以
3.VS2005中“除錯 –> 附加到程序”選擇對應的服務程序並新增(速度要快,接著就可以進入斷點啦)