原帖 用C#建立Windows服務(Windows Services)並打包!
用C#建立Windows服務(Windows Services)
Windows服務在Visual Studio 以前的版本中叫NT服務,在VS.net啟用了新的名稱。用Visual C#
建立Windows服務不是一件困難的事,本文就將指導你一步一步建立一個Windows服務並使用它。這個服務在啟動和停止時,向一個文字檔中寫入一
些文字資訊。
第一步:建立服務架構
要建立一個新的 Windows 服務,可以從Visual C# 工程中選取 Windows 服務(Windows Service)選項,給工程一個新檔案名稱,然後點擊 確定。
你可以看到,嚮導向工程檔案中增加WebService1.cs類:
其中各屬性的含意是:
ü Autolog 是否自動寫入系統的記錄檔
ü CanHandlePowerEvent 服務時候接受電源事件
ü CanPauseAndContinue 服務是否接受暫停或繼續啟動並執行請求
ü CanShutdown 服務是否在運行它的電腦關閉時收到通知,以便能夠調用 OnShutDown 過程
ü CanStop 服務是否接受停止啟動並執行請求
ü ServiceName 服務名
第二步:向服務中增加功能
在 .cs代碼檔案中我們可以看到,有兩個被忽略的函數 OnStart和OnStop。
OnStart函數在啟動服務時執行,OnStop函數在停止服務時執行。在這裡,當啟動和停止服務時,向一個文字檔中寫入一些文字資訊,代碼如下:
protected override void OnStart(string[] args)
{
FileStream fs = new FileStream(@"d:/mcWindowsService.txt" , FileMode.OpenOrCreate, FileAccess.Write);
StreamWriter m_streamWriter = new StreamWriter(fs);
m_streamWriter.BaseStream.Seek(0, SeekOrigin.End);
m_streamWriter.WriteLine("mcWindowsService: Service Started"+DateTime.Now.ToString()+"/n");
m_streamWriter.Flush();
m_streamWriter.Close();
fs.Close();
}
protected override void OnStop()
{
FileStream fs = new FileStream(@"d:/mcWindowsService.txt" , FileMode.OpenOrCreate, FileAccess.Write);
StreamWriter m_streamWriter = new StreamWriter(fs);
m_streamWriter.BaseStream.Seek(0, SeekOrigin.End);
m_streamWriter.WriteLine(" mcWindowsService: Service Stopped "+DateTime.Now.ToString()+"/n");
m_streamWriter.Flush();
m_streamWriter.Close();
fs.Close();
}
第三步: 將安裝程式添加到服務應用程式
Visual Studio.NET 隨附有安裝組件,可用來安裝與服務應用程式相關聯的資源。安裝組件在正在安裝到的系統上註冊一項單個的服務,並使服務控制管理員知道該服務的存在。
要正確安裝服務,並不需要在安裝程式中進行任何特殊編碼。但是,如果需要向安裝進程添加特殊功能,則可能偶爾需要修改安裝程式的內容。
將安裝程式添加到服務應用程式的步驟是:
1:在解決方案中,訪問要向其中添加安裝組件的服務的Design視圖。
2:在屬性視窗中,單擊添加安裝程式連結
這時項目中就添加了一個新類 ProjectInstaller 和兩個安裝組件 ServiceProcessInstaller 和 ServiceInstaller,並且服務的屬性值被複製到組件。
3:若要確定如何啟動服務,請單擊 ServiceInstaller 組件並將 StartType 屬性設定為適當的值。
ü Manual 服務安裝後,必須手動啟動。
ü Automatic 每次電腦重新啟動時,服務都會自動啟動。
ü Disabled 服務無法啟動。
4:將serviceProcessInstaller類的Account屬性改為 LocalSystem
這樣,不論是以哪個使用者登入的系統,服務總會啟動。
第四步:產生服務程式
通過從產生菜單中選擇產生來產生項目。
注意 不要通過按 F5 鍵來運行項目——不能以這種方式運行服務項目。
第五步:安裝服務
訪問項目中的已編譯可執行檔所在的目錄。
用項目的輸出作為參數,從命令列運行 InstallUtil.exe。在命令列中輸入下列代碼:
installutil yourproject.exe
卸載服務
用項目的輸出作為參數,從命令列運行 InstallUtil.exe。
installutil /u yourproject.exe
http://www.cnblogs.com/laiwen/archive/2005/08/21/219590.html
打包:
為服務建立安裝項目
在[檔案] 功能表上指向“添加項目”,然後選擇“建立項目”。
在“項目類型”窗格中選擇“安裝和部署項目”檔案夾。
在“模板”窗格中選擇“安裝項目”。將項目命名為 MyServiceSetup。
安裝項目隨即添加到解決方案。
然後,將 Windows 服務項目的輸出 MyNewService.exe 添加到安裝項目中。
向安裝項目添加 MyNewService.exe
在方案總管中,右擊“MyServiceSetup”,指向“添加”,然後選擇“項目輸出”。
出現“添加項目輸出組”對話方塊。
在“項目”框中選擇“MyNewService”。
在列表框中,選擇“主輸出”,然後單擊“確定”。
MyNewService 的主輸出的項目項被添加到安裝項目中。現在添加自訂動作以安裝 MyNewService.exe 檔案。
向安裝項目添加自訂動作
在方案總管中右擊安裝項目,指向“視圖”,然後選擇“自訂動作”。
出現自訂動作編輯器。
在“自訂動作”編輯器中右擊“自訂動作”節點,然後選擇“添加自訂動作”。
出現“選擇項目中的項”對話方塊。
在列表框中雙擊“應用程式檔案夾”將其開啟,選擇“主輸出來自 MyNewService(活動)”,然後單擊“確定”。
主輸出被添加到自訂動作的所有四個節點,即“安裝”、“提交”、“復原”和“卸載”。
在方案總管中,右擊 MyServiceSetup 項目並選擇“產生”。
安裝 Windows 服務
若要安裝 MyEventLog.exe,請右擊方案總管中的安裝項目,並選擇“安裝”。
啟動和停止服務
通過執行下列操作之一開啟服務控制管理員:
在 Windows 2000 Professional 中,在案頭上右擊“我的電腦”,然後單擊“管理”。在“電腦管理”控制台中,展開“服務和應用程式”節點。
- 或 -
在 Windows 2000 Server 中,單擊“開始”,指向“程式”,單擊“管理工具”,然後單擊“服務”。
注意 在 Windows NT 4.0 版中,可以從控制台中開啟該對話方塊。
現在應該看到 MyNewService 列在視窗的“服務”地區中。
從列表中選擇您的服務,右擊該服務,然後單擊“啟動”。
右擊該服務,然後單擊“停止”。
驗證服務的事件記錄輸出
開啟伺服器總管並訪問“事件記錄”節點。有關更多資訊,請參見在伺服器總管中處理事件記錄。
注意 伺服器總管的“伺服器”節點在 Visual Basic 和 Visual C# .NET 的標準版中不可用。有關更多資訊,請參見
Visual Basic 標準版功能或 Visual C# 標準版的功能。
找到 MyNewLog 的列表並展開它。您應該看到服務所執行操作的項。
卸載服務
在“開始”菜單上,開啟“控制台”並單擊“添加或刪除程式”,然後找到您的服務並單擊“刪除”。
還可以通過右擊 .msi 檔案的程式表徵圖並選擇“卸載”來卸載該程式。
注意 如果是在 Windows 2000 上安裝了服務,則必須重新啟動系統後才能重新安裝服務。在 Windows 2000 中,服務在系統重新啟動之前不會完全刪除。